tests: ExecuteRunWeb: update expected SIGTERM exit code on mono. (#15341)

Co-authored-by: Michael Simons <msimons@microsoft.com>
This commit is contained in:
Tom Deseyn 2023-02-22 16:52:28 +01:00 committed by GitHub
parent 15e62a00f4
commit 9a9449b598
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -14,6 +14,7 @@ internal class DotNetHelper
{ {
private static readonly object s_lockObj = new(); private static readonly object s_lockObj = new();
private static bool IsMonoRuntime { get; } = DetermineIsMonoRuntime();
public static string DotNetPath { get; } = Path.Combine(Config.DotNetDirectory, "dotnet"); public static string DotNetPath { get; } = Path.Combine(Config.DotNetDirectory, "dotnet");
public static string LogsDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "logs"); public static string LogsDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "logs");
public static string PackagesDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "packages"); public static string PackagesDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "packages");
@ -198,10 +199,13 @@ internal class DotNetHelper
public void ExecuteRunWeb(string projectName) public void ExecuteRunWeb(string projectName)
{ {
// 'dotnet run' exit code differs between CoreCLR and Mono (https://github.com/dotnet/sdk/issues/30095).
int expectedExitCode = IsMonoRuntime ? 143 : 0;
ExecuteCmd( ExecuteCmd(
$"run {GetBinLogOption(projectName, "run")}", $"run {GetBinLogOption(projectName, "run")}",
GetProjectDirectory(projectName), GetProjectDirectory(projectName),
additionalProcessConfigCallback: processConfigCallback, additionalProcessConfigCallback: processConfigCallback,
expectedExitCode,
millisecondTimeout: 30000); millisecondTimeout: 30000);
void processConfigCallback(Process process) void processConfigCallback(Process process)
@ -230,5 +234,27 @@ internal class DotNetHelper
return $"/bl:{Path.Combine(LogsDirectory, $"{fileName}.binlog")}"; return $"/bl:{Path.Combine(LogsDirectory, $"{fileName}.binlog")}";
} }
private static bool DetermineIsMonoRuntime()
{
string dotnetRoot = Config.DotNetDirectory;
string sharedFrameworkRoot = Path.Combine(dotnetRoot, "shared", "Microsoft.NETCore.App");
if (!Directory.Exists(sharedFrameworkRoot))
{
return false;
}
string? version = Directory.GetDirectories(sharedFrameworkRoot).FirstOrDefault();
if (version is null)
{
return false;
}
string sharedFramework = Path.Combine(sharedFrameworkRoot, version);
// Check the presence of one of the mono header files.
return File.Exists(Path.Combine(sharedFramework, "mono-gc.h"));
}
private static string GetProjectDirectory(string projectName) => Path.Combine(ProjectsDirectory, projectName); private static string GetProjectDirectory(string projectName) => Path.Combine(ProjectsDirectory, projectName);
} }