aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-05-13 14:50:54 +1000
committerSean Hall <r.sean.hall@gmail.com>2020-05-13 15:35:53 +1000
commitb1b1028efeaf1e0bb3b56c4006450a60ff8e699d (patch)
tree46e7c3f6adbadce897a51fc87cedb6e7ad4df004
parente292e1373c17473923e83d79744c89c79d1b4d2a (diff)
downloadwix-b1b1028efeaf1e0bb3b56c4006450a60ff8e699d.tar.gz
wix-b1b1028efeaf1e0bb3b56c4006450a60ff8e699d.tar.bz2
wix-b1b1028efeaf1e0bb3b56c4006450a60ff8e699d.zip
Ensure inner exceptions from unexpected exceptions get logged.
-rw-r--r--src/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs43
-rw-r--r--src/wix/Program.cs2
2 files changed, 44 insertions, 1 deletions
diff --git a/src/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs b/src/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs
index d572a91a..aa44ba81 100644
--- a/src/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs
+++ b/src/test/WixToolsetTest.BuildTasks/WixBuildTaskFixture.cs
@@ -62,5 +62,48 @@ namespace WixToolsetTest.BuildTasks
62 Assert.Equal(@"test.txt", fileTuple[FileTupleFields.Source].PreviousValue.AsPath().Path); 62 Assert.Equal(@"test.txt", fileTuple[FileTupleFields.Source].PreviousValue.AsPath().Path);
63 } 63 }
64 } 64 }
65
66 [Fact(Skip = "Requires deleting wixnative.exe from output folder after build but before running the test.")]
67 public void ReportsInnerExceptionForUnexpectedExceptions()
68 {
69 var folder = TestData.Get(@"TestData\SimpleMsiPackage\MsiPackage");
70
71 using (var fs = new DisposableFileSystem())
72 {
73 var baseFolder = fs.GetFolder();
74 var intermediateFolder = Path.Combine(baseFolder, "obj");
75 var pdbPath = Path.Combine(baseFolder, @"bin\testpackage.wixpdb");
76 var engine = new FakeBuildEngine();
77
78 var task = new DoIt
79 {
80 BuildEngine = engine,
81 SourceFiles = new[]
82 {
83 new TaskItem(Path.Combine(folder, "Package.wxs")),
84 new TaskItem(Path.Combine(folder, "PackageComponents.wxs")),
85 },
86 LocalizationFiles = new[]
87 {
88 new TaskItem(Path.Combine(folder, "Package.en-us.wxl")),
89 },
90 BindInputPaths = new[]
91 {
92 new TaskItem(Path.Combine(folder, "data")),
93 },
94 IntermediateDirectory = new TaskItem(intermediateFolder),
95 OutputFile = new TaskItem(Path.Combine(baseFolder, @"bin\test.msi")),
96 PdbType = "Full",
97 PdbFile = new TaskItem(pdbPath),
98 };
99
100 var result = task.Execute();
101 Assert.False(result, $"MSBuild task succeeded unexpectedly. Output:\r\n{engine.Output}");
102
103 Assert.Contains(
104 "System.PlatformNotSupportedException: Could not find platform specific 'wixnative.exe' ---> System.IO.FileNotFoundException: Could not find internal piece of WiX Toolset from",
105 engine.Output);
106 }
107 }
65 } 108 }
66} 109}
diff --git a/src/wix/Program.cs b/src/wix/Program.cs
index e2012ad2..7e302078 100644
--- a/src/wix/Program.cs
+++ b/src/wix/Program.cs
@@ -41,7 +41,7 @@ namespace WixToolset.Tools
41 } 41 }
42 catch (Exception e) 42 catch (Exception e)
43 { 43 {
44 listener.Write(ErrorMessages.UnexpectedException(e.Message, e.GetType().ToString(), e.StackTrace)); 44 listener.Write(ErrorMessages.UnexpectedException(e));
45 45
46 if (e is NullReferenceException || e is SEHException) 46 if (e is NullReferenceException || e is SEHException)
47 { 47 {