From 4449fcc5b8d104817c67135229682c66c3d892ca Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Fri, 2 Apr 2021 14:41:49 -0700 Subject: Enable codepages and languages to be set via .wxl files Fixes wixtoolset/issues#5801 --- .../LanguageFixture.cs | 155 +++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 src/test/WixToolsetTest.CoreIntegration/LanguageFixture.cs (limited to 'src/test/WixToolsetTest.CoreIntegration/LanguageFixture.cs') diff --git a/src/test/WixToolsetTest.CoreIntegration/LanguageFixture.cs b/src/test/WixToolsetTest.CoreIntegration/LanguageFixture.cs new file mode 100644 index 00000000..319b0788 --- /dev/null +++ b/src/test/WixToolsetTest.CoreIntegration/LanguageFixture.cs @@ -0,0 +1,155 @@ +// 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.IO; + using System.Linq; + using WixBuildTools.TestSupport; + using WixToolset.Core.TestPackage; + using WixToolset.Data; + using WixToolset.Data.Symbols; + using Xunit; + + public class LanguageFixture + { + [Fact] + public void CanBuildWithDefaultProductLanguage() + { + var folder = TestData.Get(@"TestData", "Language"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + "-loc", Path.Combine(folder, "Package.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", Path.Combine(baseFolder, "obj"), + "-o", Path.Combine(baseFolder, @"bin\test.msi") + }); + + result.AssertSuccess(); + + var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb")); + var section = intermediate.Sections.Single(); + + var propertySymbol = section.Symbols.OfType().Single(p => p.Id.Id == "ProductLanguage"); + Assert.Equal("0", propertySymbol.Value); + + var summaryPlatform = section.Symbols.OfType().Single(s => s.PropertyId == SummaryInformationType.PlatformAndLanguage); + Assert.Equal("Intel;0", summaryPlatform.Value); + + var summaryCodepage = section.Symbols.OfType().Single(s => s.PropertyId == SummaryInformationType.Codepage); + Assert.Equal("1252", summaryCodepage.Value); + } + } + + [Fact] + public void CanBuildEnuWxl() + { + var folder = TestData.Get(@"TestData", "Language"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + "-loc", Path.Combine(folder, "Package.en-us.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", Path.Combine(baseFolder, "obj"), + "-o", Path.Combine(baseFolder, @"bin\test.msi") + }); + + result.AssertSuccess(); + + var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb")); + var section = intermediate.Sections.Single(); + + var propertySymbol = section.Symbols.OfType().Single(p => p.Id.Id == "ProductLanguage"); + Assert.Equal("1033", propertySymbol.Value); + + var summaryPlatform = section.Symbols.OfType().Single(s => s.PropertyId == SummaryInformationType.PlatformAndLanguage); + Assert.Equal("Intel;1033", summaryPlatform.Value); + + var summaryCodepage = section.Symbols.OfType().Single(s => s.PropertyId == SummaryInformationType.Codepage); + Assert.Equal("1252", summaryCodepage.Value); + } + } + + [Fact] + public void CanBuildJpnWxl() + { + var folder = TestData.Get(@"TestData", "Language"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + "-loc", Path.Combine(folder, "Package.ja-jp.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", Path.Combine(baseFolder, "obj"), + "-o", Path.Combine(baseFolder, @"bin\test.msi") + }); + + result.AssertSuccess(); + + var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb")); + var section = intermediate.Sections.Single(); + + var propertySymbol = section.Symbols.OfType().Single(p => p.Id.Id == "ProductLanguage"); + Assert.Equal("1041", propertySymbol.Value); + + var summaryPlatform = section.Symbols.OfType().Single(s => s.PropertyId == SummaryInformationType.PlatformAndLanguage); + Assert.Equal("Intel;1041", summaryPlatform.Value); + + var summaryCodepage = section.Symbols.OfType().Single(s => s.PropertyId == SummaryInformationType.Codepage); + Assert.Equal("932", summaryCodepage.Value); + } + } + + [Fact] + public void CanBuildJpnWxlWithEnuSummaryInfo() + { + var folder = TestData.Get(@"TestData", "Language"); + + using (var fs = new DisposableFileSystem()) + { + var baseFolder = fs.GetFolder(); + + var result = WixRunner.Execute(new[] + { + "build", + Path.Combine(folder, "Package.wxs"), + "-loc", Path.Combine(folder, "PackageWithEnSummaryInfo.ja-jp.wxl"), + "-bindpath", Path.Combine(folder, "data"), + "-intermediateFolder", Path.Combine(baseFolder, "obj"), + "-o", Path.Combine(baseFolder, @"bin\test.msi") + }); + + result.AssertSuccess(); + + var intermediate = Intermediate.Load(Path.Combine(baseFolder, @"bin\test.wixpdb")); + var section = intermediate.Sections.Single(); + + var propertySymbol = section.Symbols.OfType().Single(p => p.Id.Id == "ProductLanguage"); + Assert.Equal("1041", propertySymbol.Value); + + var summaryPlatform = section.Symbols.OfType().Single(s => s.PropertyId == SummaryInformationType.PlatformAndLanguage); + Assert.Equal("Intel;1041", summaryPlatform.Value); + + var summaryCodepage = section.Symbols.OfType().Single(s => s.PropertyId == SummaryInformationType.Codepage); + Assert.Equal("1252", summaryCodepage.Value); + } + } + } +} -- cgit v1.2.3-55-g6feb