Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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());
        }