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); }
		}
Example #2
0
 /// <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); }
		}