aboutsummaryrefslogtreecommitdiff
path: root/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs')
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs181
1 files changed, 0 insertions, 181 deletions
diff --git a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
deleted file mode 100644
index ae8a1bcc..00000000
--- a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
+++ /dev/null
@@ -1,181 +0,0 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolsetTest.CoreIntegration
4{
5 using System.IO;
6 using System.Linq;
7 using WixBuildTools.TestSupport;
8 using WixToolset.Core;
9 using WixToolset.Core.TestPackage;
10 using WixToolset.Data;
11 using WixToolset.Data.Symbols;
12 using WixToolset.Extensibility.Data;
13 using WixToolset.Extensibility.Services;
14 using Xunit;
15
16 public class PreprocessorFixture
17 {
18 [Fact]
19 public void PreprocessDirectly()
20 {
21 var folder = TestData.Get(@"TestData\IncludePath");
22 var sourcePath = Path.Combine(folder, "Package.wxs");
23 var includeFolder = Path.Combine(folder, "data");
24 var includeFile = Path.Combine(includeFolder, "Package.wxi");
25
26 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
27
28 var context = serviceProvider.GetService<IPreprocessContext>();
29 context.SourcePath = sourcePath;
30 context.IncludeSearchPaths = new[] { includeFolder };
31
32 var preprocessor = serviceProvider.GetService<IPreprocessor>();
33 var result = preprocessor.Preprocess(context);
34
35 var includedFile = result.IncludedFiles.Single();
36 Assert.NotNull(result.Document);
37 Assert.Equal(includeFile, includedFile.Path);
38 Assert.Equal(sourcePath, includedFile.SourceLineNumbers.FileName);
39 Assert.Equal(1, includedFile.SourceLineNumbers.LineNumber.Value);
40 Assert.Equal($"{sourcePath}*1", includedFile.SourceLineNumbers.QualifiedFileName);
41 Assert.Null(includedFile.SourceLineNumbers.Parent);
42 }
43
44 [Fact]
45 public void IncludeSourceLineNumbersPreserved()
46 {
47 var folder = TestData.Get(@"TestData\IncludePath");
48
49 using (var fs = new DisposableFileSystem())
50 {
51 var baseFolder = fs.GetFolder();
52 var intermediateFolder = Path.Combine(baseFolder, "obj");
53
54 var result = WixRunner.Execute(warningsAsErrors: false, new[]
55 {
56 "build",
57 Path.Combine(folder, "Package.wxs"),
58 Path.Combine(folder, "PackageComponents.wxs"),
59 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
60 "-includepath", Path.Combine(folder, "data"),
61 "-bindpath", Path.Combine(folder, "data"),
62 "-intermediateFolder", intermediateFolder,
63 "-o", Path.Combine(baseFolder, @"bin\test.msi")
64 });
65
66 result.AssertSuccess();
67
68 using (var output = WixOutput.Read(Path.Combine(baseFolder, @"bin\test.wixpdb")))
69 {
70 var intermediate = Intermediate.Load(output);
71 var component = intermediate.Sections.Single().Symbols.OfType<ComponentSymbol>().Single();
72 Assert.Equal(3, component.SourceLineNumbers.LineNumber);
73 Assert.Equal(5, component.SourceLineNumbers.Parent.LineNumber);
74
75 var encoded = component.SourceLineNumbers.GetEncoded();
76 var decoded = SourceLineNumber.CreateFromEncoded(encoded);
77 Assert.Equal(3, decoded.LineNumber);
78 Assert.Equal(5, decoded.Parent.LineNumber);
79 }
80 }
81 }
82
83 [Fact]
84 /// <remarks>
85 /// This test will fail on 32-bit operating systems because it depends on "CommonProgramFiles(x86)"
86 /// which is only defined on 64-bit Windows.
87 /// </remarks>
88 public void SupportParensInEnvironmentVariables()
89 {
90 var folder = TestData.Get(@"TestData", "Preprocessor");
91
92 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
93 var context = serviceProvider.GetService<IPreprocessContext>();
94 context.SourcePath = Path.Combine(folder, "EnvParens.wxs");
95
96 var preprocessor = serviceProvider.GetService<IPreprocessor>();
97 var result = preprocessor.Preprocess(context);
98 Assert.NotNull(result.Document);
99 }
100
101 [Fact]
102 public void VariableRedefinitionIsAWarning()
103 {
104 var folder = TestData.Get(@"TestData\Variables");
105
106 using (var fs = new DisposableFileSystem())
107 {
108 var baseFolder = fs.GetFolder();
109 var intermediateFolder = Path.Combine(baseFolder, "obj");
110
111 var result = WixRunner.Execute(warningsAsErrors: false, new[]
112 {
113 "build",
114 Path.Combine(folder, "Package.wxs"),
115 Path.Combine(folder, "PackageComponents.wxs"),
116 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
117 "-bindpath", Path.Combine(folder, "data"),
118 "-intermediateFolder", intermediateFolder,
119 "-o", Path.Combine(baseFolder, @"bin\test.msi")
120 });
121
122 result.AssertSuccess();
123
124 var warning = result.Messages.Where(message => message.Id == (int)WarningMessages.Ids.VariableDeclarationCollision);
125 Assert.Single(warning);
126 }
127 }
128
129 [Fact]
130 public void ForEachLoopsWork()
131 {
132 var folder = TestData.Get(@"TestData\ForEach");
133
134 using (var fs = new DisposableFileSystem())
135 {
136 var baseFolder = fs.GetFolder();
137 var intermediateFolder = Path.Combine(baseFolder, "obj");
138
139 var result = WixRunner.Execute(new[]
140 {
141 "build",
142 Path.Combine(folder, "Package.wxs"),
143 Path.Combine(folder, "PackageComponents.wxs"),
144 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
145 "-bindpath", Path.Combine(folder, "data"),
146 "-intermediateFolder", intermediateFolder,
147 "-o", Path.Combine(baseFolder, @"bin\test.msi")
148 });
149
150 result.AssertSuccess();
151 }
152 }
153
154 [Fact]
155 public void NonterminatedPreprocessorInstructionShowsSourceLineNumber()
156 {
157 var folder = TestData.Get(@"TestData\BadIf");
158
159 using (var fs = new DisposableFileSystem())
160 {
161 var baseFolder = fs.GetFolder();
162 var intermediateFolder = Path.Combine(baseFolder, "obj");
163
164 var result = WixRunner.Execute(new[]
165 {
166 "build",
167 Path.Combine(folder, "Package.wxs"),
168 Path.Combine(folder, "PackageComponents.wxs"),
169 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
170 "-bindpath", Path.Combine(folder, "data"),
171 "-intermediateFolder", intermediateFolder,
172 "-o", Path.Combine(baseFolder, @"bin\test.msi")
173 });
174
175 Assert.Equal(147, result.ExitCode);
176 Assert.StartsWith("Found a <?if?>", result.Messages.Single().ToString());
177 }
178 }
179 }
180}
181