From 3588e1453240ca59ead8b5f8e63cdb8989bf8f84 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Sun, 7 Feb 2021 19:06:11 -0500 Subject: Improve duplicate-id reporting. --- .../Link/FindEntrySectionAndLoadSymbolsCommand.cs | 1 + .../RegistryFixture.cs | 26 ++++++++++++++++++++++ .../Registry/DuplicateRegistryValueIds.wxs | 14 ++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 src/test/WixToolsetTest.CoreIntegration/TestData/Registry/DuplicateRegistryValueIds.wxs (limited to 'src') diff --git a/src/WixToolset.Core/Link/FindEntrySectionAndLoadSymbolsCommand.cs b/src/WixToolset.Core/Link/FindEntrySectionAndLoadSymbolsCommand.cs index a4b2bee3..a52d0d63 100644 --- a/src/WixToolset.Core/Link/FindEntrySectionAndLoadSymbolsCommand.cs +++ b/src/WixToolset.Core/Link/FindEntrySectionAndLoadSymbolsCommand.cs @@ -103,6 +103,7 @@ namespace WixToolset.Core.Link } else { + symbolWithSection.AddPossibleConflict(existingSymbol); existingSymbol.AddPossibleConflict(symbolWithSection); possibleConflicts.Add(symbolWithSection); } diff --git a/src/test/WixToolsetTest.CoreIntegration/RegistryFixture.cs b/src/test/WixToolsetTest.CoreIntegration/RegistryFixture.cs index 654b8740..e4d95b5d 100644 --- a/src/test/WixToolsetTest.CoreIntegration/RegistryFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/RegistryFixture.cs @@ -79,6 +79,32 @@ namespace WixToolsetTest.CoreIntegration } } + [Fact] + public void DuplicateRegistryValueIdsAreDetectedSmoothly() + { + var folder = TestData.Get(@"TestData"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + var intermediateFolder = Path.Combine(baseFolder, "obj"); + var msiPath = Path.Combine(baseFolder, @"bin\test.msi"); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Registry", "DuplicateRegistryValueIds.wxs"), + Path.Combine(folder, "ProductWithComponentGroupRef", "Product.wxs"), + "-bindpath", Path.Combine(folder, "SingleFile", "data"), + "-intermediateFolder", intermediateFolder, + "-o", msiPath + }, out var messages); + + Assert.Equal(2, messages.Where(m => m.Id == (int)ErrorMessages.Ids.DuplicateSymbol).Count()); + Assert.Equal(2, messages.Where(m => m.Id == (int)ErrorMessages.Ids.DuplicateSymbol2).Count()); + } + } + [Fact] public void PopulatesRegistryTableFromRemoveRegistryKey() { diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/Registry/DuplicateRegistryValueIds.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/Registry/DuplicateRegistryValueIds.wxs new file mode 100644 index 00000000..452aea69 --- /dev/null +++ b/src/test/WixToolsetTest.CoreIntegration/TestData/Registry/DuplicateRegistryValueIds.wxs @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + -- cgit v1.2.3-55-g6feb