aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/WixToolset.Core/Preprocessor.cs4
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs40
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/Package.wxs2
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/PackageComponents.wxs4
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/data/DontDoThis.wxi6
5 files changed, 50 insertions, 6 deletions
diff --git a/src/WixToolset.Core/Preprocessor.cs b/src/WixToolset.Core/Preprocessor.cs
index b111b291..81b17578 100644
--- a/src/WixToolset.Core/Preprocessor.cs
+++ b/src/WixToolset.Core/Preprocessor.cs
@@ -1351,7 +1351,7 @@ namespace WixToolset.Core
1351 1351
1352 if (state.Context.CurrentSourceLineNumber.LineNumber != newLine) 1352 if (state.Context.CurrentSourceLineNumber.LineNumber != newLine)
1353 { 1353 {
1354 state.Context.CurrentSourceLineNumber = new SourceLineNumber(state.Context.CurrentSourceLineNumber.FileName, newLine); 1354 state.Context.CurrentSourceLineNumber = new SourceLineNumber(state.Context.CurrentSourceLineNumber.FileName, state.Context.CurrentSourceLineNumber.Parent, newLine);
1355 } 1355 }
1356 } 1356 }
1357 } 1357 }
@@ -1372,7 +1372,7 @@ namespace WixToolset.Core
1372 1372
1373 state.CurrentFileStack.Push(path); 1373 state.CurrentFileStack.Push(path);
1374 state.SourceStack.Push(state.Context.CurrentSourceLineNumber); 1374 state.SourceStack.Push(state.Context.CurrentSourceLineNumber);
1375 state.Context.CurrentSourceLineNumber = new SourceLineNumber(path); 1375 state.Context.CurrentSourceLineNumber = new SourceLineNumber(path, state.Context.CurrentSourceLineNumber);
1376 state.IncludeNextStack.Push(true); 1376 state.IncludeNextStack.Push(true);
1377 } 1377 }
1378 1378
diff --git a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
index aad3ed73..89057991 100644
--- a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
@@ -8,6 +8,7 @@ namespace WixToolsetTest.CoreIntegration
8 using WixToolset.Core; 8 using WixToolset.Core;
9 using WixToolset.Core.TestPackage; 9 using WixToolset.Core.TestPackage;
10 using WixToolset.Data; 10 using WixToolset.Data;
11 using WixToolset.Data.Symbols;
11 using WixToolset.Extensibility.Data; 12 using WixToolset.Extensibility.Data;
12 using Xunit; 13 using Xunit;
13 14
@@ -40,6 +41,45 @@ namespace WixToolsetTest.CoreIntegration
40 } 41 }
41 42
42 [Fact] 43 [Fact]
44 public void IncludeSourceLineNumbersPreserved()
45 {
46 var folder = TestData.Get(@"TestData\IncludePath");
47
48 using (var fs = new DisposableFileSystem())
49 {
50 var baseFolder = fs.GetFolder();
51 var intermediateFolder = Path.Combine(baseFolder, "obj");
52
53 var result = WixRunner.Execute(warningsAsErrors: false, new[]
54 {
55 "build",
56 Path.Combine(folder, "Package.wxs"),
57 Path.Combine(folder, "PackageComponents.wxs"),
58 "-loc", Path.Combine(folder, "Package.en-us.wxl"),
59 "-includepath", Path.Combine(folder, "data"),
60 "-bindpath", Path.Combine(folder, "data"),
61 "-intermediateFolder", intermediateFolder,
62 "-o", Path.Combine(baseFolder, @"bin\test.msi")
63 });
64
65 result.AssertSuccess();
66
67 using (var output = WixOutput.Read(Path.Combine(baseFolder, @"bin\test.wixpdb")))
68 {
69 var intermediate = Intermediate.Load(output);
70 var component = intermediate.Sections.Single().Symbols.OfType<ComponentSymbol>().Single();
71 Assert.Equal(3, component.SourceLineNumbers.LineNumber);
72 Assert.Equal(5, component.SourceLineNumbers.Parent.LineNumber);
73
74 var encoded = component.SourceLineNumbers.GetEncoded();
75 var decoded = SourceLineNumber.CreateFromEncoded(encoded);
76 Assert.Equal(3, decoded.LineNumber);
77 Assert.Equal(5, decoded.Parent.LineNumber);
78 }
79 }
80 }
81
82 [Fact]
43 /// <remarks> 83 /// <remarks>
44 /// This test will fail on 32-bit operating systems because it depends on "CommonProgramFiles(x86)" 84 /// This test will fail on 32-bit operating systems because it depends on "CommonProgramFiles(x86)"
45 /// which is only defined on 64-bit Windows. 85 /// which is only defined on 64-bit Windows.
diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/Package.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/Package.wxs
index 6269fe9d..48a38e85 100644
--- a/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/Package.wxs
+++ b/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/Package.wxs
@@ -1,4 +1,4 @@
1<?include Package.wxi ?> 1<?include Package.wxi ?>
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 <Package Name="MsiPackage" Language="1033" Version="$(var.ProductVersion)" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a" Compressed="no" InstallerVersion="200" Scope="perMachine"> 3 <Package Name="MsiPackage" Language="1033" Version="$(var.ProductVersion)" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a" Compressed="no" InstallerVersion="200" Scope="perMachine">
4 4
diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/PackageComponents.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/PackageComponents.wxs
index e26c4509..7a0485ed 100644
--- a/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/PackageComponents.wxs
+++ b/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/PackageComponents.wxs
@@ -2,9 +2,7 @@
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> 2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 <Fragment> 3 <Fragment>
4 <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 4 <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
5 <Component> 5 <?include DontDoThis.wxi ?>
6 <File Source="test.txt" />
7 </Component>
8 </ComponentGroup> 6 </ComponentGroup>
9 </Fragment> 7 </Fragment>
10</Wix> 8</Wix>
diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/data/DontDoThis.wxi b/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/data/DontDoThis.wxi
new file mode 100644
index 00000000..03885e3e
--- /dev/null
+++ b/src/test/WixToolsetTest.CoreIntegration/TestData/IncludePath/data/DontDoThis.wxi
@@ -0,0 +1,6 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 <Component>
4 <File Source="test.txt" />
5 </Component>
6</Include>