@joebigelow / wix-1 / commits / 941c7cae

Converters fixes and cleanup.

- Support keeping the XML declaration. - Parse settings files earlier so they...work. - Fix typo.

Bob Arnson committed Sep 2, 2020 at 20:24 UTC 941c7cae67823ed7da82d5f6f43233b7364eefc9
14 files changed +77 -55
src/WixToolset.Converters.Symbolizer/ConvertSymbols.cs
+1 -1
@@ -315,7 +315,7 @@ namespace WixToolset.Converters.Symbolizer
315 Section = FieldAsString(row, 3),
316 Key = FieldAsString(row, 4),
317 Value = FieldAsString(row, 5),
318 - Action = action == 3 ? InifFileActionType.AddTag : action == 1 ? InifFileActionType.CreateLine : InifFileActionType.AddLine,
318 + Action = action == 3 ? IniFileActionType.AddTag : action == 1 ? IniFileActionType.CreateLine : IniFileActionType.AddLine,
319 ComponentRef = FieldAsString(row, 7),
320 };
321
src/WixToolset.Converters/ConvertCommand.cs
+2 -2
@@ -26,10 +26,10 @@ namespace WixToolset.Converters
26 return Task.FromResult(-1);
27 }
28
29 - var converter = new WixConverter(this.Messaging, this.IndentationAmount, this.ErrorsAsWarnings, this.IgnoreErrors);
30 -
29 this.ParseSettings(SettingsFileDefault);
30
31 + var converter = new WixConverter(this.Messaging, this.IndentationAmount, this.ErrorsAsWarnings, this.IgnoreErrors);
32 +
33 var errors = base.Inspect(Inspector, cancellationToken);
34
35 return Task.FromResult(errors);
src/WixToolset.Converters/WixConverter.cs
+11 -15
@@ -237,16 +237,13 @@ namespace WixToolset.Converters
237 this.Operation = ConvertOperation.Convert;
238
239 // Remove the declaration.
240 - if (null != document.Declaration)
240 + if (null != document.Declaration
241 + && this.OnError(ConverterTestType.DeclarationPresent, null, "This file contains an XML declaration on the first line."))
242 {
242 - if (this.OnError(ConverterTestType.DeclarationPresent, null, "This file contains an XML declaration on the first line."))
243 - {
244 - document.Declaration = null;
245 - }
243 + document.Declaration = null;
244 + TrimLeadingText(document);
245 }
246
248 - TrimLeadingText(document);
249 -
247 // Start converting the nodes at the top.
248 this.ConvertNodes(document.Nodes(), 0);
249
@@ -292,16 +289,13 @@ namespace WixToolset.Converters
289 this.Operation = ConvertOperation.Format;
290
291 // Remove the declaration.
295 - if (null != document.Declaration)
292 + if (null != document.Declaration
293 + && this.OnError(ConverterTestType.DeclarationPresent, null, "This file contains an XML declaration on the first line."))
294 {
297 - if (this.OnError(ConverterTestType.DeclarationPresent, null, "This file contains an XML declaration on the first line."))
298 - {
299 - document.Declaration = null;
300 - }
295 + document.Declaration = null;
296 + TrimLeadingText(document);
297 }
298
303 - TrimLeadingText(document);
304 -
299 // Start converting the nodes at the top.
300 this.ConvertNodes(document.Nodes(), 0);
301
@@ -326,9 +320,11 @@ namespace WixToolset.Converters
320
321 private void SaveDocument(XDocument document)
322 {
323 + var ignoreDeclarationError = this.IgnoreErrors.Contains(ConverterTestType.DeclarationPresent);
324 +
325 try
326 {
331 - using (var writer = XmlWriter.Create(this.SourceFile, new XmlWriterSettings { OmitXmlDeclaration = true }))
327 + using (var writer = XmlWriter.Create(this.SourceFile, new XmlWriterSettings { OmitXmlDeclaration = !ignoreDeclarationError }))
328 {
329 document.Save(writer);
330 }
src/test/WixToolsetTest.Converters/BaseConverterFixture.cs
+4 -14
@@ -11,12 +11,12 @@ namespace WixToolsetTest.Converters
11
12 public abstract class BaseConverterFixture
13 {
14 - protected static string UnformattedDocumentString(XDocument document)
14 + protected static string UnformattedDocumentString(XDocument document, bool omitXmlDeclaration = true)
15 {
16 var sb = new StringBuilder();
17
18 using (var writer = new StringWriter(sb))
19 - using (var xml = XmlWriter.Create(writer, new XmlWriterSettings { OmitXmlDeclaration = true }))
19 + using (var xml = XmlWriter.Create(writer, new XmlWriterSettings { OmitXmlDeclaration = omitXmlDeclaration }))
20 {
21 document.Save(xml);
22 }
@@ -24,20 +24,10 @@ namespace WixToolsetTest.Converters
24 return sb.ToString().TrimStart();
25 }
26
27 - protected static string[] UnformattedDocumentLines(XDocument document)
27 + protected static string[] UnformattedDocumentLines(XDocument document, bool omitXmlDeclaration = true)
28 {
29 - var unformatted = UnformattedDocumentString(document);
29 + var unformatted = UnformattedDocumentString(document, omitXmlDeclaration);
30 return unformatted.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
31 }
32 -
33 - protected static void CompareLineByLine(string[] expectedLines, string[] actualLines)
34 - {
35 - for (var i = 0; i < expectedLines.Length; ++i)
36 - {
37 - Assert.True(actualLines.Length > i, $"{i}: Expected file longer than actual file");
38 - Assert.Equal($"{i}: {expectedLines[i]}", $"{i}: {actualLines[i]}");
39 - }
40 - Assert.True(expectedLines.Length == actualLines.Length, "Actual file longer than expected file");
41 - }
32 }
33 }
src/test/WixToolsetTest.Converters/BootstrapperApplicationFixture.cs
+2 -2
@@ -39,7 +39,7 @@ namespace WixToolsetTest.Converters
39 Assert.Equal(2, errors);
40
41 var actualLines = UnformattedDocumentLines(document);
42 - CompareLineByLine(expected, actualLines);
42 + WixAssert.CompareLineByLine(expected, actualLines);
43 }
44
45 [Fact]
@@ -70,7 +70,7 @@ namespace WixToolsetTest.Converters
70 Assert.Equal(0, errors);
71
72 var actualLines = UnformattedDocumentLines(document);
73 - CompareLineByLine(expected, actualLines);
73 + WixAssert.CompareLineByLine(expected, actualLines);
74 }
75 }
76 }
src/test/WixToolsetTest.Converters/ConditionFixture.cs
+7 -6
@@ -4,6 +4,7 @@ namespace WixToolsetTest.Converters
4 {
5 using System;
6 using System.Xml.Linq;
7 + using WixBuildTools.TestSupport;
8 using WixToolset.Converters;
9 using WixToolsetTest.Converters.Mocks;
10 using Xunit;
@@ -53,7 +54,7 @@ namespace WixToolsetTest.Converters
54 Assert.Equal(4, errors);
55
56 var actualLines = UnformattedDocumentLines(document);
56 - CompareLineByLine(expected, actualLines);
57 + WixAssert.CompareLineByLine(expected, actualLines);
58 }
59
60 [Fact]
@@ -99,7 +100,7 @@ namespace WixToolsetTest.Converters
100 Assert.Equal(5, errors);
101
102 var actualLines = UnformattedDocumentLines(document);
102 - CompareLineByLine(expected, actualLines);
103 + WixAssert.CompareLineByLine(expected, actualLines);
104 }
105
106 [Fact]
@@ -135,7 +136,7 @@ namespace WixToolsetTest.Converters
136 Assert.Equal(3, errors);
137
138 var actualLines = UnformattedDocumentLines(document);
138 - CompareLineByLine(expected, actualLines);
139 + WixAssert.CompareLineByLine(expected, actualLines);
140 }
141
142 [Fact]
@@ -171,7 +172,7 @@ namespace WixToolsetTest.Converters
172 Assert.Equal(3, errors);
173
174 var actualLines = UnformattedDocumentLines(document);
174 - CompareLineByLine(expected, actualLines);
175 + WixAssert.CompareLineByLine(expected, actualLines);
176 }
177
178 [Fact]
@@ -209,7 +210,7 @@ namespace WixToolsetTest.Converters
210 Assert.Equal(4, errors);
211
212 var actualLines = UnformattedDocumentLines(document);
212 - CompareLineByLine(expected, actualLines);
213 + WixAssert.CompareLineByLine(expected, actualLines);
214 }
215
216 [Fact]
@@ -250,7 +251,7 @@ namespace WixToolsetTest.Converters
251 Assert.Equal(3, errors);
252
253 var actualLines = UnformattedDocumentLines(document);
253 - CompareLineByLine(expected, actualLines);
254 + WixAssert.CompareLineByLine(expected, actualLines);
255 }
256 }
257 }
src/test/WixToolsetTest.Converters/ConverterFixture.cs
+28
@@ -39,6 +39,34 @@ namespace WixToolsetTest.Converters
39 Assert.Equal(expected, actual);
40 }
41
42 + [Fact]
43 + public void EnsuresDeclarationWhenIgnored()
44 + {
45 + var parse = String.Join(Environment.NewLine,
46 + "<?xml version='1.0' encoding='utf-16'?>",
47 + "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
48 + " <Fragment />",
49 + "</Wix>");
50 +
51 + var expected = String.Join(Environment.NewLine,
52 + "<?xml version=\"1.0\" encoding=\"utf-16\"?>",
53 + "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
54 + " <Fragment />",
55 + "</Wix>");
56 +
57 + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
58 +
59 + var messaging = new MockMessaging();
60 + var converter = new WixConverter(messaging, 2, ignoreErrors: new[] { "DeclarationPresent" } );
61 +
62 + var errors = converter.ConvertDocument(document);
63 +
64 + var actual = UnformattedDocumentString(document, omitXmlDeclaration: false);
65 +
66 + Assert.Equal(0, errors);
67 + Assert.Equal(expected, actual);
68 + }
69 +
70 [Fact]
71 public void CanConvertMainNamespace()
72 {
src/test/WixToolsetTest.Converters/CustomTableFixture.cs
+5 -4
@@ -4,6 +4,7 @@ namespace WixToolsetTest.Converters
4 {
5 using System;
6 using System.Xml.Linq;
7 + using WixBuildTools.TestSupport;
8 using WixToolset.Converters;
9 using WixToolsetTest.Converters.Mocks;
10 using Xunit;
@@ -43,7 +44,7 @@ namespace WixToolsetTest.Converters
44 Assert.Equal(4, errors);
45
46 var actualLines = UnformattedDocumentLines(document);
46 - CompareLineByLine(expected, actualLines);
47 + WixAssert.CompareLineByLine(expected, actualLines);
48 }
49
50 [Fact]
@@ -85,7 +86,7 @@ namespace WixToolsetTest.Converters
86 Assert.Equal(3, errors);
87
88 var actualLines = UnformattedDocumentLines(document);
88 - CompareLineByLine(expected, actualLines);
89 + WixAssert.CompareLineByLine(expected, actualLines);
90 }
91
92 [Fact]
@@ -128,7 +129,7 @@ namespace WixToolsetTest.Converters
129 Assert.Equal(2, errors);
130
131 var actualLines = UnformattedDocumentLines(document);
131 - CompareLineByLine(expected, actualLines);
132 + WixAssert.CompareLineByLine(expected, actualLines);
133 }
134
135 [Fact]
@@ -164,7 +165,7 @@ namespace WixToolsetTest.Converters
165 Assert.Equal(2, errors);
166
167 var actualLines = UnformattedDocumentLines(document);
167 - CompareLineByLine(expected, actualLines);
168 + WixAssert.CompareLineByLine(expected, actualLines);
169 }
170
171 [Fact]
src/test/WixToolsetTest.Converters/FeatureFixture.cs
+4 -3
@@ -4,6 +4,7 @@ namespace WixToolsetTest.Converters
4 {
5 using System;
6 using System.Xml.Linq;
7 + using WixBuildTools.TestSupport;
8 using WixToolset.Converters;
9 using WixToolsetTest.Converters.Mocks;
10 using Xunit;
@@ -39,7 +40,7 @@ namespace WixToolsetTest.Converters
40 Assert.Equal(4, errors);
41
42 var actualLines = UnformattedDocumentLines(document);
42 - CompareLineByLine(expected, actualLines);
43 + WixAssert.CompareLineByLine(expected, actualLines);
44 }
45
46 [Fact]
@@ -71,7 +72,7 @@ namespace WixToolsetTest.Converters
72 Assert.Equal(3, errors);
73
74 var actualLines = UnformattedDocumentLines(document);
74 - CompareLineByLine(expected, actualLines);
75 + WixAssert.CompareLineByLine(expected, actualLines);
76 }
77
78 [Fact]
@@ -103,7 +104,7 @@ namespace WixToolsetTest.Converters
104 Assert.Equal(3, errors);
105
106 var actualLines = UnformattedDocumentLines(document);
106 - CompareLineByLine(expected, actualLines);
107 + WixAssert.CompareLineByLine(expected, actualLines);
108 }
109 }
110 }
src/test/WixToolsetTest.Converters/FirewallExtensionFixture.cs
+3 -2
@@ -4,6 +4,7 @@ namespace WixToolsetTest.Converters
4 {
5 using System;
6 using System.Xml.Linq;
7 + using WixBuildTools.TestSupport;
8 using WixToolset.Converters;
9 using WixToolsetTest.Converters.Mocks;
10 using Xunit;
@@ -40,7 +41,7 @@ namespace WixToolsetTest.Converters
41 Assert.Equal(3, errors);
42
43 var actualLines = UnformattedDocumentLines(document);
43 - CompareLineByLine(expected, actualLines);
44 + WixAssert.CompareLineByLine(expected, actualLines);
45 }
46
47 [Fact]
@@ -73,7 +74,7 @@ namespace WixToolsetTest.Converters
74 Assert.Equal(3, errors);
75
76 var actualLines = UnformattedDocumentLines(document);
76 - CompareLineByLine(expected, actualLines);
77 + WixAssert.CompareLineByLine(expected, actualLines);
78 }
79 }
80 }
src/test/WixToolsetTest.Converters/IncludeFixture.cs
+3 -2
@@ -4,6 +4,7 @@ namespace WixToolsetTest.Converters
4 {
5 using System;
6 using System.Xml.Linq;
7 + using WixBuildTools.TestSupport;
8 using WixToolset.Converters;
9 using WixToolsetTest.Converters.Mocks;
10 using Xunit;
@@ -34,7 +35,7 @@ namespace WixToolsetTest.Converters
35 Assert.Equal(1, errors);
36
37 var actualLines = UnformattedDocumentLines(document);
37 - CompareLineByLine(expected, actualLines);
38 + WixAssert.CompareLineByLine(expected, actualLines);
39 }
40
41 [Fact]
@@ -61,7 +62,7 @@ namespace WixToolsetTest.Converters
62 Assert.Equal(1, errors);
63
64 var actualLines = UnformattedDocumentLines(document);
64 - CompareLineByLine(expected, actualLines);
65 + WixAssert.CompareLineByLine(expected, actualLines);
66 }
67 }
68 }
src/test/WixToolsetTest.Converters/SequenceFixture.cs
+2 -1
@@ -4,6 +4,7 @@ namespace WixToolsetTest.Converters
4 {
5 using System;
6 using System.Xml.Linq;
7 + using WixBuildTools.TestSupport;
8 using WixToolset.Converters;
9 using WixToolsetTest.Converters.Mocks;
10 using Xunit;
@@ -42,7 +43,7 @@ namespace WixToolsetTest.Converters
43 Assert.Equal(2, errors);
44
45 var actualLines = UnformattedDocumentLines(document);
45 - CompareLineByLine(expected, actualLines);
46 + WixAssert.CompareLineByLine(expected, actualLines);
47 }
48 }
49 }
src/test/WixToolsetTest.Converters/UtilExtensionFixture.cs
+3 -2
@@ -4,6 +4,7 @@ namespace WixToolsetTest.Converters
4 {
5 using System;
6 using System.Xml.Linq;
7 + using WixBuildTools.TestSupport;
8 using WixToolset.Converters;
9 using WixToolsetTest.Converters.Mocks;
10 using Xunit;
@@ -40,7 +41,7 @@ namespace WixToolsetTest.Converters
41 Assert.Equal(3, errors);
42
43 var actualLines = UnformattedDocumentLines(document);
43 - CompareLineByLine(expected, actualLines);
44 + WixAssert.CompareLineByLine(expected, actualLines);
45 }
46
47 [Fact]
@@ -73,7 +74,7 @@ namespace WixToolsetTest.Converters
74 Assert.Equal(3, errors);
75
76 var actualLines = UnformattedDocumentLines(document);
76 - CompareLineByLine(expected, actualLines);
77 + WixAssert.CompareLineByLine(expected, actualLines);
78 }
79 }
80 }
src/test/WixToolsetTest.Converters/Wix4ConversionFixture.cs
+2 -1
@@ -4,6 +4,7 @@ namespace WixToolsetTest.Converters
4 {
5 using System;
6 using System.Xml.Linq;
7 + using WixBuildTools.TestSupport;
8 using WixToolset.Converters;
9 using WixToolsetTest.Converters.Mocks;
10 using Xunit;
@@ -47,7 +48,7 @@ namespace WixToolsetTest.Converters
48 Assert.Equal(1, errors);
49
50 var actualLines = UnformattedDocumentLines(document);
50 - CompareLineByLine(expected, actualLines);
51 + WixAssert.CompareLineByLine(expected, actualLines);
52 }
53 }
54 }