aboutsummaryrefslogtreecommitdiff
path: root/src/ext/Bal/test/WixToolsetTest.ManagedHost
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-05-03 15:55:48 -0700
committerRob Mensching <rob@firegiant.com>2021-05-03 15:55:48 -0700
commitba7bab476501c16e437b0aee71c1be02c3dda176 (patch)
tree814fba485c29a7dfe1adb396169e27ed641ef9a3 /src/ext/Bal/test/WixToolsetTest.ManagedHost
parent14987a72cc1a3493ca8f80693d273352fc314bd9 (diff)
downloadwix-ba7bab476501c16e437b0aee71c1be02c3dda176.tar.gz
wix-ba7bab476501c16e437b0aee71c1be02c3dda176.tar.bz2
wix-ba7bab476501c16e437b0aee71c1be02c3dda176.zip
Move Bal.wixext into ext
Diffstat (limited to 'src/ext/Bal/test/WixToolsetTest.ManagedHost')
-rw-r--r--src/ext/Bal/test/WixToolsetTest.ManagedHost/DncHostFixture.cs209
-rw-r--r--src/ext/Bal/test/WixToolsetTest.ManagedHost/MbaHostFixture.cs94
-rw-r--r--src/ext/Bal/test/WixToolsetTest.ManagedHost/README.md5
-rw-r--r--src/ext/Bal/test/WixToolsetTest.ManagedHost/TestEngine.cs74
-rw-r--r--src/ext/Bal/test/WixToolsetTest.ManagedHost/TestEngineResult.cs12
-rw-r--r--src/ext/Bal/test/WixToolsetTest.ManagedHost/WixToolsetTest.ManagedHost.csproj25
6 files changed, 419 insertions, 0 deletions
diff --git a/src/ext/Bal/test/WixToolsetTest.ManagedHost/DncHostFixture.cs b/src/ext/Bal/test/WixToolsetTest.ManagedHost/DncHostFixture.cs
new file mode 100644
index 00000000..af5f2543
--- /dev/null
+++ b/src/ext/Bal/test/WixToolsetTest.ManagedHost/DncHostFixture.cs
@@ -0,0 +1,209 @@
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.IO;
6 using WixBuildTools.TestSupport;
7 using WixToolset.Core.TestPackage;
8 using Xunit;
9
10 public class DncHostFixture
11 {
12 static readonly string bundleBasePath = TestData.Get("..", "examples");
13
14 [Fact]
15 public void CanLoadFDDEarliestCoreMBA()
16 {
17 using (var fs = new DisposableFileSystem())
18 {
19 var baseFolder = fs.GetFolder();
20 var bundleFile = TestData.Get(bundleBasePath, "EarliestCoreBundleFDD.exe");
21 var testEngine = new TestEngine();
22
23 var result = testEngine.RunShutdownEngine(bundleFile, baseFolder);
24 var logMessages = result.Output;
25 Assert.Equal("Loading .NET Core FDD bootstrapper application.", logMessages[0]);
26 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
27 Assert.Equal("EarliestCoreBA", logMessages[2]);
28 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
29 }
30 }
31
32 [Fact]
33 public void CanLoadSCDEarliestCoreMBA()
34 {
35 using (var fs = new DisposableFileSystem())
36 {
37 var baseFolder = fs.GetFolder();
38 var bundleFile = TestData.Get(bundleBasePath, "EarliestCoreBundleSCD.exe");
39 var testEngine = new TestEngine();
40
41 var result = testEngine.RunShutdownEngine(bundleFile, baseFolder);
42 var logMessages = result.Output;
43 Assert.Equal("Loading .NET Core SCD bootstrapper application.", logMessages[0]);
44 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
45 Assert.Equal("EarliestCoreBA", logMessages[2]);
46 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
47 }
48 }
49
50 [Fact]
51 public void CanLoadTrimmedSCDEarliestCoreMBA()
52 {
53 using (var fs = new DisposableFileSystem())
54 {
55 var baseFolder = fs.GetFolder();
56 var bundleFile = TestData.Get(bundleBasePath, "EarliestCoreBundleTrimmedSCD.exe");
57 var testEngine = new TestEngine();
58
59 var result = testEngine.RunShutdownEngine(bundleFile, baseFolder);
60 var logMessages = result.Output;
61 Assert.Equal("Loading .NET Core SCD bootstrapper application.", logMessages[0]);
62 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
63 Assert.Equal("EarliestCoreBA", logMessages[2]);
64 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
65 }
66 }
67
68 [Fact]
69 public void CanReloadSCDEarliestCoreMBA()
70 {
71 using (var fs = new DisposableFileSystem())
72 {
73 var baseFolder = fs.GetFolder();
74 var bundleFile = TestData.Get(bundleBasePath, "EarliestCoreBundleSCD.exe");
75 var testEngine = new TestEngine();
76
77 var result = testEngine.RunReloadEngine(bundleFile, baseFolder);
78 var logMessages = result.Output;
79 Assert.Equal("Loading .NET Core SCD bootstrapper application.", logMessages[0]);
80 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
81 Assert.Equal("EarliestCoreBA", logMessages[2]);
82 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
83 Assert.Equal("Loading .NET Core SCD bootstrapper application.", logMessages[4]);
84 Assert.Equal("Reloaded 1 time(s)", logMessages[5]); // dnchost doesn't currently support unloading
85 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[6]);
86 Assert.Equal("EarliestCoreBA", logMessages[7]);
87 Assert.Equal("Shutdown,Restart,0", logMessages[8]);
88 }
89 }
90
91 [Fact]
92 public void CanLoadFDDLatestCoreMBA()
93 {
94 using (var fs = new DisposableFileSystem())
95 {
96 var baseFolder = fs.GetFolder();
97 var bundleFile = TestData.Get(bundleBasePath, "LatestCoreBundleFDD.exe");
98 var testEngine = new TestEngine();
99
100 var result = testEngine.RunShutdownEngine(bundleFile, baseFolder);
101 var logMessages = result.Output;
102 Assert.Equal("Loading .NET Core FDD bootstrapper application.", logMessages[0]);
103 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
104 Assert.Equal("LatestCoreBA", logMessages[2]);
105 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
106 }
107 }
108
109 [Fact]
110 public void CanReloadFDDLatestCoreMBA()
111 {
112 using (var fs = new DisposableFileSystem())
113 {
114 var baseFolder = fs.GetFolder();
115 var bundleFile = TestData.Get(bundleBasePath, "LatestCoreBundleFDD.exe");
116 var testEngine = new TestEngine();
117
118 var result = testEngine.RunReloadEngine(bundleFile, baseFolder);
119 var logMessages = result.Output;
120 Assert.Equal("Loading .NET Core FDD bootstrapper application.", logMessages[0]);
121 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
122 Assert.Equal("LatestCoreBA", logMessages[2]);
123 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
124 Assert.Equal("Loading .NET Core FDD bootstrapper application.", logMessages[4]);
125 Assert.Equal("Reloaded 1 time(s)", logMessages[5]); // dnchost doesn't currently support unloading
126 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[6]);
127 Assert.Equal("LatestCoreBA", logMessages[7]);
128 Assert.Equal("Shutdown,Restart,0", logMessages[8]);
129 }
130 }
131
132 [Fact]
133 public void CanLoadSCDLatestCoreMBA()
134 {
135 using (var fs = new DisposableFileSystem())
136 {
137 var baseFolder = fs.GetFolder();
138 var bundleFile = TestData.Get(bundleBasePath, "LatestCoreBundleSCD.exe");
139 var testEngine = new TestEngine();
140
141 var result = testEngine.RunShutdownEngine(bundleFile, baseFolder);
142 var logMessages = result.Output;
143 Assert.Equal("Loading .NET Core SCD bootstrapper application.", logMessages[0]);
144 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
145 Assert.Equal("LatestCoreBA", logMessages[2]);
146 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
147 }
148 }
149
150 [Fact]
151 public void CanLoadTrimmedSCDLatestCoreMBA()
152 {
153 using (var fs = new DisposableFileSystem())
154 {
155 var baseFolder = fs.GetFolder();
156 var bundleFile = TestData.Get(bundleBasePath, "LatestCoreBundleTrimmedSCD.exe");
157 var testEngine = new TestEngine();
158
159 var result = testEngine.RunShutdownEngine(bundleFile, baseFolder);
160 var logMessages = result.Output;
161 Assert.Equal("Loading .NET Core SCD bootstrapper application.", logMessages[0]);
162 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
163 Assert.Equal("LatestCoreBA", logMessages[2]);
164 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
165 }
166 }
167
168 [Fact]
169 public void CanReloadSCDLatestCoreMBA()
170 {
171 using (var fs = new DisposableFileSystem())
172 {
173 var baseFolder = fs.GetFolder();
174 var bundleFile = TestData.Get(bundleBasePath, "LatestCoreBundleSCD.exe");
175 var testEngine = new TestEngine();
176
177 var result = testEngine.RunReloadEngine(bundleFile, baseFolder);
178 var logMessages = result.Output;
179 Assert.Equal("Loading .NET Core SCD bootstrapper application.", logMessages[0]);
180 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
181 Assert.Equal("LatestCoreBA", logMessages[2]);
182 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
183 Assert.Equal("Loading .NET Core SCD bootstrapper application.", logMessages[4]);
184 Assert.Equal("Reloaded 1 time(s)", logMessages[5]); // dnchost doesn't currently support unloading
185 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[6]);
186 Assert.Equal("LatestCoreBA", logMessages[7]);
187 Assert.Equal("Shutdown,Restart,0", logMessages[8]);
188 }
189 }
190
191 [Fact]
192 public void CanLoadFDDWPFCoreMBA()
193 {
194 using (var fs = new DisposableFileSystem())
195 {
196 var baseFolder = fs.GetFolder();
197 var bundleFile = TestData.Get(bundleBasePath, "WPFCoreBundleFDD.exe");
198 var testEngine = new TestEngine();
199
200 var result = testEngine.RunShutdownEngine(bundleFile, baseFolder);
201 var logMessages = result.Output;
202 Assert.Equal("Loading .NET Core FDD bootstrapper application.", logMessages[0]);
203 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
204 Assert.Equal("WPFCoreBA", logMessages[2]);
205 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
206 }
207 }
208 }
209}
diff --git a/src/ext/Bal/test/WixToolsetTest.ManagedHost/MbaHostFixture.cs b/src/ext/Bal/test/WixToolsetTest.ManagedHost/MbaHostFixture.cs
new file mode 100644
index 00000000..dd37ee58
--- /dev/null
+++ b/src/ext/Bal/test/WixToolsetTest.ManagedHost/MbaHostFixture.cs
@@ -0,0 +1,94 @@
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.IO;
6 using WixBuildTools.TestSupport;
7 using WixToolset.Core.TestPackage;
8 using Xunit;
9
10 public class MbaHostFixture
11 {
12 static readonly string bundleBasePath = TestData.Get("..", "examples");
13
14 [Fact]
15 public void CanLoadFullFramework2MBA()
16 {
17 using (var fs = new DisposableFileSystem())
18 {
19 var baseFolder = fs.GetFolder();
20 var bundleFile = TestData.Get(bundleBasePath, "FullFramework2Bundle.exe");
21 var testEngine = new TestEngine();
22
23 var result = testEngine.RunShutdownEngine(bundleFile, baseFolder);
24 var logMessages = result.Output;
25 Assert.Equal("Loading managed bootstrapper application.", logMessages[0]);
26 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
27 Assert.Equal("FullFramework2BA", logMessages[2]);
28 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
29 }
30 }
31
32 [Fact]
33 public void CanLoadFullFramework4MBA()
34 {
35 using (var fs = new DisposableFileSystem())
36 {
37 var baseFolder = fs.GetFolder();
38 var bundleFile = TestData.Get(bundleBasePath, "FullFramework4Bundle.exe");
39 var testEngine = new TestEngine();
40
41 var result = testEngine.RunShutdownEngine(bundleFile, baseFolder);
42 var logMessages = result.Output;
43 Assert.Equal("Loading managed bootstrapper application.", logMessages[0]);
44 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
45 Assert.Equal("FullFramework4BA", logMessages[2]);
46 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
47 }
48 }
49
50 [Fact]
51 public void CanReloadFullFramework2MBA()
52 {
53 using (var fs = new DisposableFileSystem())
54 {
55 var baseFolder = fs.GetFolder();
56 var bundleFile = TestData.Get(bundleBasePath, "FullFramework2Bundle.exe");
57 var testEngine = new TestEngine();
58
59 var result = testEngine.RunReloadEngine(bundleFile, baseFolder);
60 var logMessages = result.Output;
61 Assert.Equal("Loading managed bootstrapper application.", logMessages[0]);
62 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
63 Assert.Equal("FullFramework2BA", logMessages[2]);
64 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
65 Assert.Equal("Loading managed bootstrapper application.", logMessages[4]);
66 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[5]);
67 Assert.Equal("FullFramework2BA", logMessages[6]);
68 Assert.Equal("Shutdown,Restart,0", logMessages[7]);
69 }
70 }
71
72 [Fact]
73 public void CanReloadFullFramework4MBA()
74 {
75 using (var fs = new DisposableFileSystem())
76 {
77 var baseFolder = fs.GetFolder();
78 var bundleFile = TestData.Get(bundleBasePath, "FullFramework4Bundle.exe");
79 var testEngine = new TestEngine();
80
81 var result = testEngine.RunReloadEngine(bundleFile, baseFolder);
82 var logMessages = result.Output;
83 Assert.Equal("Loading managed bootstrapper application.", logMessages[0]);
84 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[1]);
85 Assert.Equal("FullFramework4BA", logMessages[2]);
86 Assert.Equal("Shutdown,ReloadBootstrapper,0", logMessages[3]);
87 Assert.Equal("Loading managed bootstrapper application.", logMessages[4]);
88 Assert.Equal("Creating BA thread to run asynchronously.", logMessages[5]);
89 Assert.Equal("FullFramework4BA", logMessages[6]);
90 Assert.Equal("Shutdown,Restart,0", logMessages[7]);
91 }
92 }
93 }
94}
diff --git a/src/ext/Bal/test/WixToolsetTest.ManagedHost/README.md b/src/ext/Bal/test/WixToolsetTest.ManagedHost/README.md
new file mode 100644
index 00000000..d7e73df2
--- /dev/null
+++ b/src/ext/Bal/test/WixToolsetTest.ManagedHost/README.md
@@ -0,0 +1,5 @@
1In order to properly test dnchost and mbahost,
2the managed BAs need to be published and a bundle needs to be built for each scenario.
3Making this happen on every build for the solution takes too long,
4so this project relies on manually running appveyor.cmd to publish everything before the tests can be run.
5appveyor.cmd needs to be ran again every time changes are made in other projects. \ No newline at end of file
diff --git a/src/ext/Bal/test/WixToolsetTest.ManagedHost/TestEngine.cs b/src/ext/Bal/test/WixToolsetTest.ManagedHost/TestEngine.cs
new file mode 100644
index 00000000..44538227
--- /dev/null
+++ b/src/ext/Bal/test/WixToolsetTest.ManagedHost/TestEngine.cs
@@ -0,0 +1,74 @@
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 System.IO;
8 using WixBuildTools.TestSupport;
9 using WixToolset.Core.TestPackage;
10
11 public class TestEngine
12 {
13 private static readonly string TestEngineFile = TestData.Get(@"..\Win32\examples\Example.TestEngine\Example.TestEngine.exe");
14
15 public TestEngineResult RunReloadEngine(string bundleFilePath, string tempFolderPath)
16 {
17 return this.RunTestEngine("reload", bundleFilePath, tempFolderPath);
18 }
19
20 public TestEngineResult RunShutdownEngine(string bundleFilePath, string tempFolderPath)
21 {
22 return this.RunTestEngine("shutdown", bundleFilePath, tempFolderPath);
23 }
24
25 private TestEngineResult RunTestEngine(string engineMode, string bundleFilePath, string tempFolderPath)
26 {
27 var baFolderPath = Path.Combine(tempFolderPath, "ba");
28 var extractFolderPath = Path.Combine(tempFolderPath, "extract");
29 var extractResult = BundleExtractor.ExtractBAContainer(null, bundleFilePath, baFolderPath, extractFolderPath);
30 extractResult.AssertSuccess();
31
32 var args = new string[] {
33 engineMode,
34 '"' + bundleFilePath + '"',
35 '"' + extractResult.GetBAFilePath(baFolderPath) + '"',
36 };
37 return RunProcessCaptureOutput(TestEngineFile, args);
38 }
39
40 private static TestEngineResult RunProcessCaptureOutput(string executablePath, string[] arguments = null, string workingFolder = null)
41 {
42 var startInfo = new ProcessStartInfo(executablePath)
43 {
44 Arguments = string.Join(' ', arguments),
45 CreateNoWindow = true,
46 RedirectStandardError = true,
47 RedirectStandardOutput = true,
48 UseShellExecute = false,
49 WorkingDirectory = workingFolder,
50 };
51
52 var exitCode = 0;
53 var output = new List<string>();
54
55 using (var process = Process.Start(startInfo))
56 {
57 process.OutputDataReceived += (s, e) => { if (e.Data != null) { output.Add(e.Data); } };
58 process.ErrorDataReceived += (s, e) => { if (e.Data != null) { output.Add(e.Data); } };
59
60 process.BeginErrorReadLine();
61 process.BeginOutputReadLine();
62
63 process.WaitForExit();
64 exitCode = process.ExitCode;
65 }
66
67 return new TestEngineResult
68 {
69 ExitCode = exitCode,
70 Output = output,
71 };
72 }
73 }
74}
diff --git a/src/ext/Bal/test/WixToolsetTest.ManagedHost/TestEngineResult.cs b/src/ext/Bal/test/WixToolsetTest.ManagedHost/TestEngineResult.cs
new file mode 100644
index 00000000..63f6f7f5
--- /dev/null
+++ b/src/ext/Bal/test/WixToolsetTest.ManagedHost/TestEngineResult.cs
@@ -0,0 +1,12 @@
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
7 public class TestEngineResult
8 {
9 public int ExitCode { get; set; }
10 public List<string> Output { get; set; }
11 }
12}
diff --git a/src/ext/Bal/test/WixToolsetTest.ManagedHost/WixToolsetTest.ManagedHost.csproj b/src/ext/Bal/test/WixToolsetTest.ManagedHost/WixToolsetTest.ManagedHost.csproj
new file mode 100644
index 00000000..38c8926c
--- /dev/null
+++ b/src/ext/Bal/test/WixToolsetTest.ManagedHost/WixToolsetTest.ManagedHost.csproj
@@ -0,0 +1,25 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- 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. -->
3
4<Project Sdk="Microsoft.NET.Sdk">
5 <PropertyGroup>
6 <TargetFramework>netcoreapp3.1</TargetFramework>
7 </PropertyGroup>
8
9 <ItemGroup>
10 <ProjectReference Include="..\examples\TestEngine\Example.TestEngine.vcxproj" />
11 </ItemGroup>
12
13 <ItemGroup>
14 <PackageReference Include="WixBuildTools.TestSupport" Version="4.0.*" />
15 <PackageReference Include="WixToolset.Core.Burn" Version="4.0.*" />
16 <PackageReference Include="WixToolset.Core.WindowsInstaller" Version="4.0.*" />
17 <PackageReference Include="WixToolset.Core.TestPackage" Version="4.0.*" />
18 </ItemGroup>
19
20 <ItemGroup>
21 <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.3.0" />
22 <PackageReference Include="xunit" Version="2.4.1" />
23 <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" PrivateAssets="All" />
24 </ItemGroup>
25</Project>