From a0d67c99eb5be2ce6e83f9a8a46d52b61d9871dc Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Wed, 3 Oct 2018 14:29:38 -0700 Subject: Add WixRunnerResult to improve success assertion --- src/WixToolset.Core.TestPackage/WixRunner.cs | 7 ++++++ src/WixToolset.Core.TestPackage/WixRunnerResult.cs | 22 +++++++++++++++++++ .../WixToolset.Core.TestPackage.csproj | 9 ++++++-- .../ExtensionFixture.cs | 13 ++++++----- .../WixToolsetTest.CoreIntegration/MsiFixture.cs | 25 +++++++++++----------- .../PreprocessorFixture.cs | 18 +++++++++------- .../WixiplFixture.cs | 19 +++++++++------- 7 files changed, 76 insertions(+), 37 deletions(-) create mode 100644 src/WixToolset.Core.TestPackage/WixRunnerResult.cs (limited to 'src') diff --git a/src/WixToolset.Core.TestPackage/WixRunner.cs b/src/WixToolset.Core.TestPackage/WixRunner.cs index ff5c3c41..d7487f6d 100644 --- a/src/WixToolset.Core.TestPackage/WixRunner.cs +++ b/src/WixToolset.Core.TestPackage/WixRunner.cs @@ -16,6 +16,13 @@ namespace WixToolset.Core.TestPackage return Execute(args, serviceProvider, out messages); } + public static WixRunnerResult Execute(string[] args) + { + var serviceProvider = new WixToolsetServiceProvider(); + var exitCode = Execute(args, serviceProvider, out var messages); + return new WixRunnerResult { ExitCode = exitCode, Messages = messages.ToArray() }; + } + public static int Execute(string[] args, IServiceProvider serviceProvider, out List messages) { var listener = new TestMessageListener(); diff --git a/src/WixToolset.Core.TestPackage/WixRunnerResult.cs b/src/WixToolset.Core.TestPackage/WixRunnerResult.cs new file mode 100644 index 00000000..45e31c2d --- /dev/null +++ b/src/WixToolset.Core.TestPackage/WixRunnerResult.cs @@ -0,0 +1,22 @@ +// 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. + +namespace WixToolset.Core.TestPackage +{ + using System; + using System.Linq; + using WixToolset.Data; + using Xunit; + + public class WixRunnerResult + { + public int ExitCode { get; set; } + + public Message[] Messages { get; set; } + + public WixRunnerResult AssertSuccess() + { + Assert.True(0 == this.ExitCode, $"MSBuild failed unexpectedly. Output:\r\n{String.Join("\r\n", this.Messages.Select(m => m.ToString()).ToArray())}"); + return this; + } + } +} diff --git a/src/WixToolset.Core.TestPackage/WixToolset.Core.TestPackage.csproj b/src/WixToolset.Core.TestPackage/WixToolset.Core.TestPackage.csproj index 3632b064..f02cade7 100644 --- a/src/WixToolset.Core.TestPackage/WixToolset.Core.TestPackage.csproj +++ b/src/WixToolset.Core.TestPackage/WixToolset.Core.TestPackage.csproj @@ -1,9 +1,9 @@ - + - netstandard2.0 + net461;netcoreapp2.1 Internal WiX Toolset Test Package embedded true @@ -37,4 +37,9 @@ + + + + + diff --git a/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs b/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs index e96c2ddd..8e4bcd54 100644 --- a/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/ExtensionFixture.cs @@ -7,7 +7,6 @@ namespace WixToolsetTest.CoreIntegration using System.Linq; using Example.Extension; using WixBuildTools.TestSupport; - using WixToolset.Core; using WixToolset.Core.TestPackage; using WixToolset.Data; using WixToolset.Data.Tuples; @@ -48,9 +47,9 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(intermediateFolder, @"bin\extest.msi") - }, out var messages); + }); - Assert.Equal(0, result); + result.AssertSuccess(); Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\extest.msi"))); Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\extest.wixpdb"))); @@ -91,9 +90,9 @@ namespace WixToolsetTest.CoreIntegration "-intermediateFolder", intermediateFolder, "-example", "test", "-o", Path.Combine(intermediateFolder, @"bin\extest.msi") - }, out var messages); + }); - Assert.Equal(0, result); + result.AssertSuccess(); var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"extest.wir")); var section = intermediate.Sections.Single(); @@ -106,8 +105,8 @@ namespace WixToolsetTest.CoreIntegration private static void Build(string[] args) { - var result = WixRunner.Execute(args, out var messages); - Assert.Equal(0, result); + var result = WixRunner.Execute(args) + .AssertSuccess(); } } } diff --git a/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs index 126f334d..0e73179b 100644 --- a/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/MsiFixture.cs @@ -32,8 +32,9 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(baseFolder, @"bin\test.msi") - }, out var messages); - Assert.Equal(0, result); + }); + + result.AssertSuccess(); Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); @@ -66,9 +67,9 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(intermediateFolder, @"bin\test.msi") - }, out var messages); + }); - Assert.Equal(0, result); + result.AssertSuccess(); Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\example.cab"))); @@ -102,9 +103,9 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(intermediateFolder, @"bin\test.msi") - }, out var messages); + }); - Assert.Equal(0, result); + result.AssertSuccess(); Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.msi"))); Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\cab1.cab"))); @@ -391,9 +392,9 @@ namespace WixToolsetTest.CoreIntegration "-intermediateFolder", intermediateFolder, "-o", Path.Combine(baseFolder, @"bin\test.msi"), "-i", bindpath, - }, out var messages); + }); - Assert.Equal(0, result); + result.AssertSuccess(); Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); @@ -427,9 +428,9 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(baseFolder, @"bin\test.msi") - }, out var messages); + }); - Assert.Equal(0, result); + result.AssertSuccess(); Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); @@ -465,9 +466,9 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(intermediateFolder, @"bin\test.msi") - }, out var messages); + }); - Assert.Equal(0, result); + result.AssertSuccess(); var pdb = Pdb.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb"), false); Assert.NotEmpty(pdb.Output.SubStorages); diff --git a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs index ebc713ed..f9a9fe83 100644 --- a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs @@ -32,10 +32,11 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(baseFolder, @"bin\test.msi") - }, out var messages); - Assert.Equal(0, result); + }); - var warnings = messages.Where(message => message.Id == 1118); + result.AssertSuccess(); + + var warnings = result.Messages.Where(message => message.Id == 1118); Assert.Single(warnings); } } @@ -59,8 +60,9 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(baseFolder, @"bin\test.msi") - }, out var messages); - Assert.Equal(0, result); + }); + + result.AssertSuccess(); } } @@ -83,10 +85,10 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(baseFolder, @"bin\test.msi") - }, out var messages); + }); - Assert.Equal(147, result); - Assert.StartsWith("Found a ", messages.Single().ToString()); + Assert.Equal(147, result.ExitCode); + Assert.StartsWith("Found a ", result.Messages.Single().ToString()); } } } diff --git a/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs b/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs index a51d831f..df6542e2 100644 --- a/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/WixiplFixture.cs @@ -29,8 +29,9 @@ namespace WixToolsetTest.CoreIntegration Path.Combine(folder, "PackageComponents.wxs"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(intermediateFolder, @"test.wixipl") - }, out var messagesCompile); - Assert.Equal(0, result); + }); + + result.AssertSuccess(); result = WixRunner.Execute(new[] { @@ -40,8 +41,9 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(baseFolder, @"bin\test.msi") - }, out var messagesBind); - Assert.Equal(0, result); + }); + + result.AssertSuccess(); var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"obj\test.wir")); var section = intermediate.Sections.Single(); @@ -69,8 +71,9 @@ namespace WixToolsetTest.CoreIntegration Path.Combine(folder, "PackageComponents.wxs"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(intermediateFolder, @"test.wixipl") - }, out var messagesCompile); - Assert.Equal(0, result); + }); + + result.AssertSuccess(); result = WixRunner.Execute(new[] { @@ -81,8 +84,8 @@ namespace WixToolsetTest.CoreIntegration "-bindpath", Path.Combine(folder, "data"), "-intermediateFolder", intermediateFolder, "-o", Path.Combine(baseFolder, @"bin\test.msi") - }, out var messagesBind); - Assert.Equal((int)ErrorMessages.Ids.WixiplSourceFileIsExclusive, result); + }); + Assert.Equal((int)ErrorMessages.Ids.WixiplSourceFileIsExclusive, result.ExitCode); } } } -- cgit v1.2.3-55-g6feb