From 72b6f0109008103dfe974fa4d2d3ce42e7b6b53e Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Thu, 5 Mar 2020 16:47:31 -0500 Subject: Correctly handle custom action default suffix. --- .../ExtensibilityServices/ParseHelper.cs | 14 +++------ .../WixToolsetTest.CoreIntegration/ParseFixture.cs | 36 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs (limited to 'src') diff --git a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs index e16f909a..7447d420 100644 --- a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs +++ b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs @@ -897,35 +897,31 @@ namespace WixToolset.Core.ExtensibilityServices if (!this.Messaging.EncounteredError) { var name = String.Concat("Wix4", customAction); + var suffix = "_X86"; switch (currentPlatform) { case Platform.X64: if ((supportedPlatforms & CustomActionPlatforms.X64) == CustomActionPlatforms.X64) { - name = String.Concat(name, "_X64"); + suffix = "_X64"; } break; case Platform.ARM: if ((supportedPlatforms & CustomActionPlatforms.ARM) == CustomActionPlatforms.ARM) { - name = String.Concat(name, "_A32"); + suffix = "_A32"; } break; case Platform.ARM64: if ((supportedPlatforms & CustomActionPlatforms.ARM64) == CustomActionPlatforms.ARM64) { - name = String.Concat(name, "_A64"); + suffix = "_A64"; } break; - // Fall back to x86. - case Platform.X86: - default: - name = String.Concat(name, "_X86"); - break; } - this.CreateSimpleReference(section, sourceLineNumbers, nameof(TupleDefinitionType.CustomAction), name); + this.CreateSimpleReference(section, sourceLineNumbers, nameof(TupleDefinitionType.CustomAction), name + suffix); } } diff --git a/src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs b/src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs new file mode 100644 index 00000000..eca3aa34 --- /dev/null +++ b/src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs @@ -0,0 +1,36 @@ +// 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.Linq; + using WixToolset.Core; + using WixToolset.Data; + using WixToolset.Data.Tuples; + using WixToolset.Extensibility.Data; + using WixToolset.Extensibility.Services; + using Xunit; + + public class ParseFixture + { + [Fact] + public void GeneratesCorrectCustomActionIdentifiers() + { + var serviceProvider = new WixToolsetServiceProvider(); + var section = new IntermediateSection("section", SectionType.Fragment, 0); + var parseHelper = serviceProvider.GetService(); + + parseHelper.CreateCustomActionReference(null, section, "CustomAction32", Platform.X86, CustomActionPlatforms.X86 | CustomActionPlatforms.ARM); + parseHelper.CreateCustomActionReference(null, section, "CustomArmAction", Platform.ARM64, CustomActionPlatforms.X86 | CustomActionPlatforms.ARM); + parseHelper.CreateCustomActionReference(null, section, "CustomArmAction", Platform.ARM64, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM64); + parseHelper.CreateCustomActionReference(null, section, "CustomAction", Platform.X64, CustomActionPlatforms.X86 | CustomActionPlatforms.ARM); + parseHelper.CreateCustomActionReference(null, section, "CustomAction", Platform.X64, CustomActionPlatforms.X86 | CustomActionPlatforms.X64); + + var simpleReferences = section.Tuples.OfType(); + Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomAction32_X86").FirstOrDefault()); + Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomArmAction_X86").FirstOrDefault()); + Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomArmAction_A64").FirstOrDefault()); + Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomAction_X86").FirstOrDefault()); + Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomAction_X64").FirstOrDefault()); + } + } +} -- cgit v1.2.3-55-g6feb