diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs | 14 | ||||
| -rw-r--r-- | src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs | 36 |
2 files changed, 41 insertions, 9 deletions
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 | |||
| 897 | if (!this.Messaging.EncounteredError) | 897 | if (!this.Messaging.EncounteredError) |
| 898 | { | 898 | { |
| 899 | var name = String.Concat("Wix4", customAction); | 899 | var name = String.Concat("Wix4", customAction); |
| 900 | var suffix = "_X86"; | ||
| 900 | 901 | ||
| 901 | switch (currentPlatform) | 902 | switch (currentPlatform) |
| 902 | { | 903 | { |
| 903 | case Platform.X64: | 904 | case Platform.X64: |
| 904 | if ((supportedPlatforms & CustomActionPlatforms.X64) == CustomActionPlatforms.X64) | 905 | if ((supportedPlatforms & CustomActionPlatforms.X64) == CustomActionPlatforms.X64) |
| 905 | { | 906 | { |
| 906 | name = String.Concat(name, "_X64"); | 907 | suffix = "_X64"; |
| 907 | } | 908 | } |
| 908 | break; | 909 | break; |
| 909 | case Platform.ARM: | 910 | case Platform.ARM: |
| 910 | if ((supportedPlatforms & CustomActionPlatforms.ARM) == CustomActionPlatforms.ARM) | 911 | if ((supportedPlatforms & CustomActionPlatforms.ARM) == CustomActionPlatforms.ARM) |
| 911 | { | 912 | { |
| 912 | name = String.Concat(name, "_A32"); | 913 | suffix = "_A32"; |
| 913 | } | 914 | } |
| 914 | break; | 915 | break; |
| 915 | case Platform.ARM64: | 916 | case Platform.ARM64: |
| 916 | if ((supportedPlatforms & CustomActionPlatforms.ARM64) == CustomActionPlatforms.ARM64) | 917 | if ((supportedPlatforms & CustomActionPlatforms.ARM64) == CustomActionPlatforms.ARM64) |
| 917 | { | 918 | { |
| 918 | name = String.Concat(name, "_A64"); | 919 | suffix = "_A64"; |
| 919 | } | 920 | } |
| 920 | break; | 921 | break; |
| 921 | // Fall back to x86. | ||
| 922 | case Platform.X86: | ||
| 923 | default: | ||
| 924 | name = String.Concat(name, "_X86"); | ||
| 925 | break; | ||
| 926 | } | 922 | } |
| 927 | 923 | ||
| 928 | this.CreateSimpleReference(section, sourceLineNumbers, nameof(TupleDefinitionType.CustomAction), name); | 924 | this.CreateSimpleReference(section, sourceLineNumbers, nameof(TupleDefinitionType.CustomAction), name + suffix); |
| 929 | } | 925 | } |
| 930 | } | 926 | } |
| 931 | 927 | ||
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 @@ | |||
| 1 | // 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. | ||
| 2 | |||
| 3 | namespace WixToolsetTest.CoreIntegration | ||
| 4 | { | ||
| 5 | using System.Linq; | ||
| 6 | using WixToolset.Core; | ||
| 7 | using WixToolset.Data; | ||
| 8 | using WixToolset.Data.Tuples; | ||
| 9 | using WixToolset.Extensibility.Data; | ||
| 10 | using WixToolset.Extensibility.Services; | ||
| 11 | using Xunit; | ||
| 12 | |||
| 13 | public class ParseFixture | ||
| 14 | { | ||
| 15 | [Fact] | ||
| 16 | public void GeneratesCorrectCustomActionIdentifiers() | ||
| 17 | { | ||
| 18 | var serviceProvider = new WixToolsetServiceProvider(); | ||
| 19 | var section = new IntermediateSection("section", SectionType.Fragment, 0); | ||
| 20 | var parseHelper = serviceProvider.GetService<IParseHelper>(); | ||
| 21 | |||
| 22 | parseHelper.CreateCustomActionReference(null, section, "CustomAction32", Platform.X86, CustomActionPlatforms.X86 | CustomActionPlatforms.ARM); | ||
| 23 | parseHelper.CreateCustomActionReference(null, section, "CustomArmAction", Platform.ARM64, CustomActionPlatforms.X86 | CustomActionPlatforms.ARM); | ||
| 24 | parseHelper.CreateCustomActionReference(null, section, "CustomArmAction", Platform.ARM64, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM64); | ||
| 25 | parseHelper.CreateCustomActionReference(null, section, "CustomAction", Platform.X64, CustomActionPlatforms.X86 | CustomActionPlatforms.ARM); | ||
| 26 | parseHelper.CreateCustomActionReference(null, section, "CustomAction", Platform.X64, CustomActionPlatforms.X86 | CustomActionPlatforms.X64); | ||
| 27 | |||
| 28 | var simpleReferences = section.Tuples.OfType<WixSimpleReferenceTuple>(); | ||
| 29 | Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomAction32_X86").FirstOrDefault()); | ||
| 30 | Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomArmAction_X86").FirstOrDefault()); | ||
| 31 | Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomArmAction_A64").FirstOrDefault()); | ||
| 32 | Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomAction_X86").FirstOrDefault()); | ||
| 33 | Assert.NotNull(simpleReferences.Where(t => t.SymbolicName == "CustomAction:Wix4CustomAction_X64").FirstOrDefault()); | ||
| 34 | } | ||
| 35 | } | ||
| 36 | } | ||
