aboutsummaryrefslogtreecommitdiff
path: root/src/test/WixToolsetTest.ManagedHost/TestEngine.cs
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2019-12-22 13:51:35 +1100
committerSean Hall <r.sean.hall@gmail.com>2019-12-22 13:34:07 +1000
commit4a176b759c47fa1970fcfd0d9e25c294bda82ef4 (patch)
tree961cc91c44569d72c12d9f2dc5b1c11a80bb94a9 /src/test/WixToolsetTest.ManagedHost/TestEngine.cs
parent43fb611edc680a74d229e8f1eeacb30adad8e3c7 (diff)
downloadwix-4a176b759c47fa1970fcfd0d9e25c294bda82ef4.tar.gz
wix-4a176b759c47fa1970fcfd0d9e25c294bda82ef4.tar.bz2
wix-4a176b759c47fa1970fcfd0d9e25c294bda82ef4.zip
Update the MbaHost test project to use an external exe to load the BA, which allows loading a different .NET than the one running the tests. This also allows writing the tests in C# instead of C++/CLI.
Diffstat (limited to 'src/test/WixToolsetTest.ManagedHost/TestEngine.cs')
-rw-r--r--src/test/WixToolsetTest.ManagedHost/TestEngine.cs53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/test/WixToolsetTest.ManagedHost/TestEngine.cs b/src/test/WixToolsetTest.ManagedHost/TestEngine.cs
new file mode 100644
index 00000000..4dd531ad
--- /dev/null
+++ b/src/test/WixToolsetTest.ManagedHost/TestEngine.cs
@@ -0,0 +1,53 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolsetTest.ManagedHost
4{
5 using System.Collections.Generic;
6 using System.Diagnostics;
7 using WixBuildTools.TestSupport;
8
9 public class TestEngine
10 {
11 private static readonly string TestEngineFile = TestData.Get(@"..\Win32\examples\Example.TestEngine\Example.TestEngine.exe");
12
13 public TestEngineResult RunShutdownEngine(string baFile)
14 {
15 var args = new string[] { '"' + baFile + '"' };
16 return RunProcessCaptureOutput(TestEngineFile, args);
17 }
18
19 private static TestEngineResult RunProcessCaptureOutput(string executablePath, string[] arguments = null, string workingFolder = null)
20 {
21 var startInfo = new ProcessStartInfo(executablePath)
22 {
23 Arguments = string.Join(' ', arguments),
24 CreateNoWindow = true,
25 RedirectStandardError = true,
26 RedirectStandardOutput = true,
27 UseShellExecute = false,
28 WorkingDirectory = workingFolder,
29 };
30
31 var exitCode = 0;
32 var output = new List<string>();
33
34 using (var process = Process.Start(startInfo))
35 {
36 process.OutputDataReceived += (s, e) => { if (e.Data != null) { output.Add(e.Data); } };
37 process.ErrorDataReceived += (s, e) => { if (e.Data != null) { output.Add(e.Data); } };
38
39 process.BeginErrorReadLine();
40 process.BeginOutputReadLine();
41
42 process.WaitForExit();
43 exitCode = process.ExitCode;
44 }
45
46 return new TestEngineResult
47 {
48 ExitCode = exitCode,
49 Output = output,
50 };
51 }
52 }
53}