@joebigelow / wix-1 / commits / 9ba9908c

Don't mess with CDATA whitespace.

Bob Arnson committed Dec 11, 2019 at 18:58 UTC 9ba9908cc585296f2b0ed2487351853e1a490005
2 files changed +26 -3
src/WixToolset.Converters/Wix3Converter.cs
+1 -1
@@ -255,7 +255,7 @@ namespace WixToolset.Converters
255
256 private void EnsurePrecedingWhitespaceRemoved(XText whitespace, XNode node, ConverterTestType testType)
257 {
258 - if (!String.IsNullOrEmpty(whitespace.Value))
258 + if (!String.IsNullOrEmpty(whitespace.Value) && whitespace.NodeType != XmlNodeType.CDATA)
259 {
260 var message = testType == ConverterTestType.WhitespacePrecedingEndElementWrong ? "The whitespace preceding this end element is incorrect." : "The whitespace preceding this node is incorrect.";
261
src/test/WixToolsetTest.Converters/ConverterFixture.cs
+25 -2
@@ -242,6 +242,25 @@ namespace WixToolsetTest.Converters
242 Assert.Equal(2, errors);
243 }
244
245 + [Fact]
246 + public void CanKeepCdataWithOnlyWhitespace()
247 + {
248 + var parse = String.Join(Environment.NewLine,
249 + "<?xml version='1.0' encoding='utf-8'?>",
250 + "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
251 + " <Fragment>",
252 + " <Property Id='Prop'><![CDATA[ ]]></Property>",
253 + " </Fragment>",
254 + "</Wix>");
255 +
256 + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
257 +
258 + var messaging = new DummyMessaging();
259 + var converter = new Wix3Converter(messaging, 2, null, null);
260 + var errors = converter.ConvertDocument(document);
261 + Assert.Equal(0, errors);
262 + }
263 +
264 [Fact]
265 public void CanConvertMainNamespace()
266 {
@@ -400,7 +419,9 @@ namespace WixToolsetTest.Converters
419 "<Include>",
420 " <?define Version = 1.2.3 ?>",
421 " <Fragment>",
403 - " <DirectoryRef Id='TARGETDIR' />",
422 + " <DirectoryRef Id='TARGETDIR'>",
423 + " <Directory Id='ANOTHERDIR' Name='Another' />",
424 + " </DirectoryRef>",
425 " </Fragment>",
426 "</Include>");
427
@@ -409,7 +430,9 @@ namespace WixToolsetTest.Converters
430 "<Include xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
431 " <?define Version = 1.2.3 ?>",
432 " <Fragment>",
412 - " <DirectoryRef Id=\"TARGETDIR\" />",
433 + " <DirectoryRef Id=\"TARGETDIR\">",
434 + " <Directory Id=\"ANOTHERDIR\" Name=\"Another\" />",
435 + " </DirectoryRef>",
436 " </Fragment>",
437 "</Include>");
438