From fe77cae987ea2bfc43d2ffec660bf773e922709d Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Tue, 17 Mar 2020 21:28:12 -0400 Subject: Partial WixPdbs stop the backend before binding. --- .../WixToolsetTest.BuildTasks/MsbuildFixture.cs | 60 ++++++++++++++++++++++ .../WixBuildTaskFixture.cs | 8 +-- 2 files changed, 65 insertions(+), 3 deletions(-) (limited to 'src/test') diff --git a/src/test/WixToolsetTest.BuildTasks/MsbuildFixture.cs b/src/test/WixToolsetTest.BuildTasks/MsbuildFixture.cs index 9f761c32..c52bb22d 100644 --- a/src/test/WixToolsetTest.BuildTasks/MsbuildFixture.cs +++ b/src/test/WixToolsetTest.BuildTasks/MsbuildFixture.cs @@ -51,6 +51,66 @@ namespace WixToolsetTest.BuildTasks } } + [Fact] + public void CanBuildWithDefaultAndExplicitlyFullWixpdbs() + { + var expectedOutputs = new[] + { + @"bin\en-US\cab1.cab", + @"bin\en-US\MsiPackage.msi", + @"bin\en-US\MsiPackage.wixpdb", + }; + + this.AssertWixpdb(null, expectedOutputs); + this.AssertWixpdb("Full", expectedOutputs); + } + + [Fact] + public void CanBuildWithPartialWixpdb() + { + this.AssertWixpdb("partial", new[] + { + @"bin\en-US\MsiPackage.wixpdb", + }); + } + + [Fact] + public void CanBuildWithNoWixpdb() + { + this.AssertWixpdb("NONE", new[] + { + @"bin\en-US\cab1.cab", + @"bin\en-US\MsiPackage.msi", + }); + } + + private void AssertWixpdb(string wixpdbType, string[] expectedOutputFiles) + { + var projectPath = TestData.Get(@"TestData\SimpleMsiPackage\MsiPackage\MsiPackage.wixproj"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var binFolder = Path.Combine(baseFolder, @"bin\"); + var intermediateFolder = Path.Combine(baseFolder, @"obj\"); + + var result = MsbuildRunner.Execute(projectPath, new[] + { + wixpdbType == null ? String.Empty : $"-p:WixPdbType={wixpdbType}", + $"-p:WixTargetsPath={WixTargetsPath}", + $"-p:IntermediateOutputPath={intermediateFolder}", + $"-p:OutputPath={binFolder}", + }); + result.AssertSuccess(); + + var paths = Directory.EnumerateFiles(binFolder, @"*.*", SearchOption.AllDirectories) + .Select(s => s.Substring(baseFolder.Length + 1)) + .OrderBy(s => s) + .ToArray(); + Assert.Equal(expectedOutputFiles, paths); + } + } + [Fact] public void CanBuild64BitMsiPackage() { diff --git a/src/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs b/src/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs index 41cf8e64..d572a91a 100644 --- a/src/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs +++ b/src/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs @@ -22,7 +22,7 @@ namespace WixToolsetTest.BuildTasks { var baseFolder = fs.GetFolder(); var intermediateFolder = Path.Combine(baseFolder, "obj"); - + var pdbPath = Path.Combine(baseFolder, @"bin\testpackage.wixpdb"); var engine = new FakeBuildEngine(); var task = new DoIt @@ -43,16 +43,18 @@ namespace WixToolsetTest.BuildTasks }, IntermediateDirectory = new TaskItem(intermediateFolder), OutputFile = new TaskItem(Path.Combine(baseFolder, @"bin\test.msi")), + PdbType = "Full", + PdbFile = new TaskItem(pdbPath), }; var result = task.Execute(); Assert.True(result, $"MSBuild task failed unexpectedly. Output:\r\n{engine.Output}"); Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.msi"))); - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); + Assert.True(File.Exists(pdbPath)); Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\cab1.cab"))); - var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb")); + var intermediate = Intermediate.Load(pdbPath); var section = intermediate.Sections.Single(); var fileTuple = section.Tuples.OfType().Single(); -- cgit v1.2.3-55-g6feb