@joebigelow / wix / commits / 8b1861a0

Add namespace to <Include> elements.

Bob Arnson committed Oct 31, 2019 at 20:10 UTC 8b1861a0d9fc636f02ccb9452946863e31a46b78
2 files changed +34 -3
src/WixToolset.Converters/Wix3Converter.cs
+4 -2
@@ -35,6 +35,7 @@ namespace WixToolset.Converters
35 private static readonly XName CustomActionElementName = WixNamespace + "CustomAction";
36 private static readonly XName PropertyElementName = WixNamespace + "Property";
37 private static readonly XName WixElementWithoutNamespaceName = XNamespace.None + "Wix";
38 + private static readonly XName IncludeElementWithoutNamespaceName = XNamespace.None + "Include";
39
40 private static readonly Dictionary<string, XNamespace> OldToNewNamespaceMapping = new Dictionary<string, XNamespace>()
41 {
@@ -86,7 +87,8 @@ namespace WixToolset.Converters
87 { Wix3Converter.PayloadElementName, this.ConvertSuppressSignatureValidation },
88 { Wix3Converter.CustomActionElementName, this.ConvertCustomActionElement },
89 { Wix3Converter.PropertyElementName, this.ConvertPropertyElement },
89 - { Wix3Converter.WixElementWithoutNamespaceName, this.ConvertWixElementWithoutNamespace },
90 + { Wix3Converter.WixElementWithoutNamespaceName, this.ConvertElementWithoutNamespace },
91 + { Wix3Converter.IncludeElementWithoutNamespaceName, this.ConvertElementWithoutNamespace },
92 };
93
94 this.Messaging = messaging;
@@ -399,7 +401,7 @@ namespace WixToolset.Converters
401 /// </summary>
402 /// <param name="element">The Wix element to convert.</param>
403 /// <returns>The converted element.</returns>
402 - private void ConvertWixElementWithoutNamespace(XElement element)
404 + private void ConvertElementWithoutNamespace(XElement element)
405 {
406 if (this.OnError(ConverterTestType.XmlnsMissing, element, "The xmlns attribute is missing. It must be present with a value of '{0}'.", WixNamespace.NamespaceName))
407 {
src/test/WixToolsetTest.Converters/ConverterFixture.cs
+30 -1
@@ -364,7 +364,7 @@ namespace WixToolsetTest.Converters
364 }
365
366 [Fact]
367 - public void CanConvertMissingNamespace()
367 + public void CanConvertMissingWixNamespace()
368 {
369 var parse = String.Join(Environment.NewLine,
370 "<?xml version='1.0' encoding='utf-8'?>",
@@ -392,6 +392,35 @@ namespace WixToolsetTest.Converters
392 Assert.Equal(Wix4Namespace, document.Root.GetDefaultNamespace());
393 }
394
395 + [Fact]
396 + public void CanConvertMissingIncludeNamespace()
397 + {
398 + var parse = String.Join(Environment.NewLine,
399 + "<?xml version='1.0' encoding='utf-8'?>",
400 + "<Include>",
401 + " <?define Version = 1.2.3 ?>",
402 + "</Include>");
403 +
404 + var expected = String.Join(Environment.NewLine,
405 + "<?xml version=\"1.0\" encoding=\"utf-16\"?>",
406 + "<Include xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
407 + " <?define Version = 1.2.3 ?>",
408 + "</Include>");
409 +
410 + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
411 +
412 + var messaging = new DummyMessaging();
413 + var converter = new Wix3Converter(messaging, 2, null, null);
414 +
415 + var errors = converter.ConvertDocument(document);
416 +
417 + var actual = UnformattedDocumentString(document);
418 +
419 + Assert.Equal(1, errors);
420 + Assert.Equal(expected, actual);
421 + Assert.Equal(Wix4Namespace, document.Root.GetDefaultNamespace());
422 + }
423 +
424 [Fact]
425 public void CanConvertAnonymousFile()
426 {