Add WixRunnerResult to improve success assertion
Rob Mensching committed
Oct 3, 2018 at 14:29 UTC
a0d67c99eb5be2ce6e83f9a8a46d52b61d9871dc
7 files changed
+76
-37
src/WixToolset.Core.TestPackage/WixRunner.cs
+7
@@ -16,6 +16,13 @@ namespace WixToolset.Core.TestPackage
16
return Execute(args, serviceProvider, out messages);
17
}
18
19
+ public static WixRunnerResult Execute(string[] args)
20
+ {
21
+ var serviceProvider = new WixToolsetServiceProvider();
22
+ var exitCode = Execute(args, serviceProvider, out var messages);
23
+ return new WixRunnerResult { ExitCode = exitCode, Messages = messages.ToArray() };
24
+ }
25
+
26
public static int Execute(string[] args, IServiceProvider serviceProvider, out List<Message> messages)
27
{
28
var listener = new TestMessageListener();
src/WixToolset.Core.TestPackage/WixRunnerResult.cs
new
+22
@@ -0,0 +1,22 @@
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
+
3
+namespace WixToolset.Core.TestPackage
4
+{
5
+ using System;
6
+ using System.Linq;
7
+ using WixToolset.Data;
8
+ using Xunit;
9
+
10
+ public class WixRunnerResult
11
+ {
12
+ public int ExitCode { get; set; }
13
+
14
+ public Message[] Messages { get; set; }
15
+
16
+ public WixRunnerResult AssertSuccess()
17
+ {
18
+ Assert.True(0 == this.ExitCode, $"MSBuild failed unexpectedly. Output:\r\n{String.Join("\r\n", this.Messages.Select(m => m.ToString()).ToArray())}");
19
+ return this;
20
+ }
21
+ }
22
+}
src/WixToolset.Core.TestPackage/WixToolset.Core.TestPackage.csproj
+7
-2
@@ -1,9 +1,9 @@
1
-<?xml version="1.0" encoding="utf-8"?>
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>netstandard2.0</TargetFramework>
6
+ <TargetFrameworks>net461;netcoreapp2.1</TargetFrameworks>
7
<Description>Internal WiX Toolset Test Package</Description>
8
<DebugType>embedded</DebugType>
9
<PublishRepositoryUrl>true</PublishRepositoryUrl>
@@ -37,4 +37,9 @@
37
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta-63102-01" PrivateAssets="All"/>
38
<PackageReference Include="Nerdbank.GitVersioning" Version="2.1.65" PrivateAssets="All" />
39
</ItemGroup>
40
+
41
+ <ItemGroup>
42
+ <PackageReference Include="xunit" Version="2.4.0" />
43
+ </ItemGroup>
44
+
45
</Project>
src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs
+6
-7
@@ -7,7 +7,6 @@ namespace WixToolsetTest.CoreIntegration
7
using System.Linq;
8
using Example.Extension;
9
using WixBuildTools.TestSupport;
10
- using WixToolset.Core;
10
using WixToolset.Core.TestPackage;
11
using WixToolset.Data;
12
using WixToolset.Data.Tuples;
@@ -48,9 +47,9 @@ namespace WixToolsetTest.CoreIntegration
47
"-bindpath", Path.Combine(folder, "data"),
48
"-intermediateFolder", intermediateFolder,
49
"-o", Path.Combine(intermediateFolder, @"bin\extest.msi")
51
- }, out var messages);
50
+ });
51
53
- Assert.Equal(0, result);
52
+ result.AssertSuccess();
53
54
Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\extest.msi")));
55
Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\extest.wixpdb")));
@@ -91,9 +90,9 @@ namespace WixToolsetTest.CoreIntegration
90
"-intermediateFolder", intermediateFolder,
91
"-example", "test",
92
"-o", Path.Combine(intermediateFolder, @"bin\extest.msi")
94
- }, out var messages);
93
+ });
94
96
- Assert.Equal(0, result);
95
+ result.AssertSuccess();
96
97
var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"extest.wir"));
98
var section = intermediate.Sections.Single();
@@ -106,8 +105,8 @@ namespace WixToolsetTest.CoreIntegration
105
106
private static void Build(string[] args)
107
{
109
- var result = WixRunner.Execute(args, out var messages);
110
- Assert.Equal(0, result);
108
+ var result = WixRunner.Execute(args)
109
+ .AssertSuccess();
110
}
111
}
112
}
src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs
+13
-12
@@ -32,8 +32,9 @@ namespace WixToolsetTest.CoreIntegration
32
"-bindpath", Path.Combine(folder, "data"),
33
"-intermediateFolder", intermediateFolder,
34
"-o", Path.Combine(baseFolder, @"bin\test.msi")
35
- }, out var messages);
36
- Assert.Equal(0, result);
35
+ });
36
+
37
+ result.AssertSuccess();
38
39
Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi")));
40
Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb")));
@@ -66,9 +67,9 @@ namespace WixToolsetTest.CoreIntegration
67
"-bindpath", Path.Combine(folder, "data"),
68
"-intermediateFolder", intermediateFolder,
69
"-o", Path.Combine(intermediateFolder, @"bin\test.msi")
69
- }, out var messages);
70
+ });
71
71
- Assert.Equal(0, result);
72
+ result.AssertSuccess();
73
74
Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi")));
75
Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\example.cab")));
@@ -102,9 +103,9 @@ namespace WixToolsetTest.CoreIntegration
103
"-bindpath", Path.Combine(folder, "data"),
104
"-intermediateFolder", intermediateFolder,
105
"-o", Path.Combine(intermediateFolder, @"bin\test.msi")
105
- }, out var messages);
106
+ });
107
107
- Assert.Equal(0, result);
108
+ result.AssertSuccess();
109
110
Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi")));
111
Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab")));
@@ -391,9 +392,9 @@ namespace WixToolsetTest.CoreIntegration
392
"-intermediateFolder", intermediateFolder,
393
"-o", Path.Combine(baseFolder, @"bin\test.msi"),
394
"-i", bindpath,
394
- }, out var messages);
395
+ });
396
396
- Assert.Equal(0, result);
397
+ result.AssertSuccess();
398
399
Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi")));
400
Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb")));
@@ -427,9 +428,9 @@ namespace WixToolsetTest.CoreIntegration
428
"-bindpath", Path.Combine(folder, "data"),
429
"-intermediateFolder", intermediateFolder,
430
"-o", Path.Combine(baseFolder, @"bin\test.msi")
430
- }, out var messages);
431
+ });
432
432
- Assert.Equal(0, result);
433
+ result.AssertSuccess();
434
435
Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi")));
436
Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb")));
@@ -465,9 +466,9 @@ namespace WixToolsetTest.CoreIntegration
466
"-bindpath", Path.Combine(folder, "data"),
467
"-intermediateFolder", intermediateFolder,
468
"-o", Path.Combine(intermediateFolder, @"bin\test.msi")
468
- }, out var messages);
469
+ });
470
470
- Assert.Equal(0, result);
471
+ result.AssertSuccess();
472
473
var pdb = Pdb.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"), false);
474
Assert.NotEmpty(pdb.Output.SubStorages);
src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
+10
-8
@@ -32,10 +32,11 @@ namespace WixToolsetTest.CoreIntegration
32
"-bindpath", Path.Combine(folder, "data"),
33
"-intermediateFolder", intermediateFolder,
34
"-o", Path.Combine(baseFolder, @"bin\test.msi")
35
- }, out var messages);
36
- Assert.Equal(0, result);
35
+ });
36
38
- var warnings = messages.Where(message => message.Id == 1118);
37
+ result.AssertSuccess();
38
+
39
+ var warnings = result.Messages.Where(message => message.Id == 1118);
40
Assert.Single(warnings);
41
}
42
}
@@ -59,8 +60,9 @@ namespace WixToolsetTest.CoreIntegration
60
"-bindpath", Path.Combine(folder, "data"),
61
"-intermediateFolder", intermediateFolder,
62
"-o", Path.Combine(baseFolder, @"bin\test.msi")
62
- }, out var messages);
63
- Assert.Equal(0, result);
63
+ });
64
+
65
+ result.AssertSuccess();
66
}
67
}
68
@@ -83,10 +85,10 @@ namespace WixToolsetTest.CoreIntegration
85
"-bindpath", Path.Combine(folder, "data"),
86
"-intermediateFolder", intermediateFolder,
87
"-o", Path.Combine(baseFolder, @"bin\test.msi")
86
- }, out var messages);
88
+ });
89
88
- Assert.Equal(147, result);
89
- Assert.StartsWith("Found a <?if?>", messages.Single().ToString());
90
+ Assert.Equal(147, result.ExitCode);
91
+ Assert.StartsWith("Found a <?if?>", result.Messages.Single().ToString());
92
}
93
}
94
}
src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs
+11
-8
@@ -29,8 +29,9 @@ namespace WixToolsetTest.CoreIntegration
29
Path.Combine(folder, "PackageComponents.wxs"),
30
"-intermediateFolder", intermediateFolder,
31
"-o", Path.Combine(intermediateFolder, @"test.wixipl")
32
- }, out var messagesCompile);
33
- Assert.Equal(0, result);
32
+ });
33
+
34
+ result.AssertSuccess();
35
36
result = WixRunner.Execute(new[]
37
{
@@ -40,8 +41,9 @@ namespace WixToolsetTest.CoreIntegration
41
"-bindpath", Path.Combine(folder, "data"),
42
"-intermediateFolder", intermediateFolder,
43
"-o", Path.Combine(baseFolder, @"bin\test.msi")
43
- }, out var messagesBind);
44
- Assert.Equal(0, result);
44
+ });
45
+
46
+ result.AssertSuccess();
47
48
var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"obj\test.wir"));
49
var section = intermediate.Sections.Single();
@@ -69,8 +71,9 @@ namespace WixToolsetTest.CoreIntegration
71
Path.Combine(folder, "PackageComponents.wxs"),
72
"-intermediateFolder", intermediateFolder,
73
"-o", Path.Combine(intermediateFolder, @"test.wixipl")
72
- }, out var messagesCompile);
73
- Assert.Equal(0, result);
74
+ });
75
+
76
+ result.AssertSuccess();
77
78
result = WixRunner.Execute(new[]
79
{
@@ -81,8 +84,8 @@ namespace WixToolsetTest.CoreIntegration
84
"-bindpath", Path.Combine(folder, "data"),
85
"-intermediateFolder", intermediateFolder,
86
"-o", Path.Combine(baseFolder, @"bin\test.msi")
84
- }, out var messagesBind);
85
- Assert.Equal((int)ErrorMessages.Ids.WixiplSourceFileIsExclusive, result);
87
+ });
88
+ Assert.Equal((int)ErrorMessages.Ids.WixiplSourceFileIsExclusive, result.ExitCode);
89
}
90
}
91
}