Skip to content

Commit

Permalink
tests: ExecuteRunWeb: update expected SIGTERM exit code on mono.
Browse files Browse the repository at this point in the history
  • Loading branch information
tmds committed Jan 25, 2023
1 parent 03938ae commit 5182b30
Showing 1 changed file with 26 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ internal class DotNetHelper
{
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 LogsDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "logs");
public static string PackagesDirectory { get; } = Path.Combine(Directory.GetCurrentDirectory(), "packages");
Expand Down Expand Up @@ -198,10 +199,13 @@ public void ExecuteRun(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(
$"run {GetBinLogOption(projectName, "run")}",
GetProjectDirectory(projectName),
additionalProcessConfigCallback: processConfigCallback,
expectedExitCode,
millisecondTimeout: 30000);

void processConfigCallback(Process process)
Expand Down Expand Up @@ -230,5 +234,27 @@ private static string GetBinLogOption(string projectName, string command, string
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);
}

0 comments on commit 5182b30

Please sign in to comment.