aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs8
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs18
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/TestData/Preprocessor/EnvParens.wxs4
3 files changed, 30 insertions, 0 deletions
diff --git a/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs b/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
index df301196..041c7d5d 100644
--- a/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/PreprocessHelper.cs
@@ -386,6 +386,14 @@ namespace WixToolset.Core.ExtensibilityServices
386 } 386 }
387 } 387 }
388 388
389 // Environment variables may contain parens so if it looks
390 // like a function, check to see if the environment variable
391 // prefix was explicitly provided.
392 if (isFunction && remainder.StartsWith("(env.", StringComparison.Ordinal))
393 {
394 isFunction = false;
395 }
396
389 // move the currentPosition to the closing paren 397 // move the currentPosition to the closing paren
390 currentPosition += closingParenPosition; 398 currentPosition += closingParenPosition;
391 399
diff --git a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
index a6504cb9..aad3ed73 100644
--- a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
@@ -40,6 +40,24 @@ namespace WixToolsetTest.CoreIntegration
40 } 40 }
41 41
42 [Fact] 42 [Fact]
43 /// <remarks>
44 /// This test will fail on 32-bit operating systems because it depends on "CommonProgramFiles(x86)"
45 /// which is only defined on 64-bit Windows.
46 /// </remarks>
47 public void SupportParensInEnvironmentVariables()
48 {
49 var folder = TestData.Get(@"TestData", "Preprocessor");
50
51 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
52 var context = serviceProvider.GetService<IPreprocessContext>();
53 context.SourcePath = Path.Combine(folder, "EnvParens.wxs");
54
55 var preprocessor = serviceProvider.GetService<IPreprocessor>();
56 var result = preprocessor.Preprocess(context);
57 Assert.NotNull(result.Document);
58 }
59
60 [Fact]
43 public void VariableRedefinitionIsAWarning() 61 public void VariableRedefinitionIsAWarning()
44 { 62 {
45 var folder = TestData.Get(@"TestData\Variables"); 63 var folder = TestData.Get(@"TestData\Variables");
diff --git a/src/test/WixToolsetTest.CoreIntegration/TestData/Preprocessor/EnvParens.wxs b/src/test/WixToolsetTest.CoreIntegration/TestData/Preprocessor/EnvParens.wxs
new file mode 100644
index 00000000..68d115c5
--- /dev/null
+++ b/src/test/WixToolsetTest.CoreIntegration/TestData/Preprocessor/EnvParens.wxs
@@ -0,0 +1,4 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 <?define Test = "$(env.CommonProgramFiles(x86))" ?>
4</Wix>