From 504f4dc9d73af705c2509f65d910bb9b2e266ad8 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Tue, 8 Feb 2022 12:15:22 -0800 Subject: Centralize all validating tests in a single fixture This should prevent validation from running in parallel. --- .../ModuleFixture.cs | 153 ------------------- .../ValidationFixture.cs | 165 ++++++++++++++++++++- src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs | 4 +- 3 files changed, 163 insertions(+), 159 deletions(-) diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/ModuleFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/ModuleFixture.cs index 9c271ab4..234aec78 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/ModuleFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/ModuleFixture.cs @@ -14,92 +14,6 @@ namespace WixToolsetTest.CoreIntegration public class ModuleFixture { - [Fact(Skip = "Flaky")] - public void CanBuildAndValidateSimpleModule() - { - var folder = TestData.Get(@"TestData\SimpleModule"); - - using (var fs = new DisposableFileSystem()) - { - var intermediateFolder = fs.GetFolder(); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "Module.wxs"), - "-loc", Path.Combine(folder, "Module.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(intermediateFolder, @"bin\test.msm") - }); - - result.AssertSuccess(); - - var msmPath = Path.Combine(intermediateFolder, @"bin\test.msm"); - Assert.True(File.Exists(msmPath)); - Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); - - var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); - var section = intermediate.Sections.Single(); - - var dirSymbols = section.Symbols.OfType().OrderBy(d => d.Id.Id).ToList(); - WixAssert.CompareLineByLine(new[] - { - "MergeRedirectFolder\tTARGETDIR\t.", - "NotTheMergeRedirectFolder\tTARGETDIR\t.", - "TARGETDIR\t\tSourceDir" - }, dirSymbols.Select(d => String.Join("\t", d.Id.Id, d.ParentDirectoryRef, d.Name)).ToArray()); - - var fileSymbols = section.Symbols.OfType().OrderBy(d => d.Id.Id).ToList(); - WixAssert.CompareLineByLine(new[] - { - $"File1\t{Path.Combine(folder, @"data\test.txt")}\ttest.txt", - $"File2\t{Path.Combine(folder, @"data\test.txt")}\ttest.txt", - }, fileSymbols.Select(fileSymbol => String.Join("\t", fileSymbol.Id.Id, fileSymbol[FileSymbolFields.Source].AsPath().Path, fileSymbol[FileSymbolFields.Source].PreviousValue.AsPath().Path)).ToArray()); - - var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); - var fileRows = data.Tables["File"].Rows; - WixAssert.CompareLineByLine(new[] - { - "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE", - "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE", - }, fileRows.Select(r => r.FieldAsString(0)).ToArray()); - - var cabPath = Path.Combine(intermediateFolder, "msm-test.cab"); - Query.ExtractStream(msmPath, "MergeModule.CABinet", cabPath); - var files = Query.GetCabinetFiles(cabPath); - WixAssert.CompareLineByLine(new[] - { - "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE", - "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE", - }, files.Select(f => Path.Combine(f.Path, f.Name)).ToArray()); - - var rows = Query.QueryDatabase(msmPath, new[] { "_SummaryInformation" }); - WixAssert.CompareLineByLine(new[] - { - "_SummaryInformation:Title\tMerge Module", - "_SummaryInformation:Subject\tMergeModule1", - "_SummaryInformation:Author\tExample Company", - "_SummaryInformation:Keywords\tMergeModule, MSI, database", - "_SummaryInformation:Comments\tThis merge module contains the logic and data required to install MergeModule1.", - "_SummaryInformation:Template\tIntel;1033", - "_SummaryInformation:CodePage\t1252", - "_SummaryInformation:PageCount\t200", - "_SummaryInformation:WordCount\t0", - "_SummaryInformation:CharacterCount\t0", - "_SummaryInformation:Security\t2", - }, rows); - - var validationResult = WixRunner.Execute(new[] - { - "msi", "validate", - "-intermediateFolder", intermediateFolder, - msmPath - }); - validationResult.AssertSuccess(); - } - } - [Fact] public void CanSuppressModularization() { @@ -133,72 +47,5 @@ namespace WixToolsetTest.CoreIntegration }, rows); } } - - [Fact(Skip = "Flaky")] - public void CanMergeModule() - { - var msmFolder = TestData.Get(@"TestData\SimpleModule"); - var folder = TestData.Get(@"TestData\SimpleMerge"); - - using (var fs = new DisposableFileSystem()) - { - var intermediateFolder = fs.GetFolder(); - var msiPath = Path.Combine(intermediateFolder, @"bin\test.msi"); - var cabPath = Path.Combine(intermediateFolder, @"bin\cab1.cab"); - - var msmResult = WixRunner.Execute(new[] - { - "build", - Path.Combine(msmFolder, "Module.wxs"), - "-loc", Path.Combine(msmFolder, "Module.en-us.wxl"), - "-bindpath", Path.Combine(msmFolder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(intermediateFolder, "bin", "test", "test.msm") - }); - - msmResult.AssertSuccess(); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "Package.wxs"), - "-loc", Path.Combine(folder, "Package.en-us.wxl"), - "-bindpath", Path.Combine(intermediateFolder, "bin", "test"), - "-intermediateFolder", intermediateFolder, - "-o", msiPath - }); - - result.AssertSuccess(); - - var validationResult = WixRunner.Execute(new[] - { - "msi", "validate", - "-intermediateFolder", intermediateFolder, - msiPath - }); - validationResult.AssertSuccess(); - - var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); - var section = intermediate.Sections.Single(); - Assert.Empty(section.Symbols.OfType()); - - var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); - Assert.Empty(data.Tables["File"].Rows); - - var results = Query.QueryDatabase(msiPath, new[] { "File" }); - WixAssert.CompareLineByLine(new[] - { - "File:File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tModuleComponent1.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tfile1.txt\t17\t\t\t512\t1", - "File:File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tModuleComponent2.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tfile2.txt\t17\t\t\t512\t2", - }, results); - - var files = Query.GetCabinetFiles(cabPath); - WixAssert.CompareLineByLine(new[] - { - "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE", - "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE" - }, files.Select(f => f.Name).ToArray()); - } - } } } diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/ValidationFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/ValidationFixture.cs index b94f0255..69965c0d 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/ValidationFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/ValidationFixture.cs @@ -2,15 +2,172 @@ namespace WixToolsetTest.CoreIntegration { + using System; using System.IO; using System.Linq; using WixBuildTools.TestSupport; using WixToolset.Core.TestPackage; + using WixToolset.Data; + using WixToolset.Data.Symbols; + using WixToolset.Data.WindowsInstaller; using Xunit; public class ValidationFixture { - [Fact(Skip = "Flaky")] + [Fact] + public void CanBuildAndValidateSimpleModule() + { + var folder = TestData.Get(@"TestData\SimpleModule"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Module.wxs"), + "-loc", Path.Combine(folder, "Module.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(intermediateFolder, @"bin\test.msm") + }); + + result.AssertSuccess(); + + var msmPath = Path.Combine(intermediateFolder, @"bin\test.msm"); + Assert.True(File.Exists(msmPath)); + Assert.True(File.Exists(Path.Combine(intermediateFolder, @"bin\test.wixpdb"))); + + var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); + var section = intermediate.Sections.Single(); + + var dirSymbols = section.Symbols.OfType().OrderBy(d => d.Id.Id).ToList(); + WixAssert.CompareLineByLine(new[] + { + "MergeRedirectFolder\tTARGETDIR\t.", + "NotTheMergeRedirectFolder\tTARGETDIR\t.", + "TARGETDIR\t\tSourceDir" + }, dirSymbols.Select(d => String.Join("\t", d.Id.Id, d.ParentDirectoryRef, d.Name)).ToArray()); + + var fileSymbols = section.Symbols.OfType().OrderBy(d => d.Id.Id).ToList(); + WixAssert.CompareLineByLine(new[] + { + $"File1\t{Path.Combine(folder, @"data\test.txt")}\ttest.txt", + $"File2\t{Path.Combine(folder, @"data\test.txt")}\ttest.txt", + }, fileSymbols.Select(fileSymbol => String.Join("\t", fileSymbol.Id.Id, fileSymbol[FileSymbolFields.Source].AsPath().Path, fileSymbol[FileSymbolFields.Source].PreviousValue.AsPath().Path)).ToArray()); + + var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); + var fileRows = data.Tables["File"].Rows; + WixAssert.CompareLineByLine(new[] + { + "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE", + "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE", + }, fileRows.Select(r => r.FieldAsString(0)).ToArray()); + + var cabPath = Path.Combine(intermediateFolder, "msm-test.cab"); + Query.ExtractStream(msmPath, "MergeModule.CABinet", cabPath); + var files = Query.GetCabinetFiles(cabPath); + WixAssert.CompareLineByLine(new[] + { + "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE", + "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE", + }, files.Select(f => Path.Combine(f.Path, f.Name)).ToArray()); + + var rows = Query.QueryDatabase(msmPath, new[] { "_SummaryInformation" }); + WixAssert.CompareLineByLine(new[] + { + "_SummaryInformation:Title\tMerge Module", + "_SummaryInformation:Subject\tMergeModule1", + "_SummaryInformation:Author\tExample Company", + "_SummaryInformation:Keywords\tMergeModule, MSI, database", + "_SummaryInformation:Comments\tThis merge module contains the logic and data required to install MergeModule1.", + "_SummaryInformation:Template\tIntel;1033", + "_SummaryInformation:CodePage\t1252", + "_SummaryInformation:PageCount\t200", + "_SummaryInformation:WordCount\t0", + "_SummaryInformation:CharacterCount\t0", + "_SummaryInformation:Security\t2", + }, rows); + + var validationResult = WixRunner.Execute(new[] + { + "msi", "validate", + "-intermediateFolder", intermediateFolder, + msmPath + }); + validationResult.AssertSuccess(); + } + } + + [Fact] + public void CanMergeModuleAndValidate() + { + var msmFolder = TestData.Get(@"TestData\SimpleModule"); + var folder = TestData.Get(@"TestData\SimpleMerge"); + + using (var fs = new DisposableFileSystem()) + { + var intermediateFolder = fs.GetFolder(); + var msiPath = Path.Combine(intermediateFolder, @"bin\test.msi"); + var cabPath = Path.Combine(intermediateFolder, @"bin\cab1.cab"); + + var msmResult = WixRunner.Execute(new[] + { + "build", + Path.Combine(msmFolder, "Module.wxs"), + "-loc", Path.Combine(msmFolder, "Module.en-us.wxl"), + "-bindpath", Path.Combine(msmFolder, "data"), + "-intermediateFolder", intermediateFolder, + "-o", Path.Combine(intermediateFolder, "bin", "test", "test.msm") + }); + + msmResult.AssertSuccess(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(intermediateFolder, "bin", "test"), + "-intermediateFolder", intermediateFolder, + "-o", msiPath + }); + + result.AssertSuccess(); + + var validationResult = WixRunner.Execute(new[] + { + "msi", "validate", + "-intermediateFolder", intermediateFolder, + msiPath + }); + validationResult.AssertSuccess(); + + var intermediate = Intermediate.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); + var section = intermediate.Sections.Single(); + Assert.Empty(section.Symbols.OfType()); + + var data = WindowsInstallerData.Load(Path.Combine(intermediateFolder, @"bin\test.wixpdb")); + Assert.Empty(data.Tables["File"].Rows); + + var results = Query.QueryDatabase(msiPath, new[] { "File" }); + WixAssert.CompareLineByLine(new[] + { + "File:File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tModuleComponent1.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tfile1.txt\t17\t\t\t512\t1", + "File:File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tModuleComponent2.243FB739_4D05_472F_9CFB_EF6B1017B6DE\tfile2.txt\t17\t\t\t512\t2", + }, results); + + var files = Query.GetCabinetFiles(cabPath); + WixAssert.CompareLineByLine(new[] + { + "File1.243FB739_4D05_472F_9CFB_EF6B1017B6DE", + "File2.243FB739_4D05_472F_9CFB_EF6B1017B6DE" + }, files.Select(f => f.Name).ToArray()); + } + } + + [Fact] public void CanValidateMsiWithIceIssues() { var folder = TestData.Get(@"TestData"); @@ -19,7 +176,7 @@ namespace WixToolsetTest.CoreIntegration { var baseFolder = fs.GetFolder(); var intermediateFolder = Path.Combine(baseFolder, "obj"); - var msiPath = Path.Combine(baseFolder, @"bin", "test.msi"); + var msiPath = Path.Combine(baseFolder, @"bin", "CanValidateMsiWithIceIssues.msi"); var result = WixRunner.Execute(new[] { @@ -50,7 +207,7 @@ namespace WixToolsetTest.CoreIntegration } } - [Fact(Skip = "Flaky")] + [Fact] public void CanValidateMsiSuppressIceError() { var folder = TestData.Get(@"TestData"); @@ -90,7 +247,7 @@ namespace WixToolsetTest.CoreIntegration } } - [Fact(Skip = "Flaky")] + [Fact] public void CanValidateMsiWithWarningsAsErrors() { var folder = TestData.Get(@"TestData"); diff --git a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs index c94513b9..3b113242 100644 --- a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs +++ b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs @@ -193,7 +193,7 @@ namespace WixToolsetTest.Sdk } } - [Theory(Skip = "Flaky")] + [Theory] [InlineData(BuildSystem.DotNetCoreSdk)] [InlineData(BuildSystem.MSBuild)] [InlineData(BuildSystem.MSBuild64)] @@ -320,7 +320,7 @@ namespace WixToolsetTest.Sdk } } - [Theory(Skip = "Flaky")] + [Theory] [InlineData(BuildSystem.DotNetCoreSdk)] [InlineData(BuildSystem.MSBuild)] [InlineData(BuildSystem.MSBuild64)] -- cgit v1.2.3-55-g6feb