From 386a3578413ba16b3c0615d47870ee44a0e461f6 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Wed, 30 Mar 2022 17:08:40 -0500 Subject: Implement BundlePackage. 3693 --- .../MultipleBundlePackagesBundle.wixproj | 19 ++++++++ .../MultipleBundlePackagesBundle.wxs | 11 +++++ .../WixToolsetTest.BurnE2E/BundlePackageTests.cs | 51 ++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 src/test/burn/TestData/BundlePackageTests/MultipleBundlePackagesBundle/MultipleBundlePackagesBundle.wixproj create mode 100644 src/test/burn/TestData/BundlePackageTests/MultipleBundlePackagesBundle/MultipleBundlePackagesBundle.wxs create mode 100644 src/test/burn/WixToolsetTest.BurnE2E/BundlePackageTests.cs (limited to 'src/test') diff --git a/src/test/burn/TestData/BundlePackageTests/MultipleBundlePackagesBundle/MultipleBundlePackagesBundle.wixproj b/src/test/burn/TestData/BundlePackageTests/MultipleBundlePackagesBundle/MultipleBundlePackagesBundle.wixproj new file mode 100644 index 00000000..a9639014 --- /dev/null +++ b/src/test/burn/TestData/BundlePackageTests/MultipleBundlePackagesBundle/MultipleBundlePackagesBundle.wixproj @@ -0,0 +1,19 @@ + + + + Bundle + {86D214FB-8D74-456C-99B3-6557ECA6159C} + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/burn/TestData/BundlePackageTests/MultipleBundlePackagesBundle/MultipleBundlePackagesBundle.wxs b/src/test/burn/TestData/BundlePackageTests/MultipleBundlePackagesBundle/MultipleBundlePackagesBundle.wxs new file mode 100644 index 00000000..e0071874 --- /dev/null +++ b/src/test/burn/TestData/BundlePackageTests/MultipleBundlePackagesBundle/MultipleBundlePackagesBundle.wxs @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/test/burn/WixToolsetTest.BurnE2E/BundlePackageTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/BundlePackageTests.cs new file mode 100644 index 00000000..2e95aedb --- /dev/null +++ b/src/test/burn/WixToolsetTest.BurnE2E/BundlePackageTests.cs @@ -0,0 +1,51 @@ +// 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.BurnE2E +{ + using System.IO; + using Xunit; + using Xunit.Abstractions; + + public class BundlePackageTests : BurnE2ETests + { + public BundlePackageTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } + + [Fact] + public void CanInstallAndUninstallBundlePackages() + { + var packageA = this.CreatePackageInstaller(@"..\BasicFunctionalityTests\PackageA"); + var packageA_x64 = this.CreatePackageInstaller(@"..\BasicFunctionalityTests\PackageA_x64"); + var bundleA = this.CreateBundleInstaller(@"..\BasicFunctionalityTests\BundleA"); + var bundleB_x64 = this.CreateBundleInstaller(@"..\BasicFunctionalityTests\BundleB_x64"); + var multipleBundlePackagesBundle = this.CreateBundleInstaller(@"MultipleBundlePackagesBundle"); + + var packageA32SourceCodeFilePath = packageA.GetInstalledFilePath("Package.wxs"); + var packageA64SourceCodeFilePath = packageA_x64.GetInstalledFilePath("Package.wxs"); + + // Source file should *not* be installed + Assert.False(File.Exists(packageA32SourceCodeFilePath), $"PackageA payload should not be there on test start: {packageA32SourceCodeFilePath}"); + Assert.False(File.Exists(packageA64SourceCodeFilePath), $"PackageA_x64 payload should not be there on test start: {packageA64SourceCodeFilePath}"); + + multipleBundlePackagesBundle.Install(); + multipleBundlePackagesBundle.VerifyRegisteredAndInPackageCache(); + + bundleA.VerifyRegisteredAndInPackageCache(); + bundleB_x64.VerifyRegisteredAndInPackageCache(); + + // Source file should be installed + Assert.True(File.Exists(packageA32SourceCodeFilePath), $"Should have found PackageA payload installed at: {packageA32SourceCodeFilePath}"); + Assert.True(File.Exists(packageA64SourceCodeFilePath), $"Should have found PackageA_x64 payload installed at: {packageA64SourceCodeFilePath}"); + + multipleBundlePackagesBundle.Uninstall(); + multipleBundlePackagesBundle.VerifyUnregisteredAndRemovedFromPackageCache(); + + bundleA.VerifyUnregisteredAndRemovedFromPackageCache(); + bundleB_x64.VerifyUnregisteredAndRemovedFromPackageCache(); + + // Source file should *not* be installed + Assert.False(File.Exists(packageA32SourceCodeFilePath), $"PackageA payload should have been removed by uninstall from: {packageA32SourceCodeFilePath}"); + Assert.False(File.Exists(packageA64SourceCodeFilePath), $"PackageA_x64 payload should have been removed by uninstall from: {packageA64SourceCodeFilePath}"); + + } + } +} -- cgit v1.2.3-55-g6feb