Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Sanderson <SteveSandersonMS@users.noreply.github.com>2022-09-21 11:29:43 +0300
committerSteve Sanderson <SteveSandersonMS@users.noreply.github.com>2022-09-21 11:29:43 +0300
commitfb998780eca25620808ddcfd894cb1cbab34754e (patch)
tree45871b57653f6449796ab731c43f827772da43b4
parent462a7e5b00bbdc8329afd9e71a986919e8bd9e64 (diff)
Experimentally revert "Make Project actions self-checking (#44032)" to see if this fixes the new template test errorsstevesa/rollback-sdk
This reverts commit 2f67164b902331462284c670bba62014be5c8f60.
-rw-r--r--src/ProjectTemplates/Shared/BlazorTemplateTest.cs6
-rw-r--r--src/ProjectTemplates/Shared/Project.cs32
-rw-r--r--src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorTemplateTest.cs9
-rw-r--r--src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorWasmTemplateTest.cs12
-rw-r--r--src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Auth.Tests/BlazorWasmTemplateAuthTest.cs9
-rw-r--r--src/ProjectTemplates/test/Templates.Mvc.Tests/MvcTemplateTest.cs36
-rw-r--r--src/ProjectTemplates/test/Templates.Mvc.Tests/RazorPagesTemplateTest.cs30
-rw-r--r--src/ProjectTemplates/test/Templates.Mvc.Tests/WebApiTemplateTest.cs21
-rw-r--r--src/ProjectTemplates/test/Templates.Tests/BaselineTest.cs3
-rw-r--r--src/ProjectTemplates/test/Templates.Tests/EmptyWebTemplateTest.cs9
-rw-r--r--src/ProjectTemplates/test/Templates.Tests/GrpcTemplateTest.cs9
-rw-r--r--src/ProjectTemplates/test/Templates.Tests/IdentityUIPackageTest.cs12
-rw-r--r--src/ProjectTemplates/test/Templates.Tests/ItemTemplateTests/BlazorServerTests.cs3
-rw-r--r--src/ProjectTemplates/test/Templates.Tests/RazorClassLibraryTemplateTest.cs18
-rw-r--r--src/ProjectTemplates/test/Templates.Tests/SpaTemplatesTest.cs9
-rw-r--r--src/ProjectTemplates/test/Templates.Tests/WorkerTemplateTest.cs9
16 files changed, 145 insertions, 82 deletions
diff --git a/src/ProjectTemplates/Shared/BlazorTemplateTest.cs b/src/ProjectTemplates/Shared/BlazorTemplateTest.cs
index 26e4ef47a6..745df0197d 100644
--- a/src/ProjectTemplates/Shared/BlazorTemplateTest.cs
+++ b/src/ProjectTemplates/Shared/BlazorTemplateTest.cs
@@ -52,7 +52,8 @@ public abstract class BlazorTemplateTest : LoggedTest
project.TargetFramework = targetFramework;
}
- await project.RunDotNetNewAsync(ProjectType, auth: auth, args: args, errorOnRestoreError: false);
+ var createResult = await project.RunDotNetNewAsync(ProjectType, auth: auth, args: args, errorOnRestoreError: false);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
if (serverProject || auth is null)
{
@@ -77,7 +78,8 @@ public abstract class BlazorTemplateTest : LoggedTest
targetProject = GetSubProject(project, "Server", $"{project.ProjectName}.Server");
}
- await targetProject.RunDotNetPublishAsync(noRestore: false);
+ var publishResult = await targetProject.RunDotNetPublishAsync(noRestore: false);
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", targetProject, publishResult));
}
return project;
diff --git a/src/ProjectTemplates/Shared/Project.cs b/src/ProjectTemplates/Shared/Project.cs
index 7fd72f88fe..0fe3631e56 100644
--- a/src/ProjectTemplates/Shared/Project.cs
+++ b/src/ProjectTemplates/Shared/Project.cs
@@ -61,7 +61,7 @@ public class Project : IDisposable
public ITestOutputHelper Output { get; set; }
public IMessageSink DiagnosticsMessageSink { get; set; }
- internal async Task RunDotNetNewAsync(
+ internal async Task<ProcessResult> RunDotNetNewAsync(
string templateName,
string auth = null,
string language = null,
@@ -126,10 +126,10 @@ public class Project : IDisposable
result.ExitCode = -1;
}
- Assert.True(0 == result.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", this, result));
+ return result;
}
- internal async Task RunDotNetPublishAsync(IDictionary<string, string> packageOptions = null, string additionalArgs = null, bool noRestore = true)
+ internal async Task<ProcessResult> RunDotNetPublishAsync(IDictionary<string, string> packageOptions = null, string additionalArgs = null, bool noRestore = true)
{
Output.WriteLine("Publishing ASP.NET Core application...");
@@ -150,11 +150,10 @@ public class Project : IDisposable
}
CaptureBinLogOnFailure(execution);
-
- Assert.True(0 == result.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", this, result));
+ return result;
}
- internal async Task RunDotNetBuildAsync(IDictionary<string, string> packageOptions = null, string additionalArgs = null, bool errorOnBuildWarning = true)
+ internal async Task<ProcessResult> RunDotNetBuildAsync(IDictionary<string, string> packageOptions = null, string additionalArgs = null, bool errorOnBuildWarning = true)
{
Output.WriteLine("Building ASP.NET Core application...");
@@ -173,8 +172,7 @@ public class Project : IDisposable
}
CaptureBinLogOnFailure(execution);
-
- Assert.True(0 == result.ExitCode, ErrorMessages.GetFailedProcessMessage("build", this, result));
+ return result;
}
internal AspNetProcess StartBuiltProjectAsync(bool hasListeningUri = true, ILogger logger = null)
@@ -208,7 +206,7 @@ public class Project : IDisposable
return new AspNetProcess(DevCert, Output, TemplatePublishDir, projectDll, environment, published: true, hasListeningUri: hasListeningUri, usePublishedAppHost: usePublishedAppHost);
}
- internal async Task RunDotNetEfCreateMigrationAsync(string migrationName)
+ internal async Task<ProcessResult> RunDotNetEfCreateMigrationAsync(string migrationName)
{
var args = $"--verbose --no-build migrations add {migrationName}";
@@ -224,11 +222,10 @@ public class Project : IDisposable
using var result = ProcessEx.Run(Output, TemplateOutputDir, command, args);
await result.Exited;
- var processResult = new ProcessResult(result);
- Assert.True(0 == processResult.ExitCode, ErrorMessages.GetFailedProcessMessage("run EF migrations", this, processResult));
+ return new ProcessResult(result);
}
- internal async Task RunDotNetEfUpdateDatabaseAsync()
+ internal async Task<ProcessResult> RunDotNetEfUpdateDatabaseAsync()
{
var args = "--verbose --no-build database update";
@@ -244,8 +241,7 @@ public class Project : IDisposable
using var result = ProcessEx.Run(Output, TemplateOutputDir, command, args);
await result.Exited;
- var processResult = new ProcessResult(result);
- Assert.True(0 == processResult.ExitCode, ErrorMessages.GetFailedProcessMessage("update database", this, processResult));
+ return new ProcessResult(result);
}
// If this fails, you should generate new migrations via migrations/updateMigrations.cmd
@@ -293,7 +289,7 @@ public class Project : IDisposable
}
}
- public async Task VerifyLaunchSettings(string[] expectedLaunchProfileNames)
+ public async Task<Project> VerifyLaunchSettings(string[] expectedLaunchProfileNames)
{
var launchSettingsFiles = Directory.EnumerateFiles(TemplateOutputDir, "launchSettings.json", SearchOption.AllDirectories);
@@ -346,6 +342,8 @@ public class Project : IDisposable
}
}
}
+
+ return this;
}
public string ReadFile(string path)
@@ -354,7 +352,7 @@ public class Project : IDisposable
return File.ReadAllText(Path.Combine(TemplateOutputDir, path));
}
- internal async Task RunDotNetNewRawAsync(string arguments)
+ internal async Task<ProcessEx> RunDotNetNewRawAsync(string arguments)
{
var result = ProcessEx.Run(
Output,
@@ -364,7 +362,7 @@ public class Project : IDisposable
$" --debug:disable-sdk-templates --debug:custom-hive \"{TemplatePackageInstaller.CustomHivePath}\"" +
$" -o {TemplateOutputDir}");
await result.Exited;
- Assert.True(result.ExitCode == 0, result.GetFormattedOutput());
+ return result;
}
public void Dispose()
diff --git a/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorTemplateTest.cs b/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorTemplateTest.cs
index d8fa6d3d8e..8ea4077007 100644
--- a/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorTemplateTest.cs
@@ -35,7 +35,8 @@ public abstract class BlazorTemplateTest : BrowserTestBase
project.TargetFramework = targetFramework;
}
- await project.RunDotNetNewAsync(ProjectType, auth: auth, args: args);
+ var createResult = await project.RunDotNetNewAsync(ProjectType, auth: auth, args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
if (!onlyCreate)
{
@@ -45,13 +46,15 @@ public abstract class BlazorTemplateTest : BrowserTestBase
targetProject = GetSubProject(project, "Server", $"{project.ProjectName}.Server");
}
- await targetProject.RunDotNetPublishAsync(noRestore: false);
+ var publishResult = await targetProject.RunDotNetPublishAsync(noRestore: false);
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", targetProject, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await targetProject.RunDotNetBuildAsync();
+ var buildResult = await targetProject.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", targetProject, buildResult));
}
return project;
diff --git a/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorWasmTemplateTest.cs b/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorWasmTemplateTest.cs
index ff0073cff2..a19b659670 100644
--- a/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorWasmTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Blazor.Tests/BlazorWasmTemplateTest.cs
@@ -248,20 +248,24 @@ public class BlazorWasmTemplateTest : BlazorTemplateTest
var appSettingsPath = Path.Combine(serverProject.TemplateOutputDir, "appsettings.json");
File.WriteAllText(appSettingsPath, replacedSection);
- await serverProject.RunDotNetPublishAsync();
+ var publishResult = await serverProject.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", serverProject, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await serverProject.RunDotNetBuildAsync();
+ var buildResult = await serverProject.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", serverProject, buildResult));
- await serverProject.RunDotNetEfCreateMigrationAsync("blazorwasm");
+ var migrationsResult = await serverProject.RunDotNetEfCreateMigrationAsync("blazorwasm");
+ Assert.True(0 == migrationsResult.ExitCode, ErrorMessages.GetFailedProcessMessage("run EF migrations", serverProject, migrationsResult));
serverProject.AssertEmptyMigration("blazorwasm");
if (useLocalDb)
{
- await serverProject.RunDotNetEfUpdateDatabaseAsync();
+ var dbUpdateResult = await serverProject.RunDotNetEfUpdateDatabaseAsync();
+ Assert.True(0 == dbUpdateResult.ExitCode, ErrorMessages.GetFailedProcessMessage("update database", serverProject, dbUpdateResult));
}
return project;
diff --git a/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Auth.Tests/BlazorWasmTemplateAuthTest.cs b/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Auth.Tests/BlazorWasmTemplateAuthTest.cs
index 818b7b38fd..87754aab90 100644
--- a/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Auth.Tests/BlazorWasmTemplateAuthTest.cs
+++ b/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Auth.Tests/BlazorWasmTemplateAuthTest.cs
@@ -95,15 +95,18 @@ public class BlazorWasmTemplateAuthTest : BlazorTemplateTest
var appSettingsPath = Path.Combine(serverProject.TemplateOutputDir, "appsettings.json");
File.WriteAllText(appSettingsPath, replacedSection);
- await serverProject.RunDotNetPublishAsync();
+ var publishResult = await serverProject.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", serverProject, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await serverProject.RunDotNetBuildAsync();
+ var buildResult = await serverProject.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", serverProject, buildResult));
- await serverProject.RunDotNetEfCreateMigrationAsync("blazorwasm");
+ var migrationsResult = await serverProject.RunDotNetEfCreateMigrationAsync("blazorwasm");
+ Assert.True(0 == migrationsResult.ExitCode, ErrorMessages.GetFailedProcessMessage("run EF migrations", serverProject, migrationsResult));
serverProject.AssertEmptyMigration("blazorwasm");
return project;
diff --git a/src/ProjectTemplates/test/Templates.Mvc.Tests/MvcTemplateTest.cs b/src/ProjectTemplates/test/Templates.Mvc.Tests/MvcTemplateTest.cs
index ef9a2e23aa..5db90382f6 100644
--- a/src/ProjectTemplates/test/Templates.Mvc.Tests/MvcTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Mvc.Tests/MvcTemplateTest.cs
@@ -55,7 +55,8 @@ public class MvcTemplateTest : LoggedTest
{
var project = await ProjectFactory.CreateProject(Output);
- await project.RunDotNetNewAsync("mvc", language: languageOverride, args: args);
+ var createResult = await project.RunDotNetNewAsync("mvc", language: languageOverride, args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
var noHttps = args?.Contains(ArgConstants.NoHttps) ?? false;
var expectedLaunchProfileNames = noHttps
@@ -77,13 +78,15 @@ public class MvcTemplateTest : LoggedTest
return;
}
- await project.RunDotNetPublishAsync();
+ var publishResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
IEnumerable<string> menuLinks = new List<string> {
PageUrls.HomeUrl,
@@ -154,7 +157,8 @@ public class MvcTemplateTest : LoggedTest
: noHttps
? new[] { ArgConstants.NoHttps }
: null;
- await project.RunDotNetNewAsync("mvc", auth: "Individual", useLocalDB: useLocalDB, args: args);
+ var createResult = await project.RunDotNetNewAsync("mvc", auth: "Individual", useLocalDB: useLocalDB, args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
var expectedLaunchProfileNames = noHttps
? new[] { "http", "IIS Express" }
@@ -167,15 +171,18 @@ public class MvcTemplateTest : LoggedTest
Assert.Contains(".db", projectFileContents);
}
- await project.RunDotNetPublishAsync();
+ var publishResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
- await project.RunDotNetEfCreateMigrationAsync("mvc");
+ var migrationsResult = await project.RunDotNetEfCreateMigrationAsync("mvc");
+ Assert.True(0 == migrationsResult.ExitCode, ErrorMessages.GetFailedProcessMessage("run EF migrations", project, migrationsResult));
project.AssertEmptyMigration("mvc");
// Note: if any links are updated here, RazorPagesTemplateTest.cs should be updated as well
@@ -277,9 +284,11 @@ public class MvcTemplateTest : LoggedTest
var project = await ProjectFactory.CreateProject(Output);
project.RuntimeIdentifier = runtimeIdentifer;
- await project.RunDotNetNewAsync("mvc");
+ var createResult = await project.RunDotNetNewAsync("mvc");
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
- await project.RunDotNetPublishAsync(additionalArgs: $"/p:PublishSingleFile=true -r {runtimeIdentifer} --self-contained", noRestore: false);
+ var publishResult = await project.RunDotNetPublishAsync(additionalArgs: $"/p:PublishSingleFile=true -r {runtimeIdentifer} --self-contained", noRestore: false);
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
var menuLinks = new[]
{
@@ -352,17 +361,20 @@ public class MvcTemplateTest : LoggedTest
{
var project = await ProjectFactory.CreateProject(Output);
- await project.RunDotNetNewAsync("mvc", auth: auth, args: args);
+ var createResult = await project.RunDotNetNewAsync("mvc", auth: auth, args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
// Identity Web auth requires https and thus ignores the --no-https option if passed so there should never be an 'http' profile
var expectedLaunchProfileNames = new[] { "https", "IIS Express" };
await project.VerifyLaunchSettings(expectedLaunchProfileNames);
// Verify building in debug works
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
// Publish builds in "release" configuration. Running publish should ensure we can compile in release and that we can publish without issues.
- await project.RunDotNetPublishAsync();
+ buildResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, buildResult));
return project;
}
diff --git a/src/ProjectTemplates/test/Templates.Mvc.Tests/RazorPagesTemplateTest.cs b/src/ProjectTemplates/test/Templates.Mvc.Tests/RazorPagesTemplateTest.cs
index 027260aee6..a780a5cc80 100644
--- a/src/ProjectTemplates/test/Templates.Mvc.Tests/RazorPagesTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Mvc.Tests/RazorPagesTemplateTest.cs
@@ -51,7 +51,8 @@ public class RazorPagesTemplateTest : LoggedTest
: noHttps
? new[] { ArgConstants.NoHttps }
: null;
- await project.RunDotNetNewAsync("razor", args: args);
+ var createResult = await project.RunDotNetNewAsync("razor", args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("razor", project, createResult));
var expectedLaunchProfileNames = noHttps
? new[] { "http", "IIS Express" }
@@ -65,13 +66,15 @@ public class RazorPagesTemplateTest : LoggedTest
Assert.DoesNotContain("Microsoft.EntityFrameworkCore.Tools.DotNet", projectFileContents);
Assert.DoesNotContain("Microsoft.Extensions.SecretManager.Tools", projectFileContents);
- await project.RunDotNetPublishAsync();
+ var publishResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, createResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, createResult));
var pages = new List<Page>
{
@@ -144,7 +147,8 @@ public class RazorPagesTemplateTest : LoggedTest
: noHttps
? new[] { ArgConstants.NoHttps }
: null;
- await project.RunDotNetNewAsync("razor", auth: "Individual", useLocalDB: useLocalDB, args: args);
+ var createResult = await project.RunDotNetNewAsync("razor", auth: "Individual", useLocalDB: useLocalDB, args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
// Individual auth supports no https OK
var expectedLaunchProfileNames = noHttps
@@ -158,15 +162,18 @@ public class RazorPagesTemplateTest : LoggedTest
Assert.Contains(".db", projectFileContents);
}
- await project.RunDotNetPublishAsync();
+ var publishResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
- await project.RunDotNetEfCreateMigrationAsync("razorpages");
+ var migrationsResult = await project.RunDotNetEfCreateMigrationAsync("razorpages");
+ Assert.True(0 == migrationsResult.ExitCode, ErrorMessages.GetFailedProcessMessage("run EF migrations", project, migrationsResult));
project.AssertEmptyMigration("razorpages");
// Note: if any links are updated here, MvcTemplateTest.cs should be updated as well
@@ -290,17 +297,20 @@ public class RazorPagesTemplateTest : LoggedTest
{
var project = await ProjectFactory.CreateProject(Output);
- await project.RunDotNetNewAsync("razor", auth: auth, args: args);
+ var createResult = await project.RunDotNetNewAsync("razor", auth: auth, args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
// Identity Web auth requires https and thus ignores the --no-https option if passed so there should never be an 'http' profile
var expectedLaunchProfileNames = new[] { "https", "IIS Express" };
await project.VerifyLaunchSettings(expectedLaunchProfileNames);
// Verify building in debug works
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
// Publish builds in "release" configuration. Running publish should ensure we can compile in release and that we can publish without issues.
- await project.RunDotNetPublishAsync();
+ buildResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, buildResult));
return project;
}
diff --git a/src/ProjectTemplates/test/Templates.Mvc.Tests/WebApiTemplateTest.cs b/src/ProjectTemplates/test/Templates.Mvc.Tests/WebApiTemplateTest.cs
index 3e41e741fb..b580a812c9 100644
--- a/src/ProjectTemplates/test/Templates.Mvc.Tests/WebApiTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Mvc.Tests/WebApiTemplateTest.cs
@@ -165,9 +165,11 @@ public class WebApiTemplateTest : LoggedTest
: useMinimalApis
? new[] { ArgConstants.UseMinimalApis, ArgConstants.NoOpenApi }
: new[] { ArgConstants.NoOpenApi };
- await project.RunDotNetNewAsync("webapi", args: args);
+ var createResult = await project.RunDotNetNewAsync("webapi", args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
using var aspNetProcess = project.StartBuiltProjectAsync();
Assert.False(
@@ -194,7 +196,8 @@ public class WebApiTemplateTest : LoggedTest
: useMinimalApis
? new[] { ArgConstants.UseMinimalApis, ArgConstants.NoOpenApi, ArgConstants.NoHttps }
: new[] { ArgConstants.NoOpenApi, ArgConstants.NoHttps };
- await project.RunDotNetNewAsync("webapi", args: args);
+ var createResult = await project.RunDotNetNewAsync("webapi", args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
var noHttps = args.Contains(ArgConstants.NoHttps);
var expectedLaunchProfileNames = noHttps
@@ -202,7 +205,8 @@ public class WebApiTemplateTest : LoggedTest
: new[] { "http", "https", "IIS Express" };
await project.VerifyLaunchSettings(expectedLaunchProfileNames);
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
using var aspNetProcess = project.StartBuiltProjectAsync();
Assert.False(
@@ -216,7 +220,8 @@ public class WebApiTemplateTest : LoggedTest
{
var project = await FactoryFixture.CreateProject(Output);
- await project.RunDotNetNewAsync("webapi", language: languageOverride, auth: auth, args: args);
+ var createResult = await project.RunDotNetNewAsync("webapi", language: languageOverride, auth: auth, args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
// External auth mechanisms require https to work and thus don't honor the --no-https flag
var requiresHttps = string.Equals(auth, "IndividualB2C", StringComparison.OrdinalIgnoreCase)
@@ -235,13 +240,15 @@ public class WebApiTemplateTest : LoggedTest
return project;
}
- await project.RunDotNetPublishAsync();
+ var publishResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
return project;
}
diff --git a/src/ProjectTemplates/test/Templates.Tests/BaselineTest.cs b/src/ProjectTemplates/test/Templates.Tests/BaselineTest.cs
index 335c1e6041..22993c25be 100644
--- a/src/ProjectTemplates/test/Templates.Tests/BaselineTest.cs
+++ b/src/ProjectTemplates/test/Templates.Tests/BaselineTest.cs
@@ -73,7 +73,8 @@ public class BaselineTest : LoggedTest
public async Task Template_Produces_The_Right_Set_Of_FilesAsync(string arguments, string[] expectedFiles)
{
Project = await ProjectFactory.CreateProject(Output);
- await Project.RunDotNetNewRawAsync(arguments);
+ var createResult = await Project.RunDotNetNewRawAsync(arguments);
+ Assert.True(createResult.ExitCode == 0, createResult.GetFormattedOutput());
foreach (var file in expectedFiles)
{
diff --git a/src/ProjectTemplates/test/Templates.Tests/EmptyWebTemplateTest.cs b/src/ProjectTemplates/test/Templates.Tests/EmptyWebTemplateTest.cs
index 9202743507..c99e3b836a 100644
--- a/src/ProjectTemplates/test/Templates.Tests/EmptyWebTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Tests/EmptyWebTemplateTest.cs
@@ -75,7 +75,8 @@ public class EmptyWebTemplateTest : LoggedTest
{
var project = await ProjectFactory.CreateProject(Output);
- await project.RunDotNetNewAsync("web", args: args, language: languageOverride);
+ var createResult = await project.RunDotNetNewAsync("web", args: args, language: languageOverride);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
var noHttps = args?.Contains(ArgConstants.NoHttps) ?? false;
var expectedLaunchProfileNames = noHttps
@@ -89,13 +90,15 @@ public class EmptyWebTemplateTest : LoggedTest
return;
}
- await project.RunDotNetPublishAsync();
+ var publishResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
using (var aspNetProcess = project.StartBuiltProjectAsync())
{
diff --git a/src/ProjectTemplates/test/Templates.Tests/GrpcTemplateTest.cs b/src/ProjectTemplates/test/Templates.Tests/GrpcTemplateTest.cs
index ae4f9cc297..81d3625162 100644
--- a/src/ProjectTemplates/test/Templates.Tests/GrpcTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Tests/GrpcTemplateTest.cs
@@ -45,14 +45,17 @@ public class GrpcTemplateTest : LoggedTest
var project = await ProjectFactory.CreateProject(Output);
var args = useProgramMain ? new[] { ArgConstants.UseProgramMain } : null;
- await project.RunDotNetNewAsync("grpc", args: args);
+ var createResult = await project.RunDotNetNewAsync("grpc", args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
var expectedLaunchProfileNames = new[] { "http", "https" };
await project.VerifyLaunchSettings(expectedLaunchProfileNames);
- await project.RunDotNetPublishAsync();
+ var publishResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
var isOsx = RuntimeInformation.IsOSPlatform(OSPlatform.OSX);
var isWindowsOld = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && Environment.OSVersion.Version < new Version(6, 2);
diff --git a/src/ProjectTemplates/test/Templates.Tests/IdentityUIPackageTest.cs b/src/ProjectTemplates/test/Templates.Tests/IdentityUIPackageTest.cs
index 35c094758b..74ce8178c4 100644
--- a/src/ProjectTemplates/test/Templates.Tests/IdentityUIPackageTest.cs
+++ b/src/ProjectTemplates/test/Templates.Tests/IdentityUIPackageTest.cs
@@ -105,20 +105,24 @@ public class IdentityUIPackageTest : LoggedTest
var project = await ProjectFactory.CreateProject(Output);
var useLocalDB = false;
- await project.RunDotNetNewAsync("razor", auth: "Individual", useLocalDB: useLocalDB, environmentVariables: packageOptions);
+ var createResult = await project.RunDotNetNewAsync("razor", auth: "Individual", useLocalDB: useLocalDB, environmentVariables: packageOptions);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
var projectFileContents = ReadFile(project.TemplateOutputDir, $"{project.ProjectName}.csproj");
Assert.Contains(".db", projectFileContents);
- await project.RunDotNetPublishAsync(packageOptions: packageOptions);
+ var publishResult = await project.RunDotNetPublishAsync(packageOptions: packageOptions);
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await project.RunDotNetBuildAsync(packageOptions: packageOptions);
+ var buildResult = await project.RunDotNetBuildAsync(packageOptions: packageOptions);
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
- await project.RunDotNetEfCreateMigrationAsync("razorpages");
+ var migrationsResult = await project.RunDotNetEfCreateMigrationAsync("razorpages");
+ Assert.True(0 == migrationsResult.ExitCode, ErrorMessages.GetFailedProcessMessage("run EF migrations", project, migrationsResult));
project.AssertEmptyMigration("razorpages");
var versionValidator = "Bootstrap v5.1.0";
diff --git a/src/ProjectTemplates/test/Templates.Tests/ItemTemplateTests/BlazorServerTests.cs b/src/ProjectTemplates/test/Templates.Tests/ItemTemplateTests/BlazorServerTests.cs
index 643efd9a98..29c3a3e2cd 100644
--- a/src/ProjectTemplates/test/Templates.Tests/ItemTemplateTests/BlazorServerTests.cs
+++ b/src/ProjectTemplates/test/Templates.Tests/ItemTemplateTests/BlazorServerTests.cs
@@ -27,7 +27,8 @@ public class BlazorServerTest
{
Project = await ProjectFactory.CreateProject(Output);
- await Project.RunDotNetNewAsync("razorcomponent --name Different");
+ var createResult = await Project.RunDotNetNewAsync("razorcomponent --name Different");
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create", Project, createResult));
Project.AssertFileExists("Different.razor", shouldExist: true);
Assert.Contains("<h3>Different</h3>", Project.ReadFile("Different.razor"));
diff --git a/src/ProjectTemplates/test/Templates.Tests/RazorClassLibraryTemplateTest.cs b/src/ProjectTemplates/test/Templates.Tests/RazorClassLibraryTemplateTest.cs
index 562d313c85..7675499fd0 100644
--- a/src/ProjectTemplates/test/Templates.Tests/RazorClassLibraryTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Tests/RazorClassLibraryTemplateTest.cs
@@ -35,15 +35,18 @@ public class RazorClassLibraryTemplateTest : LoggedTest
{
var project = await ProjectFactory.CreateProject(Output);
- await project.RunDotNetNewAsync("razorclasslib", args: new[] { "--support-pages-and-views", "true" });
+ var createResult = await project.RunDotNetNewAsync("razorclasslib", args: new[] { "--support-pages-and-views", "true" });
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
- await project.RunDotNetPublishAsync();
+ var publishResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
}
[ConditionalFact]
@@ -52,14 +55,17 @@ public class RazorClassLibraryTemplateTest : LoggedTest
{
var project = await ProjectFactory.CreateProject(Output);
- await project.RunDotNetNewAsync("razorclasslib");
+ var createResult = await project.RunDotNetNewAsync("razorclasslib");
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
- await project.RunDotNetPublishAsync();
+ var publishResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
}
}
diff --git a/src/ProjectTemplates/test/Templates.Tests/SpaTemplatesTest.cs b/src/ProjectTemplates/test/Templates.Tests/SpaTemplatesTest.cs
index 72e8107938..f067923b03 100644
--- a/src/ProjectTemplates/test/Templates.Tests/SpaTemplatesTest.cs
+++ b/src/ProjectTemplates/test/Templates.Tests/SpaTemplatesTest.cs
@@ -43,14 +43,17 @@ public class SpaTemplatesTest : LoggedTest
{
var project = await ProjectFactory.CreateProject(Output);
var args = new[] { "--NoSpaFrontEnd", "true" };
- await project.RunDotNetNewAsync(template, auth: auth, args: args);
+ var createResult = await project.RunDotNetNewAsync(template, auth: auth, args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage(template, project, createResult));
- await project.RunDotNetPublishAsync();
+ var publishResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
}
}
diff --git a/src/ProjectTemplates/test/Templates.Tests/WorkerTemplateTest.cs b/src/ProjectTemplates/test/Templates.Tests/WorkerTemplateTest.cs
index 4c1ad90756..53a4847912 100644
--- a/src/ProjectTemplates/test/Templates.Tests/WorkerTemplateTest.cs
+++ b/src/ProjectTemplates/test/Templates.Tests/WorkerTemplateTest.cs
@@ -38,15 +38,18 @@ public class WorkerTemplateTest : LoggedTest
{
var project = await ProjectFactory.CreateProject(Output);
- await project.RunDotNetNewAsync("worker", language: language, args: args);
+ var createResult = await project.RunDotNetNewAsync("worker", language: language, args: args);
+ Assert.True(0 == createResult.ExitCode, ErrorMessages.GetFailedProcessMessage("create/restore", project, createResult));
- await project.RunDotNetPublishAsync();
+ var publishResult = await project.RunDotNetPublishAsync();
+ Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", project, publishResult));
// Run dotnet build after publish. The reason is that one uses Config = Debug and the other uses Config = Release
// The output from publish will go into bin/Release/netcoreappX.Y/publish and won't be affected by calling build
// later, while the opposite is not true.
- await project.RunDotNetBuildAsync();
+ var buildResult = await project.RunDotNetBuildAsync();
+ Assert.True(0 == buildResult.ExitCode, ErrorMessages.GetFailedProcessMessage("build", project, buildResult));
using (var aspNetProcess = project.StartBuiltProjectAsync(hasListeningUri: false))
{