Add test to verify variable syntax is allowed in ifdefs
Closes 5259
Rob Mensching committed
Jun 15, 2022 at 13:45 UTC
37d50228654bc9bb3f7b4ac2899a93750d95ea40
1 file changed
+159
src/wix/test/WixToolsetTest.Core/PreprocessorFixture.cs
+159
@@ -107,6 +107,165 @@ namespace WixToolsetTest.Core
107
WixAssert.CompareLineByLine(expected, actual);
108
}
109
110
+ [Fact]
111
+ public void CanPreprocessIfdefWithFullVariableSyntaxFalsy()
112
+ {
113
+ var input = String.Join(Environment.NewLine,
114
+ "<Wix>",
115
+ "<?ifdef $(A) ?>",
116
+ " <Fragment />",
117
+ "<?endif?>",
118
+ "</Wix>"
119
+ );
120
+ var expected = new[]
121
+ {
122
+ "<Wix />"
123
+ };
124
+
125
+ var result = PreprocessFromString(input);
126
+
127
+ var actual = result.Document.ToString().Split("\r\n");
128
+ WixAssert.CompareLineByLine(expected, actual);
129
+ }
130
+
131
+ [Fact]
132
+ public void CanPreprocessIfdefWithFullVariableSyntaxTruthy()
133
+ {
134
+ var input = String.Join(Environment.NewLine,
135
+ "<Wix>",
136
+ "<?define A?>",
137
+ "<?ifdef $(A) ?>",
138
+ " <Fragment />",
139
+ "<?endif?>",
140
+ "</Wix>"
141
+ );
142
+ var expected = new[]
143
+ {
144
+ "<Wix>",
145
+ " <Fragment />",
146
+ "</Wix>"
147
+ };
148
+
149
+ var result = PreprocessFromString(input);
150
+
151
+ var actual = result.Document.ToString().Split("\r\n");
152
+ WixAssert.CompareLineByLine(expected, actual);
153
+ }
154
+
155
+ [Fact]
156
+ public void CanPreprocessIfndefWithFullVariableSyntaxTruthy()
157
+ {
158
+ var input = String.Join(Environment.NewLine,
159
+ "<Wix>",
160
+ "<?ifndef $(A) ?>",
161
+ " <Fragment />",
162
+ "<?endif?>",
163
+ "</Wix>"
164
+ );
165
+ var expected = new[]
166
+ {
167
+ "<Wix>",
168
+ " <Fragment />",
169
+ "</Wix>"
170
+ };
171
+
172
+ var result = PreprocessFromString(input);
173
+
174
+ var actual = result.Document.ToString().Split("\r\n");
175
+ WixAssert.CompareLineByLine(expected, actual);
176
+ }
177
+
178
+ [Fact]
179
+ public void CanPreprocessIfndefWithFullVariableSyntaxFalsy()
180
+ {
181
+ var input = String.Join(Environment.NewLine,
182
+ "<Wix>",
183
+ "<?define A?>",
184
+ "<?ifndef $(A) ?>",
185
+ " <Fragment />",
186
+ "<?endif?>",
187
+ "</Wix>"
188
+ );
189
+ var expected = new[]
190
+ {
191
+ "<Wix />"
192
+ };
193
+
194
+ var result = PreprocessFromString(input);
195
+
196
+ var actual = result.Document.ToString().Split("\r\n");
197
+ WixAssert.CompareLineByLine(expected, actual);
198
+ }
199
+
200
+ [Fact]
201
+ public void CanPreprocessIfdefWithFullVariableV3SyntaxTruthy()
202
+ {
203
+ var input = String.Join(Environment.NewLine,
204
+ "<Wix>",
205
+ "<?define A?>",
206
+ "<?ifdef $(var.A) ?>",
207
+ " <Fragment />",
208
+ "<?endif?>",
209
+ "</Wix>"
210
+ );
211
+ var expected = new[]
212
+ {
213
+ "<Wix>",
214
+ " <Fragment />",
215
+ "</Wix>"
216
+ };
217
+
218
+ var result = PreprocessFromString(input);
219
+
220
+ var actual = result.Document.ToString().Split("\r\n");
221
+ WixAssert.CompareLineByLine(expected, actual);
222
+ }
223
+
224
+ [Fact]
225
+ public void CanPreprocessIfndefWithFullVariableV3SyntaxTruthy()
226
+ {
227
+ var input = String.Join(Environment.NewLine,
228
+ "<Wix>",
229
+ "<?ifndef $(var.A) ?>",
230
+ " <Fragment />",
231
+ "<?endif?>",
232
+ "</Wix>"
233
+ );
234
+ var expected = new[]
235
+ {
236
+ "<Wix>",
237
+ " <Fragment />",
238
+ "</Wix>"
239
+ };
240
+
241
+ var result = PreprocessFromString(input);
242
+
243
+ var actual = result.Document.ToString().Split("\r\n");
244
+ WixAssert.CompareLineByLine(expected, actual);
245
+ }
246
+
247
+ [Fact]
248
+ public void CanPreprocessIfndefWithFullVariableV3SyntaxFalsy()
249
+ {
250
+ var input = String.Join(Environment.NewLine,
251
+ "<Wix>",
252
+ "<?define A?>",
253
+ "<?ifndef $(var.A) ?>",
254
+ " <Fragment />",
255
+ "<?endif?>",
256
+ "</Wix>"
257
+ );
258
+ var expected = new[]
259
+ {
260
+ "<Wix />"
261
+ };
262
+
263
+ var result = PreprocessFromString(input);
264
+
265
+ var actual = result.Document.ToString().Split("\r\n");
266
+ WixAssert.CompareLineByLine(expected, actual);
267
+ }
268
+
269
private static IPreprocessResult PreprocessFromString(string xml)
270
{
271
using var stringReader = new StringReader(xml);