diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2020-05-13 14:50:54 +1000 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2020-05-13 15:35:53 +1000 |
commit | b1b1028efeaf1e0bb3b56c4006450a60ff8e699d (patch) | |
tree | 46e7c3f6adbadce897a51fc87cedb6e7ad4df004 | |
parent | e292e1373c17473923e83d79744c89c79d1b4d2a (diff) | |
download | wix-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.cs | 43 | ||||
-rw-r--r-- | src/wix/Program.cs | 2 |
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 | { |