public void Fail() { var processRunner = new JsonOutputProcessRunner(new ProcessRunner()); var startInfo = new ProcessStartInfo("pwsh", "asdfdsaf"); var result = processRunner.Run(startInfo); Assert.Equal(64, result); Assert.False(processRunner.HadJsonOutput); }
public void EchoError() { var processRunner = new JsonOutputProcessRunner(new ProcessRunner()); var startInfo = new ProcessStartInfo("pwsh", "-c Write-Error 'hi'"); var result = processRunner.Run(startInfo); Assert.Equal(1, result); Assert.False(processRunner.HadJsonOutput); }
public void Number() { var processRunner = new JsonOutputProcessRunner(new ProcessRunner()); var startInfo = new ProcessStartInfo("pwsh", $"-c '{JsonOutputProcessRunner.DefaultJsonStart}'; 1 | ConvertTo-Json; '{JsonOutputProcessRunner.DefaultJsonEnd}'"); var result = processRunner.Run(startInfo); Assert.Equal(0, result); Assert.True(processRunner.HadJsonOutput); var objResult = processRunner.GetResult <int>(); Assert.Equal(1, objResult); }
public void Object() { var processRunner = new JsonOutputProcessRunner(new ProcessRunner()); var startInfo = new ProcessStartInfo("pwsh", $"-c '{JsonOutputProcessRunner.DefaultJsonStart}'; New-Object -TypeName PSObject -Property @{{Number = 4; String = 'hello';}} | ConvertTo-Json; '{JsonOutputProcessRunner.DefaultJsonEnd}'"); var result = processRunner.Run(startInfo); Assert.Equal(0, result); Assert.True(processRunner.HadJsonOutput); var objResult = processRunner.GetResult <TestClass>(); Assert.Equal(4, objResult.Number); Assert.Equal("hello", objResult.String); }
private JToken DoRunProcess(String escapedCommand, IEnumerable <KeyValuePair <string, object?> > args, String invalidExitCodeMessage, int validExitCode) { var runner = new JsonOutputProcessRunner(this.runner); var jsonStart = EscapePwshSingleQuote(runner.JsonStart); var jsonEnd = EscapePwshSingleQuote(runner.JsonEnd); var finalCommand = $"'{jsonStart}';{escapedCommand};'{jsonEnd}';exit $LASTEXITCODE"; var startInfo = SetupArgs(finalCommand, args); var exitCode = runner.Run(startInfo); if (exitCode != validExitCode) { throw new InvalidOperationException($"Invalid exit code '{exitCode}' expected '{validExitCode}'. Message: '{invalidExitCodeMessage}'"); } return(runner.GetResult()); }
public JToken RunProcess(IShellCommandBuilder builder, string invalidExitCodeMessage = "Invalid exit code for process.", int validExitCode = 0) { var runner = new JsonOutputProcessRunner(this.runner); var jsonStart = EscapePwshSingleQuote(runner.JsonStart); var jsonEnd = EscapePwshSingleQuote(runner.JsonEnd); var escapedCommand = builder.CreateFinalEscapedCommand(out var args); var finalCommand = $"{escapedCommand};'{jsonStart}';${builder.ResultVariableName};'{jsonEnd}'"; var startInfo = SetupArgs(finalCommand, args); var exitCode = runner.Run(startInfo); if (exitCode != validExitCode) { throw new InvalidOperationException($"Invalid exit code '{exitCode}' expected '{validExitCode}'. Message: '{invalidExitCodeMessage}'"); } return(runner.GetResult()); }