Skip to content

Commit dc36cdb

Browse files
committed
Only delete dotnet-install.sh if not in scratch directory
1 parent 278d9b1 commit dc36cdb

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -938,7 +938,6 @@ public void TestDotnetVersionNotInstalled()
938938
actions.RunProcessOut["dotnet --list-sdks"] = "2.1.2 [C:\\Program Files\\dotnet\\sdks]\n2.1.4 [C:\\Program Files\\dotnet\\sdks]";
939939
actions.RunProcess[@"chmod u+x scratch/.dotnet/dotnet-install.sh"] = 0;
940940
actions.RunProcess[@"scratch/.dotnet/dotnet-install.sh --channel release --version 2.1.3 --install-dir scratch/.dotnet"] = 0;
941-
actions.RunProcess[@"rm scratch/.dotnet/dotnet-install.sh"] = 0;
942941
actions.RunProcess[@"scratch/.dotnet/dotnet --info"] = 0;
943942
actions.RunProcess[@"scratch/.dotnet/dotnet clean C:\Project/test.csproj"] = 0;
944943
actions.RunProcess[@"scratch/.dotnet/dotnet restore C:\Project/test.csproj"] = 0;
@@ -964,7 +963,7 @@ public void TestDotnetVersionNotInstalled()
964963
actions.CreateDirectories.Add(@"scratch/.dotnet");
965964

966965
var autobuilder = CreateAutoBuilder(false, dotnetVersion: "2.1.3");
967-
TestAutobuilderScript(autobuilder, 0, 8);
966+
TestAutobuilderScript(autobuilder, 0, 7);
968967
}
969968

970969
[Fact]
@@ -975,7 +974,6 @@ public void TestDotnetVersionAlreadyInstalled()
975974
2.1.4 [C:\Program Files\dotnet\sdks]";
976975
actions.RunProcess[@"chmod u+x scratch/.dotnet/dotnet-install.sh"] = 0;
977976
actions.RunProcess[@"scratch/.dotnet/dotnet-install.sh --channel release --version 2.1.3 --install-dir scratch/.dotnet"] = 0;
978-
actions.RunProcess[@"rm scratch/.dotnet/dotnet-install.sh"] = 0;
979977
actions.RunProcess[@"scratch/.dotnet/dotnet --info"] = 0;
980978
actions.RunProcess[@"scratch/.dotnet/dotnet clean C:\Project/test.csproj"] = 0;
981979
actions.RunProcess[@"scratch/.dotnet/dotnet restore C:\Project/test.csproj"] = 0;
@@ -1001,7 +999,7 @@ public void TestDotnetVersionAlreadyInstalled()
1001999
actions.CreateDirectories.Add(@"scratch/.dotnet");
10021000

10031001
var autobuilder = CreateAutoBuilder(false, dotnetVersion: "2.1.3");
1004-
TestAutobuilderScript(autobuilder, 0, 8);
1002+
TestAutobuilderScript(autobuilder, 0, 7);
10051003
}
10061004

10071005
private void TestDotnetVersionWindows(Action action, int commandsRun)

csharp/autobuilder/Semmle.Autobuild.CSharp/DotNetRule.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,10 @@ BuildScript GetInstall(string pwsh) =>
190190
}
191191
else
192192
{
193-
var dotnetInstallPath = builder.Actions.PathCombine(FileUtils.GetTemporaryWorkingDirectory(builder.Actions.GetEnvironmentVariable, builder.Options.Language.UpperCaseName, out var _), ".dotnet", "dotnet-install.sh");
193+
var dotnetInstallPath = builder.Actions.PathCombine(FileUtils.GetTemporaryWorkingDirectory(
194+
builder.Actions.GetEnvironmentVariable,
195+
builder.Options.Language.UpperCaseName,
196+
out var shouldCleanUp), ".dotnet", "dotnet-install.sh");
194197

195198
var downloadDotNetInstallSh = BuildScript.DownloadFile(
196199
"https://dot.net/v1/dotnet-install.sh",
@@ -211,11 +214,17 @@ BuildScript GetInstall(string pwsh) =>
211214
Argument("--install-dir").
212215
Argument(path);
213216

214-
var removeScript = new CommandBuilder(builder.Actions).
215-
RunCommand("rm").
216-
Argument(dotnetInstallPath);
217+
var buildScript = downloadDotNetInstallSh & chmod.Script & install.Script;
218+
219+
if (shouldCleanUp)
220+
{
221+
var removeScript = new CommandBuilder(builder.Actions).
222+
RunCommand("rm").
223+
Argument(dotnetInstallPath);
224+
buildScript &= removeScript.Script;
225+
}
217226

218-
return downloadDotNetInstallSh & chmod.Script & install.Script & BuildScript.Try(removeScript.Script);
227+
return buildScript;
219228
}
220229
});
221230
}

0 commit comments

Comments
 (0)