From 8cf0427984a88b0b3ddfb2061e5be721afffe82e Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 22 Apr 2021 17:19:56 -0700 Subject: Move Core into wix --- .../BundleFixture.cs | 478 --------------------- 1 file changed, 478 deletions(-) delete mode 100644 src/test/WixToolsetTest.CoreIntegration/BundleFixture.cs (limited to 'src/test/WixToolsetTest.CoreIntegration/BundleFixture.cs') diff --git a/src/test/WixToolsetTest.CoreIntegration/BundleFixture.cs b/src/test/WixToolsetTest.CoreIntegration/BundleFixture.cs deleted file mode 100644 index ab644080..00000000 --- a/src/test/WixToolsetTest.CoreIntegration/BundleFixture.cs +++ /dev/null @@ -1,478 +0,0 @@ -// 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 WixToolsetTest.CoreIntegration -{ - using System; - using System.Collections.Generic; - using System.IO; - using System.Linq; - using System.Text; - using System.Xml; - using Example.Extension; - using WixBuildTools.TestSupport; - using WixToolset.Core; - using WixToolset.Core.Burn; - using WixToolset.Core.TestPackage; - using WixToolset.Data; - using WixToolset.Data.Burn; - using WixToolset.Data.Symbols; - using WixToolset.Dtf.Resources; - using Xunit; - - public class BundleFixture - { - [Fact] - public void CanBuildMultiFileBundle() - { - var folder = TestData.Get(@"TestData\SimpleBundle"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "MultiFileBootstrapperApplication.wxs"), - Path.Combine(folder, "MultiFileBundle.wxs"), - "-loc", Path.Combine(folder, "Bundle.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(baseFolder, @"bin\test.exe") - }); - - result.AssertSuccess(); - - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.exe"))); - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); - } - } - - [Fact] - public void CanBuildSimpleBundle() - { - var folder = TestData.Get(@"TestData\SimpleBundle"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - var exePath = Path.Combine(baseFolder, @"bin\test.exe"); - var pdbPath = Path.Combine(baseFolder, @"bin\test.wixpdb"); - var baFolderPath = Path.Combine(baseFolder, "ba"); - var extractFolderPath = Path.Combine(baseFolder, "extract"); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "Bundle.wxs"), - "-loc", Path.Combine(folder, "Bundle.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", exePath, - }); - - result.AssertSuccess(); - Assert.Empty(result.Messages.Where(m => m.Level == MessageLevel.Warning)); - - Assert.True(File.Exists(exePath)); - Assert.True(File.Exists(pdbPath)); - - using (var wixOutput = WixOutput.Read(pdbPath)) - { - - var intermediate = Intermediate.Load(wixOutput); - var section = intermediate.Sections.Single(); - - var bundleSymbol = section.Symbols.OfType().Single(); - Assert.Equal("1.0.0.0", bundleSymbol.Version); - - var previousVersion = bundleSymbol.Fields[(int)WixBundleSymbolFields.Version].PreviousValue; - Assert.Equal("!(bind.packageVersion.test.msi)", previousVersion.AsString()); - - var msiSymbol = section.Symbols.OfType().Single(); - Assert.Equal("test.msi", msiSymbol.Id.Id); - - var extractResult = BundleExtractor.ExtractBAContainer(null, exePath, baFolderPath, extractFolderPath); - extractResult.AssertSuccess(); - - var burnManifestData = wixOutput.GetData(BurnConstants.BurnManifestWixOutputStreamName); - var extractedBurnManifestData = File.ReadAllText(Path.Combine(baFolderPath, "manifest.xml"), Encoding.UTF8); - Assert.Equal(extractedBurnManifestData, burnManifestData); - - var baManifestData = wixOutput.GetData(BurnConstants.BootstrapperApplicationDataWixOutputStreamName); - var extractedBaManifestData = File.ReadAllText(Path.Combine(baFolderPath, "BootstrapperApplicationData.xml"), Encoding.UTF8); - Assert.Equal(extractedBaManifestData, baManifestData); - - var bextManifestData = wixOutput.GetData(BurnConstants.BundleExtensionDataWixOutputStreamName); - var extractedBextManifestData = File.ReadAllText(Path.Combine(baFolderPath, "BundleExtensionData.xml"), Encoding.UTF8); - Assert.Equal(extractedBextManifestData, bextManifestData); - - var logElements = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Log"); - var logElement = (XmlNode)Assert.Single(logElements); - Assert.Equal("", logElement.GetTestXml()); - - var registrationElements = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Registration"); - var registrationElement = (XmlNode)Assert.Single(registrationElements); - Assert.Equal($"" + - "" + - "", registrationElement.GetTestXml()); - - var msiPayloads = extractResult.SelectManifestNodes("/burn:BurnManifest/burn:Payload[@Id='test.msi']"); - var msiPayload = (XmlNode)Assert.Single(msiPayloads); - Assert.Equal("", - msiPayload.GetTestXml(new Dictionary>() { { "Payload", new List { "FileSize", "Hash" } } })); - } - - var manifestResource = new Resource(ResourceType.Manifest, "#1", 1033); - manifestResource.Load(exePath); - var actualManifestData = Encoding.UTF8.GetString(manifestResource.Data); - Assert.Equal("" + - "" + - "" + - "~TestBundle" + - "" + - "" + - "" + - "true/pmPerMonitorV2, PerMonitor" + - "", actualManifestData); - } - } - - [Fact] - public void CanBuildX64Bundle() - { - var folder = TestData.Get(@"TestData\SimpleBundle"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - var exePath = Path.Combine(baseFolder, @"bin\test.exe"); - var pdbPath = Path.Combine(baseFolder, @"bin\test.wixpdb"); - var baFolderPath = Path.Combine(baseFolder, "ba"); - var extractFolderPath = Path.Combine(baseFolder, "extract"); - - var result = WixRunner.Execute(false, new[] // TODO: go back to elevating warnings as errors. - { - "build", - "-arch", "x64", - Path.Combine(folder, "Bundle.wxs"), - "-loc", Path.Combine(folder, "Bundle.en-us.wxl"), - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", exePath, - }); - - result.AssertSuccess(); - var warning = Assert.Single(result.Messages.Where(m => m.Level == MessageLevel.Warning)); - Assert.Equal((int)WarningMessages.Ids.ExperimentalBundlePlatform, warning.Id); - - Assert.True(File.Exists(exePath)); - Assert.True(File.Exists(pdbPath)); - - var manifestResource = new Resource(ResourceType.Manifest, "#1", 1033); - manifestResource.Load(exePath); - var actualManifestData = Encoding.UTF8.GetString(manifestResource.Data); - Assert.Equal("" + - "" + - "" + - "~TestBundle" + - "" + - "" + - "" + - "true/pmPerMonitorV2, PerMonitor" + - "", actualManifestData); - } - } - - [Fact] - public void CanBuildSimpleBundleUsingExtensionBA() - { - var extensionPath = Path.GetFullPath(new Uri(typeof(ExampleExtensionFactory).Assembly.CodeBase).LocalPath); - var folder = TestData.Get(@"TestData\SimpleBundle"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "MultiFileBundle.wxs"), - "-loc", Path.Combine(folder, "Bundle.en-us.wxl"), - "-ext", extensionPath, - "-bindpath", Path.Combine(folder, "data"), - "-intermediateFolder", intermediateFolder, - "-o", Path.Combine(baseFolder, @"bin\test.exe") - }); - - result.AssertSuccess(); - - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.exe"))); - Assert.True(File.Exists(Path.Combine(baseFolder, @"bin\test.wixpdb"))); - } - } - - [Fact] - public void CanBuildSingleExeBundle() - { - var folder = TestData.Get(@"TestData"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - var exePath = Path.Combine(baseFolder, @"bin\test.exe"); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "SingleExeBundle", "SingleExePackageGroup.wxs"), - Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), - "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), - "-bindpath", Path.Combine(folder, ".Data"), - "-intermediateFolder", intermediateFolder, - "-o", exePath, - }); - - result.AssertSuccess(); - - Assert.True(File.Exists(exePath)); - } - } - - [Fact] - public void CanBuildSingleExeRemotePayloadBundle() - { - var folder = TestData.Get(@"TestData"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - var exePath = Path.Combine(baseFolder, @"bin\test.exe"); - var pdbPath = Path.Combine(baseFolder, @"bin\test.wixpdb"); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "SingleExeBundle", "SingleExeRemotePayload.wxs"), - Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), - "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), - "-intermediateFolder", intermediateFolder, - "-o", exePath, - }); - - result.AssertSuccess(); - - Assert.True(File.Exists(exePath)); - Assert.True(File.Exists(pdbPath)); - - using (var wixOutput = WixOutput.Read(pdbPath)) - { - var intermediate = Intermediate.Load(wixOutput); - var section = intermediate.Sections.Single(); - - var payloadSymbol = section.Symbols.OfType().Where(x => x.Id.Id == "NetFx462Web").Single(); - Assert.Equal(Int64.MaxValue, payloadSymbol.FileSize); - } - } - } - - [Fact] - public void CantBuildWithDuplicateCacheIds() - { - var folder = TestData.Get(@"TestData"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - var exePath = Path.Combine(baseFolder, @"bin\test.exe"); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "BadInput", "DuplicateCacheIds.wxs"), - Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), - "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), - "-bindpath", Path.Combine(folder, ".Data"), - "-intermediateFolder", intermediateFolder, - "-o", exePath, - }); - - Assert.Equal(8001, result.ExitCode); - } - } - - [Fact] - public void CantBuildWithDuplicatePayloadNames() - { - var folder = TestData.Get(@"TestData"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - var exePath = Path.Combine(baseFolder, @"bin\test.exe"); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "BadInput", "DuplicatePayloadNames.wxs"), - Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), - "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), - "-bindpath", Path.Combine(folder, ".Data"), - "-intermediateFolder", intermediateFolder, - "-o", exePath, - }); - - var attachedContainerWarnings = result.Messages.Where(m => m.Id == (int)BurnBackendWarnings.Ids.AttachedContainerPayloadCollision) - .Select(m => m.ToString()) - .ToArray(); - WixAssert.CompareLineByLine(new string[] - { - "The Payload 'Auto2' has a duplicate Name 'burn.exe' in the attached container. When extracting the bundle with dark.exe, the file will get overwritten.", - }, attachedContainerWarnings); - - var baContainerErrors = result.Messages.Where(m => m.Id == (int)BurnBackendErrors.Ids.BAContainerPayloadCollision) - .Select(m => m.ToString()) - .ToArray(); - WixAssert.CompareLineByLine(new string[] - { - "The Payload 'DuplicatePayloadNames.wxs' has a duplicate Name 'fakeba.dll' in the BA container. When extracting the container at runtime, the file will get overwritten.", - "The Payload 'uxTxMXPVMXwQrPTMIGa5WGt93w0Ns' has a duplicate Name 'BootstrapperApplicationData.xml' in the BA container. When extracting the container at runtime, the file will get overwritten.", - "The Payload 'uxYRbgitOs0K878jn5L_z7LdJ21KI' has a duplicate Name 'BundleExtensionData.xml' in the BA container. When extracting the container at runtime, the file will get overwritten.", - }, baContainerErrors); - - var externalErrors = result.Messages.Where(m => m.Id == (int)BurnBackendErrors.Ids.ExternalPayloadCollision) - .Select(m => m.ToString()) - .ToArray(); - WixAssert.CompareLineByLine(new string[] - { - "The external Payload 'HiddenPersistedBundleVariable.wxs' has a duplicate Name 'PayloadCollision'. When building the bundle or laying out the bundle, the file will get overwritten.", - "The external Container 'MsiPackagesContainer' has a duplicate Name 'ContainerCollision'. When building the bundle or laying out the bundle, the file will get overwritten.", - }, externalErrors); - - var packageCacheErrors = result.Messages.Where(m => m.Id == (int)BurnBackendErrors.Ids.PackageCachePayloadCollision) - .Select(m => m.ToString()) - .ToArray(); - WixAssert.CompareLineByLine(new string[] - { - "The Payload 'test.msi' has a duplicate Name 'test.msi' in package 'test.msi'. When caching the package, the file will get overwritten.", - }, packageCacheErrors); - - Assert.Equal(14, result.Messages.Length); - } - } - - [Fact] - public void CantBuildWithOrphanPayload() - { - var folder = TestData.Get(@"TestData"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - var exePath = Path.Combine(baseFolder, @"bin\test.exe"); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "BadInput", "OrphanPayload.wxs"), - Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), - Path.Combine(folder, "BundleWithPackageGroupRef", "MinimalPackageGroup.wxs"), - "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), - "-bindpath", Path.Combine(folder, ".Data"), - "-intermediateFolder", intermediateFolder, - "-o", exePath, - }); - - Assert.Equal((int)LinkerErrors.Ids.OrphanedPayload, result.ExitCode); - } - } - - [Fact] - public void CantBuildWithPackageInMultipleContainers() - { - var folder = TestData.Get(@"TestData"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - var exePath = Path.Combine(baseFolder, @"bin\test.exe"); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "BadInput", "PackageInMultipleContainers.wxs"), - Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), - Path.Combine(folder, "BundleWithPackageGroupRef", "MinimalPackageGroup.wxs"), - "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), - "-bindpath", Path.Combine(folder, ".Data"), - "-intermediateFolder", intermediateFolder, - "-o", exePath, - }); - - Assert.Equal((int)LinkerErrors.Ids.PackageInMultipleContainers, result.ExitCode); - } - } - - [Fact] - public void CantBuildWithUnscheduledPackage() - { - var folder = TestData.Get(@"TestData"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - var exePath = Path.Combine(baseFolder, @"bin\test.exe"); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "BadInput", "UnscheduledPackage.wxs"), - Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), - "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), - "-bindpath", Path.Combine(folder, ".Data"), - "-intermediateFolder", intermediateFolder, - "-o", exePath, - }); - - Assert.Equal((int)LinkerErrors.Ids.UnscheduledChainPackage, result.ExitCode); - } - } - - [Fact] - public void CantBuildWithUnscheduledRollbackBoundary() - { - var folder = TestData.Get(@"TestData"); - - using (var fs = new DisposableFileSystem()) - { - var baseFolder = fs.GetFolder(); - var intermediateFolder = Path.Combine(baseFolder, "obj"); - var exePath = Path.Combine(baseFolder, @"bin\test.exe"); - - var result = WixRunner.Execute(new[] - { - "build", - Path.Combine(folder, "BadInput", "UnscheduledRollbackBoundary.wxs"), - Path.Combine(folder, "BundleWithPackageGroupRef", "Bundle.wxs"), - "-bindpath", Path.Combine(folder, "SimpleBundle", "data"), - "-bindpath", Path.Combine(folder, ".Data"), - "-intermediateFolder", intermediateFolder, - "-o", exePath, - }); - - Assert.Equal((int)LinkerErrors.Ids.UnscheduledRollbackBoundary, result.ExitCode); - } - } - } -} -- cgit v1.2.3-55-g6feb