* Port https://github.com/aspnet/AspNetCore/pull/12879 to 3.1

* PR feedback
This commit is contained in:
Ryan Brandenburg 2019-10-01 15:51:34 -07:00 committed by Artak
parent fa93369beb
commit 8e6cd2c70d
4 changed files with 18 additions and 13 deletions

View File

@ -71,7 +71,7 @@
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
"styles": ["styles.css"],
"styles": ["src/styles.css"],
"scripts": [],
"assets": ["src/assets"]
}

View File

@ -104,14 +104,14 @@ namespace Templates.Test.Helpers
return new ProcessEx(output, proc);
}
public static async Task<ProcessEx> RunViaShellAsync(ITestOutputHelper output, string workingDirectory, string commandAndArgs)
public static ProcessEx RunViaShell(ITestOutputHelper output, string workingDirectory, string commandAndArgs)
{
var (shellExe, argsPrefix) = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
? ("cmd", "/c")
: ("bash", "-c");
var result = Run(output, workingDirectory, shellExe, $"{argsPrefix} \"{commandAndArgs}\"");
await result.Exited;
result.WaitForExit(assertSuccess: false);
return result;
}
@ -168,9 +168,14 @@ namespace Templates.Test.Helpers
return $"Process exited with code {_process.ExitCode}\nStdErr: {Error}\nStdOut: {Output}";
}
public void WaitForExit(bool assertSuccess)
public void WaitForExit(bool assertSuccess, TimeSpan? timeSpan = null)
{
Exited.Wait();
if(!timeSpan.HasValue)
{
timeSpan = TimeSpan.FromSeconds(480);
}
Exited.Wait(timeSpan.Value);
if (assertSuccess && _process.ExitCode != 0)
{

View File

@ -287,7 +287,7 @@ namespace Templates.Test.Helpers
try
{
output.WriteLine($"Restoring NPM packages in '{workingDirectory}' using npm...");
var result = await ProcessEx.RunViaShellAsync(output, workingDirectory, "npm install");
var result = ProcessEx.RunViaShell(output, workingDirectory, "npm install");
return result;
}
finally

View File

@ -63,14 +63,14 @@ namespace Templates.Test.SpaTemplateTest
using var npmRestoreResult = await Project.RestoreWithRetryAsync(Output, clientAppSubdirPath);
Assert.True(0 == npmRestoreResult.ExitCode, ErrorMessages.GetFailedProcessMessage("npm restore", Project, npmRestoreResult));
using var lintResult = await ProcessEx.RunViaShellAsync(Output, clientAppSubdirPath, "npm run lint");
using var lintResult = ProcessEx.RunViaShell(Output, clientAppSubdirPath, "npm run lint");
Assert.True(0 == lintResult.ExitCode, ErrorMessages.GetFailedProcessMessage("npm run lint", Project, lintResult));
if (template == "react" || template == "reactredux")
{
using var testResult = await ProcessEx.RunViaShellAsync(Output, clientAppSubdirPath, "npm run test");
Assert.True(0 == testResult.ExitCode, ErrorMessages.GetFailedProcessMessage("npm run test", Project, testResult));
}
// The default behavior of angular tests is watch mode, which leaves the test process open after it finishes, which leads to delays/hangs.
var testcommand = "npm run test" + template == "angular" ? "-- --watch=false" : "";
using var testResult = ProcessEx.RunViaShell(Output, clientAppSubdirPath, testcommand);
Assert.True(0 == testResult.ExitCode, ErrorMessages.GetFailedProcessMessage("npm run test", Project, testResult));
using var publishResult = await Project.RunDotNetPublishAsync();
Assert.True(0 == publishResult.ExitCode, ErrorMessages.GetFailedProcessMessage("publish", Project, publishResult));
@ -159,7 +159,7 @@ namespace Templates.Test.SpaTemplateTest
{
try
{
testResult = await ProcessEx.RunViaShellAsync(Output, clientAppSubdirPath, "npx rimraf ./build");
testResult = ProcessEx.RunViaShell(Output, clientAppSubdirPath, "npx rimraf ./build");
testResultExitCode = testResult.ExitCode;
if (testResultExitCode == 0)
{