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
}