|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using Xunit;
namespace Aspire.Templates.Tests;
public class NewUpAndBuildSupportProjectTemplates(ITestOutputHelper testOutput) : TemplateTestsBase(testOutput)
{
[Theory]
// [MemberData(nameof(TestDataForNewAndBuildTemplateTests), arguments: "aspire-apphost")]
// [MemberData(nameof(TestDataForNewAndBuildTemplateTests), arguments: "aspire-servicedefaults")]
[MemberData(nameof(TestDataForNewAndBuildTemplateTests), arguments: ["aspire-mstest", ""])]
[MemberData(nameof(TestDataForNewAndBuildTemplateTests), arguments: ["aspire-nunit", ""])]
[MemberData(nameof(TestDataForNewAndBuildTemplateTests), arguments: ["aspire-xunit", ""])]
[MemberData(nameof(TestDataForNewAndBuildTemplateTests), arguments: ["aspire-xunit", "--xunit-version v2"])]
[MemberData(nameof(TestDataForNewAndBuildTemplateTests), arguments: ["aspire-xunit", "--xunit-version v3"])]
[MemberData(nameof(TestDataForNewAndBuildTemplateTests), arguments: ["aspire-xunit", "--xunit-version v3mtp"])]
public async Task CanNewAndBuild(string templateName, string extraTestCreationArgs, TestSdk sdk, TestTargetFramework tfm, string? error)
{
var id = GetNewProjectId(prefix: $"new_build_{FixupSymbolName(templateName)}");
var topLevelDir = Path.Combine(BuildEnvironment.TestRootPath, id + "_root");
string config = "Debug";
var buildEnvToUse = sdk switch
{
TestSdk.Current => BuildEnvironment.ForCurrentSdkOnly,
TestSdk.Previous => BuildEnvironment.ForPreviousSdkOnly,
TestSdk.CurrentSdkAndPreviousRuntime => BuildEnvironment.ForCurrentSdkAndPreviousRuntime,
_ => throw new ArgumentOutOfRangeException(nameof(sdk))
};
if (Directory.Exists(topLevelDir))
{
Directory.Delete(topLevelDir, recursive: true);
}
Directory.CreateDirectory(topLevelDir);
try
{
await using var project = await AspireProject.CreateNewTemplateProjectAsync(
id: id + ".AppHost",
template: "aspire-apphost",
testOutput: _testOutput,
buildEnvironment: buildEnvToUse,
targetFramework: tfm,
addEndpointsHook: false,
overrideRootDir: topLevelDir);
project.AppHostProjectDirectory = Path.Combine(topLevelDir, id + ".AppHost");
var testProjectDir = await CreateAndAddTestTemplateProjectAsync(
id: id,
testTemplateName: templateName,
project: project,
tfm: tfm,
buildEnvironment: buildEnvToUse,
extraArgs: extraTestCreationArgs,
overrideRootDir: topLevelDir);
await project.BuildAsync(extraBuildArgs: [$"-c {config}"], workingDirectory: testProjectDir);
}
catch (ToolCommandException tce) when (error is not null)
{
Assert.NotNull(tce.Result);
Assert.Contains(error, tce.Result.Value.Output);
}
}
}
|