public void TestKill() { string tempfile = Path.GetTempFileName(); try { Environment.CurrentDirectory = Path.GetDirectoryName(FileUtils.FindFullPath("cmd.exe")); ProcessRunner runner = new ProcessRunner("cmd.exe"); Assert.IsFalse(runner.IsRunning); runner.Kill(); // always safe to call runner.Start("/K", "ECHO Hello > " + tempfile); Assert.IsTrue(runner.IsRunning); try //make sure we can't start twice. { runner.Start("/C", "ECHO", "HELO"); Assert.Fail(); } catch (InvalidOperationException) { } Assert.IsFalse(runner.WaitForExit(TimeSpan.FromSeconds(1), false)); runner.Kill(); string output = File.ReadAllText(tempfile).Trim(); Assert.AreEqual("Hello", output); } finally { File.Delete(tempfile); } }
/// <summary> Closes std::in and waits for the process to exit </summary> public void WaitForExit() { _runner.WaitForExit(); }
public void TestStdInput() { string tempfile = Path.GetTempFileName(); try { ProcessRunner runner = new ProcessRunner("cmd.exe"); runner.Start(); runner.StandardInput.WriteLine("ECHO Hello > " + tempfile); runner.StandardInput.WriteLine("EXIT"); Assert.IsTrue(runner.WaitForExit(TimeSpan.FromMinutes(1))); Assert.AreEqual(0, runner.ExitCode); string output = File.ReadAllText(tempfile).Trim(); Assert.AreEqual("Hello", output); } finally { File.Delete(tempfile); } }