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