@joebigelow / wix / commits / a0d67c99

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 }