From 41af419ee5b101f68702852b00f96724a23c36ed Mon Sep 17 00:00:00 2001 From: filipw Date: Mon, 3 Apr 2023 13:45:39 +0200 Subject: [PATCH] respect environment.exitcode --- src/Dotnet.Script.Tests/ScriptExecutionTests.cs | 7 +++++++ .../EnvironmentExitCode/EnvironmentExitCode.csx | 2 ++ src/Dotnet.Script/Program.cs | 6 +++++- 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 src/Dotnet.Script.Tests/TestFixtures/EnvironmentExitCode/EnvironmentExitCode.csx diff --git a/src/Dotnet.Script.Tests/ScriptExecutionTests.cs b/src/Dotnet.Script.Tests/ScriptExecutionTests.cs index c8947d33..5c08518e 100644 --- a/src/Dotnet.Script.Tests/ScriptExecutionTests.cs +++ b/src/Dotnet.Script.Tests/ScriptExecutionTests.cs @@ -493,6 +493,13 @@ public void ShouldThrowExceptionWhenSdkIsNotSupported() Assert.StartsWith("The sdk 'Unsupported' is not supported", processResult.StandardError); } + [Fact] + public void ShouldRespectEnvironmentExitCodeOfTheScript() + { + var processResult = ScriptTestRunner.Default.ExecuteFixture("EnvironmentExitCode", "--no-cache"); + Assert.Equal(0xA0, processResult.ExitCode); + } + private static string CreateTestScript(string scriptFolder) { string script = @" diff --git a/src/Dotnet.Script.Tests/TestFixtures/EnvironmentExitCode/EnvironmentExitCode.csx b/src/Dotnet.Script.Tests/TestFixtures/EnvironmentExitCode/EnvironmentExitCode.csx new file mode 100644 index 00000000..ab8f26d5 --- /dev/null +++ b/src/Dotnet.Script.Tests/TestFixtures/EnvironmentExitCode/EnvironmentExitCode.csx @@ -0,0 +1,2 @@ +Environment.ExitCode = 0xA0; +Console.WriteLine("Hello World"); \ No newline at end of file diff --git a/src/Dotnet.Script/Program.cs b/src/Dotnet.Script/Program.cs index ff77a012..f24db369 100644 --- a/src/Dotnet.Script/Program.cs +++ b/src/Dotnet.Script/Program.cs @@ -258,7 +258,11 @@ private static int Wain(string[] args) }; var fileCommand = new ExecuteScriptCommand(ScriptConsole.Default, logFactory); - return await fileCommand.Run(fileCommandOptions); + var result = await fileCommand.Run(fileCommandOptions); + if (Environment.ExitCode != 0) return Environment.ExitCode; + + return result; + } else {