public void ProgressProcessIo_TestCharMode_Batch_ExitedEvent_Async(bool kill, string procContent, string parameters, int expectedExitCode, string expectedStandard)
        {
            if (!TestHelper.GetDlcPath(out string dlcPath))
            {
                return;
            }

            var proc = Path.Combine(TestFolder, "test.p");

            File.WriteAllText(proc, procContent);

            var process = new UoeProcessIo(dlcPath, true, false)
            {
                WorkingDirectory = TestFolder
            };

            _hasExited2            = false;
            process.OnProcessExit += (sender, args) => _hasExited2 = true;

            process.ExecuteNoWait(new ProcessArgs().Append("-p", "test.p").AppendFromQuotedArgs(parameters));

            if (kill)
            {
                Task.Factory.StartNew(() => {
                    Thread.Sleep(1000);
                    process.Kill();
                });
            }

            process.WaitForExit();

            Assert.AreEqual(expectedExitCode, Math.Abs(process.ExitCode), $"{process.ExecutablePath} {process.UsedArguments}");
            Assert.AreEqual(expectedStandard, process.BatchOutput.ToString());
            Assert.IsTrue(_hasExited2);
            Assert.AreEqual(kill, process.Killed);

            process.Dispose();
        }
        private bool StartProc(string procContent, bool useCharMode, bool silent, string parameters, int expectedExitCode, string expectedStandard, bool expectErrors, EventHandler <EventArgs> exitedHandler)
        {
            if (!TestHelper.GetDlcPath(out string dlcPath))
            {
                return(false);
            }

            var proc = Path.Combine(TestFolder, "test.p");

            File.WriteAllText(proc, procContent);

            var process = new UoeProcessIo(dlcPath, useCharMode, true)
            {
                WorkingDirectory = TestFolder
            };

            if (exitedHandler != null)
            {
                process.OnProcessExit += exitedHandler;
            }
            process.Execute(new ProcessArgs().Append("-p", "test.p").AppendFromQuotedArgs(parameters), silent);

            Assert.AreEqual(expectedExitCode, process.ExitCode, $"{process.ExecutablePath} {process.UsedArguments}");
            if (expectedStandard != null)
            {
                Assert.AreEqual(expectedStandard, process.BatchOutput.ToString());
            }

            if (expectErrors)
            {
                Debug.WriteLine(process.BatchOutput);
                Assert.IsTrue(process.BatchOutput.Length > 1, process.BatchOutput.Length.ToString());
            }

            return(true);
        }
예제 #3
0
 /// <inheritdoc />
 public void Dispose() {
     _progres?.Dispose();
     _progres = null;
 }