From a91c413750b354ba6975be9d427787b13664b750 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Thu, 6 May 2021 14:42:01 -0500 Subject: Add tests for WixBA. --- src/test/burn/BurnE2ETests.sln | 14 ++ .../BundleD/BundleD.wixproj | 20 +++ .../BundleD_x64/BundleD_x64.wixproj | 21 +++ src/test/burn/TestData/Templates/Bundle.wxs | 8 ++ .../burn/TestData/TestBA/TestBAWixlib/WixBA.wxs | 17 +++ .../TestBA/TestBAWixlib/testbawixlib.wixproj | 2 + .../TestData/TestBA/TestBAWixlib_x64/WixBA_x64.wxs | 18 +++ .../TestBAWixlib_x64/testbawixlib_x64.wixproj | 2 + .../burn/WixToolset.WixBA/InstallationViewModel.cs | 4 +- src/test/burn/WixToolset.WixBA/RootView.xaml | 2 +- src/test/burn/WixToolset.WixBA/Styles.xaml | 4 +- src/test/burn/WixToolset.WixBA/UpdateViewModel.cs | 11 +- src/test/burn/WixToolset.WixBA/WixBA.cs | 8 +- .../burn/WixToolset.WixBA/WixToolset.WixBA.csproj | 30 ++--- .../WixToolset.WixBA/WixToolset.WixBA_x64.csproj | 40 ++++++ .../BasicFunctionalityTests.cs | 150 +++++---------------- 16 files changed, 202 insertions(+), 149 deletions(-) create mode 100644 src/test/burn/TestData/BasicFunctionalityTests/BundleD/BundleD.wixproj create mode 100644 src/test/burn/TestData/BasicFunctionalityTests/BundleD_x64/BundleD_x64.wixproj create mode 100644 src/test/burn/TestData/TestBA/TestBAWixlib/WixBA.wxs create mode 100644 src/test/burn/TestData/TestBA/TestBAWixlib_x64/WixBA_x64.wxs create mode 100644 src/test/burn/WixToolset.WixBA/WixToolset.WixBA_x64.csproj diff --git a/src/test/burn/BurnE2ETests.sln b/src/test/burn/BurnE2ETests.sln index f7850250..5d69855c 100644 --- a/src/test/burn/BurnE2ETests.sln +++ b/src/test/burn/BurnE2ETests.sln @@ -9,6 +9,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestExe", "TestExe\TestExe. EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixTestTools", "WixTestTools\WixTestTools.csproj", "{3D3B02F3-79B6-4BD5-AD49-2889DA3849A7}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.WixBA", "WixToolset.WixBA\WixToolset.WixBA.csproj", "{7C27518B-84AD-4679-8EF4-29DF552CF1AC}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolsetTest.BurnE2E", "WixToolsetTest.BurnE2E\WixToolsetTest.BurnE2E.csproj", "{FED9D707-E5C3-4867-87B0-FABDB5EB0823}" EndProject Global @@ -69,6 +71,18 @@ Global {FED9D707-E5C3-4867-87B0-FABDB5EB0823}.Release|x64.Build.0 = Release|Any CPU {FED9D707-E5C3-4867-87B0-FABDB5EB0823}.Release|x86.ActiveCfg = Release|Any CPU {FED9D707-E5C3-4867-87B0-FABDB5EB0823}.Release|x86.Build.0 = Release|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|x64.ActiveCfg = Debug|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|x64.Build.0 = Debug|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|x86.ActiveCfg = Debug|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Debug|x86.Build.0 = Debug|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|Any CPU.Build.0 = Release|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|x64.ActiveCfg = Release|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|x64.Build.0 = Release|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|x86.ActiveCfg = Release|Any CPU + {7C27518B-84AD-4679-8EF4-29DF552CF1AC}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/src/test/burn/TestData/BasicFunctionalityTests/BundleD/BundleD.wixproj b/src/test/burn/TestData/BasicFunctionalityTests/BundleD/BundleD.wixproj new file mode 100644 index 00000000..a2af1aa5 --- /dev/null +++ b/src/test/burn/TestData/BasicFunctionalityTests/BundleD/BundleD.wixproj @@ -0,0 +1,20 @@ + + + + Bundle + WixBA + {2557AA80-E432-48BF-BF01-DD27DD1BD291} + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/burn/TestData/BasicFunctionalityTests/BundleD_x64/BundleD_x64.wixproj b/src/test/burn/TestData/BasicFunctionalityTests/BundleD_x64/BundleD_x64.wixproj new file mode 100644 index 00000000..338d523d --- /dev/null +++ b/src/test/burn/TestData/BasicFunctionalityTests/BundleD_x64/BundleD_x64.wixproj @@ -0,0 +1,21 @@ + + + + Bundle + WixBAdnc_x64 + {62E3DFA4-6849-44F0-93A1-C8F60DBB76E3} + x64 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/burn/TestData/Templates/Bundle.wxs b/src/test/burn/TestData/Templates/Bundle.wxs index 06409504..b211d9c3 100644 --- a/src/test/burn/TestData/Templates/Bundle.wxs +++ b/src/test/burn/TestData/Templates/Bundle.wxs @@ -22,6 +22,10 @@ + + + + @@ -39,6 +43,10 @@ + + + + diff --git a/src/test/burn/TestData/TestBA/TestBAWixlib/WixBA.wxs b/src/test/burn/TestData/TestBA/TestBAWixlib/WixBA.wxs new file mode 100644 index 00000000..c6da2a17 --- /dev/null +++ b/src/test/burn/TestData/TestBA/TestBAWixlib/WixBA.wxs @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/test/burn/TestData/TestBA/TestBAWixlib/testbawixlib.wixproj b/src/test/burn/TestData/TestBA/TestBAWixlib/testbawixlib.wixproj index d2ab7907..fa153974 100644 --- a/src/test/burn/TestData/TestBA/TestBAWixlib/testbawixlib.wixproj +++ b/src/test/burn/TestData/TestBA/TestBAWixlib/testbawixlib.wixproj @@ -7,11 +7,13 @@ + + diff --git a/src/test/burn/TestData/TestBA/TestBAWixlib_x64/WixBA_x64.wxs b/src/test/burn/TestData/TestBA/TestBAWixlib_x64/WixBA_x64.wxs new file mode 100644 index 00000000..f28b6b70 --- /dev/null +++ b/src/test/burn/TestData/TestBA/TestBAWixlib_x64/WixBA_x64.wxs @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj b/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj index 7f3c5890..9055382f 100644 --- a/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj +++ b/src/test/burn/TestData/TestBA/TestBAWixlib_x64/testbawixlib_x64.wixproj @@ -8,11 +8,13 @@ + + diff --git a/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs b/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs index 2beebd02..410ab110 100644 --- a/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs +++ b/src/test/burn/WixToolset.WixBA/InstallationViewModel.cs @@ -461,8 +461,8 @@ namespace WixToolset.WixBA private void PlanPackageBegin(object sender, PlanPackageBeginEventArgs e) { - // If we're able to run our BA, we don't want to install the .NET Framework since the framework on the machine is already good enough. - if ( e.PackageId.StartsWith("NetFx4", StringComparison.OrdinalIgnoreCase)) + // If we're able to run our BA, we don't want to install .NET since the one on the machine is already good enough. + if (e.PackageId.StartsWith("NetFx4", StringComparison.OrdinalIgnoreCase) || e.PackageId.StartsWith("DesktopNetCoreRuntime", StringComparison.OrdinalIgnoreCase)) { e.State = RequestState.None; } diff --git a/src/test/burn/WixToolset.WixBA/RootView.xaml b/src/test/burn/WixToolset.WixBA/RootView.xaml index b7d535d1..df638c4d 100644 --- a/src/test/burn/WixToolset.WixBA/RootView.xaml +++ b/src/test/burn/WixToolset.WixBA/RootView.xaml @@ -19,7 +19,7 @@ - + diff --git a/src/test/burn/WixToolset.WixBA/Styles.xaml b/src/test/burn/WixToolset.WixBA/Styles.xaml index fa0afc4f..4e0b21a8 100644 --- a/src/test/burn/WixToolset.WixBA/Styles.xaml +++ b/src/test/burn/WixToolset.WixBA/Styles.xaml @@ -18,8 +18,8 @@ 14 - - + + #FF1EF1E8 diff --git a/src/test/burn/WixToolset.WixBA/UpdateViewModel.cs b/src/test/burn/WixToolset.WixBA/UpdateViewModel.cs index 80d894cb..dc98c858 100644 --- a/src/test/burn/WixToolset.WixBA/UpdateViewModel.cs +++ b/src/test/burn/WixToolset.WixBA/UpdateViewModel.cs @@ -38,6 +38,7 @@ namespace WixToolset.WixBA WixBA.Model.Bootstrapper.DetectUpdateBegin += this.DetectUpdateBegin; WixBA.Model.Bootstrapper.DetectUpdate += this.DetectUpdate; WixBA.Model.Bootstrapper.DetectUpdateComplete += this.DetectUpdateComplete; + WixBA.Model.Bootstrapper.DetectComplete += this.DetectComplete; this.root.PropertyChanged += new PropertyChangedEventHandler(this.RootPropertyChanged); @@ -201,7 +202,15 @@ namespace WixToolset.WixBA else if ((LaunchAction.Uninstall == WixBA.Model.Command.Action) || (UpdateState.Initializing == this.State) || (UpdateState.Checking == this.State)) { this.State = UpdateState.Unknown; - } + } + } + + private void DetectComplete(object sender, DetectCompleteEventArgs e) + { + if (this.State == UpdateState.Initializing || this.State == UpdateState.Checking) + { + this.State = UpdateState.Unknown; + } } } } diff --git a/src/test/burn/WixToolset.WixBA/WixBA.cs b/src/test/burn/WixToolset.WixBA/WixBA.cs index 2d680c7e..68288f2d 100644 --- a/src/test/burn/WixToolset.WixBA/WixBA.cs +++ b/src/test/burn/WixToolset.WixBA/WixBA.cs @@ -163,19 +163,19 @@ namespace WixToolset.WixBA WixBA.Model = new Model(this); WixBA.Dispatcher = Threading.Dispatcher.CurrentDispatcher; RootViewModel viewModel = new RootViewModel(); - - // Kick off detect which will populate the view models. - this.Engine.Detect(); + WixBA.View = new RootView(viewModel); // Create a Window to show UI. if (WixBA.Model.Command.Display == Display.Passive || WixBA.Model.Command.Display == Display.Full) { this.Engine.Log(LogLevel.Verbose, "Creating a UI."); - WixBA.View = new RootView(viewModel); WixBA.View.Show(); } + // Kick off detect which will populate the view models. + this.Engine.Detect(); + Threading.Dispatcher.Run(); this.PostTelemetry(); diff --git a/src/test/burn/WixToolset.WixBA/WixToolset.WixBA.csproj b/src/test/burn/WixToolset.WixBA/WixToolset.WixBA.csproj index 72ef5795..2a2a0073 100644 --- a/src/test/burn/WixToolset.WixBA/WixToolset.WixBA.csproj +++ b/src/test/burn/WixToolset.WixBA/WixToolset.WixBA.csproj @@ -2,7 +2,7 @@ - net45 + net45;net5.0-windows WixToolset.WixBA WixToolset.WixBA embedded @@ -13,38 +13,28 @@ false false false + true + true + Major + + true - - - MSBuild:Compile - Designer - - - MSBuild:Compile - Designer - - - PreserveNewest - Designer - + + - + - - - - - + \ No newline at end of file diff --git a/src/test/burn/WixToolset.WixBA/WixToolset.WixBA_x64.csproj b/src/test/burn/WixToolset.WixBA/WixToolset.WixBA_x64.csproj new file mode 100644 index 00000000..bc1aa7bf --- /dev/null +++ b/src/test/burn/WixToolset.WixBA/WixToolset.WixBA_x64.csproj @@ -0,0 +1,40 @@ + + + + + net45;net5.0-windows + WixToolset.WixBA + WixToolset.WixBA + embedded + win-x64 + WixToolset.WixBA + WiX Bootstrapper Application + false + false + false + false + true + true + Major + + true + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs index 5df86fff..f8361d90 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/BasicFunctionalityTests.cs @@ -14,163 +14,75 @@ namespace WixToolsetTest.BurnE2E [Fact] public void CanInstallAndUninstallSimpleBundle_x86_wixstdba() { - var packageA = this.CreatePackageInstaller("PackageA"); - - var bundleA = this.CreateBundleInstaller("BundleA"); - - var packageASourceCodeInstalled = packageA.GetInstalledFilePath("Package.wxs"); - - // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A payload should not be there on test start: {packageASourceCodeInstalled}"); - - bundleA.Install(); - - var cachedBundlePath = bundleA.VerifyRegisteredAndInPackageCache(); - - // Source file should be installed - Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A payload installed at: ", packageASourceCodeInstalled)); - - bundleA.Uninstall(cachedBundlePath); - - // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A payload should have been removed by uninstall from: ", packageASourceCodeInstalled)); - - bundleA.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath); + this.CanInstallAndUninstallSimpleBundle("PackageA", "BundleA"); } [Fact] public void CanInstallAndUninstallSimpleBundle_x86_testba() { - var packageA = this.CreatePackageInstaller("PackageA"); - - var bundleB = this.CreateBundleInstaller("BundleB"); - - var packageASourceCodeInstalled = packageA.GetInstalledFilePath("Package.wxs"); - - // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A payload should not be there on test start: {packageASourceCodeInstalled}"); - - bundleB.Install(); - - var cachedBundlePath = bundleB.VerifyRegisteredAndInPackageCache(); - - // Source file should be installed - Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A payload installed at: ", packageASourceCodeInstalled)); - - bundleB.Uninstall(cachedBundlePath); - - // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A payload should have been removed by uninstall from: ", packageASourceCodeInstalled)); - - bundleB.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath); + this.CanInstallAndUninstallSimpleBundle("PackageA", "BundleB"); } [Fact] public void CanInstallAndUninstallSimpleBundle_x86_dnctestba() { - var packageA = this.CreatePackageInstaller("PackageA"); - - var bundleC = this.CreateBundleInstaller("BundleC"); - - var packageASourceCodeInstalled = packageA.GetInstalledFilePath("Package.wxs"); - - // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A payload should not be there on test start: {packageASourceCodeInstalled}"); - - bundleC.Install(); - - var cachedBundlePath = bundleC.VerifyRegisteredAndInPackageCache(); - - // Source file should be installed - Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A payload installed at: ", packageASourceCodeInstalled)); - - bundleC.Uninstall(cachedBundlePath); - - // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A payload should have been removed by uninstall from: ", packageASourceCodeInstalled)); + this.CanInstallAndUninstallSimpleBundle("PackageA", "BundleC"); + } - bundleC.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath); + [Fact] + public void CanInstallAndUninstallSimpleBundle_x86_wixba() + { + this.CanInstallAndUninstallSimpleBundle("PackageA", "BundleD"); } [Fact] public void CanInstallAndUninstallSimpleBundle_x64_wixstdba() { - var packageA_x64 = this.CreatePackageInstaller("PackageA_x64"); - - var bundleA_x64 = this.CreateBundleInstaller("BundleA_x64"); - - var packageASourceCodeInstalled = packageA_x64.GetInstalledFilePath("Package.wxs"); - - // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A x64 payload should not be there on test start: {packageASourceCodeInstalled}"); - - bundleA_x64.Install(); - - var cachedBundlePath = bundleA_x64.VerifyRegisteredAndInPackageCache(); - - // Source file should be installed - Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A x64 payload installed at: ", packageASourceCodeInstalled)); - - bundleA_x64.Uninstall(cachedBundlePath); - - // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A x64 payload should have been removed by uninstall from: ", packageASourceCodeInstalled)); - - bundleA_x64.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath); + this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleA_x64"); } [Fact] public void CanInstallAndUninstallSimpleBundle_x64_testba() { - var packageA_x64 = this.CreatePackageInstaller("PackageA_x64"); - - var bundleB_x64 = this.CreateBundleInstaller("BundleB_x64"); - - var packageASourceCodeInstalled = packageA_x64.GetInstalledFilePath("Package.wxs"); - - // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A x64 payload should not be there on test start: {packageASourceCodeInstalled}"); - - bundleB_x64.Install(); - - var cachedBundlePath = bundleB_x64.VerifyRegisteredAndInPackageCache(); - - // Source file should be installed - Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A x64 payload installed at: ", packageASourceCodeInstalled)); - - bundleB_x64.Uninstall(cachedBundlePath); - - // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A x64 payload should have been removed by uninstall from: ", packageASourceCodeInstalled)); - - bundleB_x64.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath); + this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleB_x64"); } [Fact] public void CanInstallAndUninstallSimpleBundle_x64_dnctestba() { - var packageA_x64 = this.CreatePackageInstaller("PackageA_x64"); + this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleC_x64"); + } + + [Fact] + public void CanInstallAndUninstallSimpleBundle_x64_dncwixba() + { + this.CanInstallAndUninstallSimpleBundle("PackageA_x64", "BundleD_x64"); + } + + private void CanInstallAndUninstallSimpleBundle(string packageName, string bundleName) + { + var package = this.CreatePackageInstaller(packageName); - var bundleC_x64 = this.CreateBundleInstaller("BundleC_x64"); + var bundle = this.CreateBundleInstaller(bundleName); - var packageASourceCodeInstalled = packageA_x64.GetInstalledFilePath("Package.wxs"); + var packageSourceCodeInstalled = package.GetInstalledFilePath("Package.wxs"); // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), $"Package A x64 payload should not be there on test start: {packageASourceCodeInstalled}"); + Assert.False(File.Exists(packageSourceCodeInstalled), $"{packageName} payload should not be there on test start: {packageSourceCodeInstalled}"); - bundleC_x64.Install(); + bundle.Install(); - var cachedBundlePath = bundleC_x64.VerifyRegisteredAndInPackageCache(); + var cachedBundlePath = bundle.VerifyRegisteredAndInPackageCache(); // Source file should be installed - Assert.True(File.Exists(packageASourceCodeInstalled), String.Concat("Should have found Package A x64 payload installed at: ", packageASourceCodeInstalled)); + Assert.True(File.Exists(packageSourceCodeInstalled), $"Should have found {packageName} payload installed at: {packageSourceCodeInstalled}"); - bundleC_x64.Uninstall(cachedBundlePath); + bundle.Uninstall(cachedBundlePath); // Source file should *not* be installed - Assert.False(File.Exists(packageASourceCodeInstalled), String.Concat("Package A x64 payload should have been removed by uninstall from: ", packageASourceCodeInstalled)); + Assert.False(File.Exists(packageSourceCodeInstalled), $"{packageName} payload should have been removed by uninstall from: {packageSourceCodeInstalled}"); - bundleC_x64.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath); + bundle.VerifyUnregisteredAndRemovedFromPackageCache(cachedBundlePath); } } } -- cgit v1.2.3-55-g6feb