From f17f7138de534891a2605c9a86c0acc36cc41154 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Fri, 26 Jun 2020 14:55:16 -0700 Subject: Add inner text conversions for Util.wixext --- src/WixToolset.Converters/WixConverter.cs | 8 +++ .../UtilExtensionFixture.cs | 79 ++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 src/test/WixToolsetTest.Converters/UtilExtensionFixture.cs (limited to 'src') diff --git a/src/WixToolset.Converters/WixConverter.cs b/src/WixToolset.Converters/WixConverter.cs index a89d44ce..89d33598 100644 --- a/src/WixToolset.Converters/WixConverter.cs +++ b/src/WixToolset.Converters/WixConverter.cs @@ -63,7 +63,9 @@ namespace WixToolset.Converters private static readonly XName ShortcutPropertyElementName = WixNamespace + "ShortcutProperty"; private static readonly XName TextElementName = WixNamespace + "Text"; private static readonly XName UITextElementName = WixNamespace + "UIText"; + private static readonly XName UtilCloseApplicationElementName = WixUtilNamespace + "CloseApplication"; private static readonly XName UtilPermissionExElementName = WixUtilNamespace + "PermissionEx"; + private static readonly XName UtilXmlConfigElementName = WixUtilNamespace + "XmlConfig"; private static readonly XName CustomActionElementName = WixNamespace + "CustomAction"; private static readonly XName PropertyElementName = WixNamespace + "Property"; private static readonly XName WixElementWithoutNamespaceName = XNamespace.None + "Wix"; @@ -156,7 +158,9 @@ namespace WixToolset.Converters { WixConverter.ShortcutPropertyElementName, this.ConvertShortcutPropertyElement }, { WixConverter.TextElementName, this.ConvertTextElement }, { WixConverter.UITextElementName, this.ConvertUITextElement }, + { WixConverter.UtilCloseApplicationElementName, this.ConvertUtilCloseApplicationElementName }, { WixConverter.UtilPermissionExElementName, this.ConvertUtilPermissionExElement }, + { WixConverter.UtilXmlConfigElementName, this.ConvertUtilXmlConfigElement }, { WixConverter.PropertyElementName, this.ConvertPropertyElement }, { WixConverter.WixElementWithoutNamespaceName, this.ConvertElementWithoutNamespace }, { WixConverter.IncludeElementWithoutNamespaceName, this.ConvertElementWithoutNamespace }, @@ -692,6 +696,8 @@ namespace WixToolset.Converters this.ConvertInnerTextToAttribute(xProperty, "Value"); } + private void ConvertUtilCloseApplicationElementName(XElement element) => this.ConvertInnerTextToAttribute(element, "Condition"); + private void ConvertUtilPermissionExElement(XElement element) { if (this.SourceVersion < 4 && null == element.Attribute("Inheritable")) @@ -707,6 +713,8 @@ namespace WixToolset.Converters } } + private void ConvertUtilXmlConfigElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Value"); + /// /// Converts a Wix element. /// diff --git a/src/test/WixToolsetTest.Converters/UtilExtensionFixture.cs b/src/test/WixToolsetTest.Converters/UtilExtensionFixture.cs new file mode 100644 index 00000000..d9c58160 --- /dev/null +++ b/src/test/WixToolsetTest.Converters/UtilExtensionFixture.cs @@ -0,0 +1,79 @@ +// 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.Converters +{ + using System; + using System.Xml.Linq; + using WixToolset.Converters; + using WixToolsetTest.Converters.Mocks; + using Xunit; + + public class UtilExtensionFixture : BaseConverterFixture + { + [Fact] + public void FixCloseAppsCondition() + { + var parse = String.Join(Environment.NewLine, + "", + " ", + " ", + " a<>b", + " ", + " ", + ""); + + var expected = new[] + { + "", + " ", + " ", + " ", + "" + }; + + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo); + + var messaging = new MockMessaging(); + var converter = new WixConverter(messaging, 2, null, null); + + var errors = converter.ConvertDocument(document); + Assert.Equal(3, errors); + + var actualLines = UnformattedDocumentLines(document); + CompareLineByLine(expected, actualLines); + } + + [Fact] + public void FixXmlConfigValue() + { + var parse = String.Join(Environment.NewLine, + "", + " ", + " ", + " a<>b", + " ", + " ", + ""); + + var expected = new[] + { + "", + " ", + " ", + " ", + "" + }; + + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo); + + var messaging = new MockMessaging(); + var converter = new WixConverter(messaging, 2, null, null); + + var errors = converter.ConvertDocument(document); + Assert.Equal(3, errors); + + var actualLines = UnformattedDocumentLines(document); + CompareLineByLine(expected, actualLines); + } + } +} -- cgit v1.2.3-55-g6feb