diff options
Diffstat (limited to 'src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs')
-rw-r--r-- | src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs | 132 |
1 files changed, 131 insertions, 1 deletions
diff --git a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs index 98fffbbc..6cbd445c 100644 --- a/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs +++ b/src/wix/test/WixToolsetTest.Sdk/MsbuildFixture.cs | |||
@@ -670,6 +670,114 @@ namespace WixToolsetTest.Sdk | |||
670 | } | 670 | } |
671 | } | 671 | } |
672 | 672 | ||
673 | [Theory] | ||
674 | [InlineData(BuildSystem.DotNetCoreSdk)] | ||
675 | [InlineData(BuildSystem.MSBuild)] | ||
676 | [InlineData(BuildSystem.MSBuild64)] | ||
677 | public void CanBuildMultiTargetingWixlibUsingRids(BuildSystem buildSystem) | ||
678 | { | ||
679 | var sourceFolder = TestData.Get(@"TestData", "MultiTargetingWixlib"); | ||
680 | |||
681 | using (var fs = new TestDataFolderFileSystem()) | ||
682 | { | ||
683 | fs.Initialize(sourceFolder); | ||
684 | var baseFolder = Path.Combine(fs.BaseFolder, "PackageUsingRids"); | ||
685 | var binFolder = Path.Combine(baseFolder, @"bin\"); | ||
686 | var filesFolder = Path.Combine(binFolder, "Release", @"PFiles\"); | ||
687 | var projectPath = Path.Combine(baseFolder, "PackageUsingRids.wixproj"); | ||
688 | |||
689 | var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] { | ||
690 | "-Restore", | ||
691 | MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath) | ||
692 | }); | ||
693 | result.AssertSuccess(); | ||
694 | |||
695 | var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); | ||
696 | WixAssert.StringCollectionEmpty(warnings); | ||
697 | |||
698 | var releaseFiles = Directory.EnumerateFiles(filesFolder, "*", SearchOption.AllDirectories); | ||
699 | var releaseFileSizes = releaseFiles.Select(p => PathAndSize(p, filesFolder)).OrderBy(s => s).ToArray(); | ||
700 | |||
701 | WixAssert.CompareLineByLine(new[] | ||
702 | { | ||
703 | @"net472_x64\e_sqlite3.dll - 1601536", | ||
704 | @"net472_x86\e_sqlite3.dll - 1207296", | ||
705 | @"net6_x64\e_sqlite3.dll - 1601536", | ||
706 | @"net6_x86\e_sqlite3.dll - 1207296", | ||
707 | }, releaseFileSizes); | ||
708 | } | ||
709 | } | ||
710 | |||
711 | [Theory] | ||
712 | [InlineData(BuildSystem.DotNetCoreSdk)] | ||
713 | [InlineData(BuildSystem.MSBuild)] | ||
714 | [InlineData(BuildSystem.MSBuild64)] | ||
715 | public void CanBuildMultiTargetingWixlibUsingRidsWithReleaseAndDebug(BuildSystem buildSystem) | ||
716 | { | ||
717 | var sourceFolder = TestData.Get(@"TestData", "MultiTargetingWixlib"); | ||
718 | |||
719 | using (var fs = new TestDataFolderFileSystem()) | ||
720 | { | ||
721 | fs.Initialize(sourceFolder); | ||
722 | var baseFolder = Path.Combine(fs.BaseFolder, "PackageReleaseAndDebug"); | ||
723 | var binFolder = Path.Combine(baseFolder, @"bin\"); | ||
724 | var filesFolder = Path.Combine(binFolder, "Release", @"PFiles\"); | ||
725 | var projectPath = Path.Combine(baseFolder, "PackageReleaseAndDebug.wixproj"); | ||
726 | |||
727 | var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] { | ||
728 | "-Restore", | ||
729 | MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath) | ||
730 | }); | ||
731 | result.AssertSuccess(); | ||
732 | |||
733 | var warnings = result.Output.Where(line => line.Contains(": warning")).ToArray(); | ||
734 | WixAssert.StringCollectionEmpty(warnings); | ||
735 | |||
736 | var releaseFiles = Directory.EnumerateFiles(filesFolder, "*", SearchOption.AllDirectories); | ||
737 | var releaseFileSizes = releaseFiles.Select(p => PathAndSize(p, filesFolder)).OrderBy(s => s).ToArray(); | ||
738 | |||
739 | WixAssert.CompareLineByLine(new[] | ||
740 | { | ||
741 | @"debug_net472_x64\e_sqlite3.dll - 1601536", | ||
742 | @"debug_net472_x86\e_sqlite3.dll - 1207296", | ||
743 | @"debug_net6_x64\e_sqlite3.dll - 1601536", | ||
744 | @"debug_net6_x86\e_sqlite3.dll - 1207296", | ||
745 | @"release_net472_x64\e_sqlite3.dll - 1601536", | ||
746 | @"release_net472_x86\e_sqlite3.dll - 1207296", | ||
747 | @"release_net6_x64\e_sqlite3.dll - 1601536", | ||
748 | @"release_net6_x86\e_sqlite3.dll - 1207296", | ||
749 | }, releaseFileSizes); | ||
750 | } | ||
751 | } | ||
752 | |||
753 | [Theory] | ||
754 | [InlineData(BuildSystem.DotNetCoreSdk)] | ||
755 | [InlineData(BuildSystem.MSBuild)] | ||
756 | [InlineData(BuildSystem.MSBuild64)] | ||
757 | public void CannotBuildMultiTargetingWixlibUsingExplicitSubsetOfTfmAndRid(BuildSystem buildSystem) | ||
758 | { | ||
759 | var sourceFolder = TestData.Get(@"TestData", "MultiTargetingWixlib"); | ||
760 | |||
761 | using (var fs = new TestDataFolderFileSystem()) | ||
762 | { | ||
763 | fs.Initialize(sourceFolder); | ||
764 | var baseFolder = Path.Combine(fs.BaseFolder, "PackageUsingExplicitTfmAndRids"); | ||
765 | var binFolder = Path.Combine(baseFolder, @"bin\"); | ||
766 | var filesFolder = Path.Combine(binFolder, "Release", @"PFiles\"); | ||
767 | var projectPath = Path.Combine(baseFolder, "PackageUsingExplicitTfmAndRids.wixproj"); | ||
768 | |||
769 | var result = MsbuildUtilities.BuildProject(buildSystem, projectPath, new[] { | ||
770 | "-Restore", | ||
771 | MsbuildUtilities.GetQuotedPropertySwitch(buildSystem, "WixMSBuildProps", MsbuildFixture.WixPropsPath) | ||
772 | }); | ||
773 | |||
774 | var errors = GetDistinctErrorMessages(result.Output, baseFolder); | ||
775 | WixAssert.CompareLineByLine(new[] | ||
776 | { | ||
777 | @"<basefolder>\Package.wxs(22): error WIX0103: Cannot find the File file '!(bindpath.TestExe.net472.win_x86)\e_sqlite3.dll'. The following paths were checked: !(bindpath.TestExe.net472.win_x86)\e_sqlite3.dll [<basefolder>\PackageUsingExplicitTfmAndRids.wixproj]", | ||
778 | }, errors); | ||
779 | } | ||
780 | } | ||
673 | 781 | ||
674 | [Theory] | 782 | [Theory] |
675 | [InlineData(BuildSystem.DotNetCoreSdk)] | 783 | [InlineData(BuildSystem.DotNetCoreSdk)] |
@@ -773,9 +881,31 @@ namespace WixToolsetTest.Sdk | |||
773 | return ReplacePathsInMessage(message.Substring(start, end - start), baseFolder); | 881 | return ReplacePathsInMessage(message.Substring(start, end - start), baseFolder); |
774 | } | 882 | } |
775 | 883 | ||
884 | private static string[] GetDistinctErrorMessages(string[] output, string baseFolder) | ||
885 | { | ||
886 | return output.Where(l => l.Contains(": error ")).Select(line => | ||
887 | { | ||
888 | var trimmed = ReplacePathsInMessage(line, baseFolder); | ||
889 | |||
890 | // If the message starts with a multi-proc build marker (like: "1>" or "2>") trim it. | ||
891 | if (trimmed[1] == '>') | ||
892 | { | ||
893 | trimmed = trimmed.Substring(2); | ||
894 | } | ||
895 | |||
896 | return trimmed; | ||
897 | }).Distinct().ToArray(); | ||
898 | } | ||
899 | |||
776 | private static string ReplacePathsInMessage(string message, string baseFolder) | 900 | private static string ReplacePathsInMessage(string message, string baseFolder) |
777 | { | 901 | { |
778 | return message.Replace(baseFolder, "<basefolder>").Trim(); | 902 | return message.Trim().Replace(baseFolder, "<basefolder>"); |
903 | } | ||
904 | |||
905 | private static string PathAndSize(string path, string replace) | ||
906 | { | ||
907 | var fi = new FileInfo(path); | ||
908 | return $"{fi.FullName.Replace(replace, String.Empty)} - {fi.Length}"; | ||
779 | } | 909 | } |
780 | } | 910 | } |
781 | } | 911 | } |