Skip to content

Commit 91daca1

Browse files
committed
Improve code quality based on PR review
1 parent 51388f2 commit 91daca1

File tree

4 files changed

+37
-15
lines changed

4 files changed

+37
-15
lines changed

Diff for: csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs

+8-9
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,6 @@ bool IBuildActions.FileExists(string file)
4646

4747
public IList<string> RunProcessIn { get; } = new List<string>();
4848
public IDictionary<string, int> RunProcess { get; } = new Dictionary<string, int>();
49-
50-
/// <summary>
51-
/// (process-exit code) pairs for commands that are executed during the assembly of the autobuild script.
52-
/// </summary>
53-
public IDictionary<string, int> RunProcessExecuteDuring { get; } = new Dictionary<string, int>();
5449
public IDictionary<string, string> RunProcessOut { get; } = new Dictionary<string, string>();
5550
public IDictionary<string, string> RunProcessWorkingDirectory { get; } = new Dictionary<string, string>();
5651
public HashSet<string> CreateDirectories { get; } = new HashSet<string>();
@@ -71,7 +66,7 @@ int IBuildActions.RunProcess(string cmd, string args, string? workingDirectory,
7166
if (wd != workingDirectory)
7267
throw new ArgumentException($"Unexpected RunProcessWorkingDirectory, got {wd ?? "null"} expected {workingDirectory ?? "null"} in {pattern}");
7368

74-
if (!RunProcess.TryGetValue(pattern, out var ret) && !RunProcessExecuteDuring.TryGetValue(pattern, out ret))
69+
if (!RunProcess.TryGetValue(pattern, out var ret))
7570
throw new ArgumentException("Missing RunProcess " + pattern);
7671

7772
return ret;
@@ -86,7 +81,7 @@ int IBuildActions.RunProcess(string cmd, string args, string? workingDirectory,
8681
if (wd != workingDirectory)
8782
throw new ArgumentException($"Unexpected RunProcessWorkingDirectory, got {wd ?? "null"} expected {workingDirectory ?? "null"} in {pattern}");
8883

89-
if (!RunProcess.TryGetValue(pattern, out var ret) && !RunProcessExecuteDuring.TryGetValue(pattern, out ret))
84+
if (!RunProcess.TryGetValue(pattern, out var ret))
9085
throw new ArgumentException("Missing RunProcess " + pattern);
9186

9287
return ret;
@@ -167,6 +162,10 @@ IEnumerable<string> IBuildActions.EnumerateDirectories(string dir)
167162

168163
bool IBuildActions.IsRunningOnAppleSilicon() => IsRunningOnAppleSilicon;
169164

165+
public bool IsMonoInstalled { get; set; }
166+
167+
bool IBuildActions.IsMonoInstalled() => IsMonoInstalled;
168+
170169
public string PathCombine(params string[] parts)
171170
{
172171
return string.Join(IsWindows ? '\\' : '/', parts.Where(p => !string.IsNullOrWhiteSpace(p)));
@@ -804,7 +803,7 @@ public void TestDirsProjWindows()
804803
[Fact]
805804
public void TestDirsProjLinux_WithMono()
806805
{
807-
actions.RunProcessExecuteDuring[@"mono --version"] = 0;
806+
actions.IsMonoInstalled = true;
808807

809808
actions.RunProcess[@"nuget restore C:\Project/dirs.proj -DisableParallelProcessing"] = 1;
810809
actions.RunProcess[@"mono scratch/.nuget/nuget.exe restore C:\Project/dirs.proj -DisableParallelProcessing"] = 0;
@@ -817,7 +816,7 @@ public void TestDirsProjLinux_WithMono()
817816
[Fact]
818817
public void TestDirsProjLinux_WithoutMono()
819818
{
820-
actions.RunProcessExecuteDuring[@"mono --version"] = 1;
819+
actions.IsMonoInstalled = false;
821820

822821
actions.RunProcess[@"dotnet msbuild /t:restore C:\Project/dirs.proj"] = 0;
823822
actions.RunProcess[@"dotnet msbuild C:\Project/dirs.proj /t:rebuild"] = 0;

Diff for: csharp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs

+4
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@ IEnumerable<string> IBuildActions.EnumerateDirectories(string dir)
150150

151151
bool IBuildActions.IsRunningOnAppleSilicon() => IsRunningOnAppleSilicon;
152152

153+
public bool IsMonoInstalled { get; set; }
154+
155+
bool IBuildActions.IsMonoInstalled() => IsMonoInstalled;
156+
153157
string IBuildActions.PathCombine(params string[] parts)
154158
{
155159
return string.Join(IsWindows ? '\\' : '/', parts.Where(p => !string.IsNullOrWhiteSpace(p)));

Diff for: csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs

+1-6
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,7 @@ BuildScript GetNugetRestoreScript() =>
7474
Argument("-DisableParallelProcessing").
7575
Script;
7676

77-
BuildScript GetMonoVersionScript() => new CommandBuilder(builder.Actions).
78-
RunCommand("mono").
79-
Argument("--version").
80-
Script;
81-
82-
var preferDotnet = !builder.Actions.IsWindows() && GetMonoVersionScript().Run(builder.Actions, (_, _) => { }, (_, _, _) => { }) != 0;
77+
var preferDotnet = !builder.Actions.IsWindows() && !builder.Actions.IsMonoInstalled();
8378

8479
var nugetRestore = GetNugetRestoreScript();
8580
var msbuildRestoreCommand = new CommandBuilder(builder.Actions).

Diff for: csharp/extractor/Semmle.Util/BuildActions.cs

+24
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,11 @@ public interface IBuildActions
125125
/// <returns>True if we are running on Apple Silicon.</returns>
126126
bool IsRunningOnAppleSilicon();
127127

128+
/// <summary>
129+
/// Checks if Mono is installed.
130+
/// </summary>
131+
bool IsMonoInstalled();
132+
128133
/// <summary>
129134
/// Combine path segments, Path.Combine().
130135
/// </summary>
@@ -261,6 +266,25 @@ bool IBuildActions.IsRunningOnAppleSilicon()
261266
}
262267
}
263268

269+
bool IBuildActions.IsMonoInstalled()
270+
{
271+
var thisBuildActions = (IBuildActions)this;
272+
273+
if (thisBuildActions.IsWindows())
274+
{
275+
return false;
276+
}
277+
278+
try
279+
{
280+
return 0 == thisBuildActions.RunProcess("mono", "--version", workingDirectory: null, env: null);
281+
}
282+
catch (Exception)
283+
{
284+
return false;
285+
}
286+
}
287+
264288
string IBuildActions.PathCombine(params string[] parts) => Path.Combine(parts);
265289

266290
void IBuildActions.WriteAllText(string filename, string contents) => File.WriteAllText(filename, contents);

0 commit comments

Comments
 (0)