diff options
| author | Rob Mensching <rob@firegiant.com> | 2021-01-07 23:12:49 -0800 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2021-01-08 15:47:31 -0800 |
| commit | e35ee2e8c58bf55da5f3d04915d588fb04d6809d (patch) | |
| tree | 4bf0cfd782ec990b6a5d4ac9aec390d44dee097b | |
| parent | 458ff7ce24b33f6df46ae8ef728685c555d55ff7 (diff) | |
| download | wix-e35ee2e8c58bf55da5f3d04915d588fb04d6809d.tar.gz wix-e35ee2e8c58bf55da5f3d04915d588fb04d6809d.tar.bz2 wix-e35ee2e8c58bf55da5f3d04915d588fb04d6809d.zip | |
Report invalid command line arguments as errors
Fixes wixtoolset/issues#6313
6 files changed, 15 insertions, 12 deletions
diff --git a/src/WixToolset.Core/CommandLine/BuildCommand.cs b/src/WixToolset.Core/CommandLine/BuildCommand.cs index fed95958..065467bd 100644 --- a/src/WixToolset.Core/CommandLine/BuildCommand.cs +++ b/src/WixToolset.Core/CommandLine/BuildCommand.cs | |||
| @@ -841,8 +841,7 @@ namespace WixToolset.Core.CommandLine | |||
| 841 | } | 841 | } |
| 842 | else | 842 | else |
| 843 | { | 843 | { |
| 844 | this.Messaging.Write(ErrorMessages.IllegalSuppressWarningId(paramArg)); | 844 | parser.ReportErrorArgument(parameter, ErrorMessages.IllegalSuppressWarningId(paramArg)); |
| 845 | parser.ErrorArgument = parameter; | ||
| 846 | } | 845 | } |
| 847 | } | 846 | } |
| 848 | 847 | ||
| @@ -859,8 +858,7 @@ namespace WixToolset.Core.CommandLine | |||
| 859 | } | 858 | } |
| 860 | else | 859 | else |
| 861 | { | 860 | { |
| 862 | this.Messaging.Write(ErrorMessages.IllegalSuppressWarningId(paramArg)); | 861 | parser.ReportErrorArgument(parameter, ErrorMessages.IllegalSuppressWarningId(paramArg)); |
| 863 | parser.ErrorArgument = parameter; | ||
| 864 | } | 862 | } |
| 865 | } | 863 | } |
| 866 | } | 864 | } |
diff --git a/src/WixToolset.Core/CommandLine/CommandLine.cs b/src/WixToolset.Core/CommandLine/CommandLine.cs index 5439eb39..0c21eaaa 100644 --- a/src/WixToolset.Core/CommandLine/CommandLine.cs +++ b/src/WixToolset.Core/CommandLine/CommandLine.cs | |||
| @@ -97,19 +97,19 @@ namespace WixToolset.Core.CommandLine | |||
| 97 | { | 97 | { |
| 98 | if (!this.TryParseCommand(arg, parser, extensions, out command)) | 98 | if (!this.TryParseCommand(arg, parser, extensions, out command)) |
| 99 | { | 99 | { |
| 100 | parser.ErrorArgument = arg; | 100 | parser.ReportErrorArgument(arg); |
| 101 | } | 101 | } |
| 102 | } | 102 | } |
| 103 | else if (parser.IsSwitch(arg)) | 103 | else if (parser.IsSwitch(arg)) |
| 104 | { | 104 | { |
| 105 | if (!command.TryParseArgument(parser, arg) && !TryParseCommandLineArgumentWithExtension(arg, parser, extensions)) | 105 | if (!command.TryParseArgument(parser, arg) && !TryParseCommandLineArgumentWithExtension(arg, parser, extensions)) |
| 106 | { | 106 | { |
| 107 | parser.ErrorArgument = arg; | 107 | parser.ReportErrorArgument(arg); |
| 108 | } | 108 | } |
| 109 | } | 109 | } |
| 110 | else if (!TryParseCommandLineArgumentWithExtension(arg, parser, extensions) && !command.TryParseArgument(parser, arg)) | 110 | else if (!TryParseCommandLineArgumentWithExtension(arg, parser, extensions) && !command.TryParseArgument(parser, arg)) |
| 111 | { | 111 | { |
| 112 | parser.ErrorArgument = arg; | 112 | parser.ReportErrorArgument(arg); |
| 113 | } | 113 | } |
| 114 | } | 114 | } |
| 115 | 115 | ||
diff --git a/src/WixToolset.Core/CommandLine/CommandLineParser.cs b/src/WixToolset.Core/CommandLine/CommandLineParser.cs index e78da47e..015d3e62 100644 --- a/src/WixToolset.Core/CommandLine/CommandLineParser.cs +++ b/src/WixToolset.Core/CommandLine/CommandLineParser.cs | |||
| @@ -12,7 +12,7 @@ namespace WixToolset.Core.CommandLine | |||
| 12 | { | 12 | { |
| 13 | private const string ExpectedArgument = "expected argument"; | 13 | private const string ExpectedArgument = "expected argument"; |
| 14 | 14 | ||
| 15 | public string ErrorArgument { get; set; } | 15 | public string ErrorArgument { get; private set; } |
| 16 | 16 | ||
| 17 | private Queue<string> RemainingArguments { get; } | 17 | private Queue<string> RemainingArguments { get; } |
| 18 | 18 | ||
| @@ -122,6 +122,12 @@ namespace WixToolset.Core.CommandLine | |||
| 122 | return false; | 122 | return false; |
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | public void ReportErrorArgument(string argument, Message message = null) | ||
| 126 | { | ||
| 127 | this.Messaging.Write(message ?? ErrorMessages.AdditionalArgumentUnexpected(argument)); | ||
| 128 | this.ErrorArgument = argument; | ||
| 129 | } | ||
| 130 | |||
| 125 | public bool TryGetNextSwitchOrArgument(out string arg) | 131 | public bool TryGetNextSwitchOrArgument(out string arg) |
| 126 | { | 132 | { |
| 127 | if (this.RemainingArguments.Count > 0) | 133 | if (this.RemainingArguments.Count > 0) |
diff --git a/src/test/WixToolsetTest.CoreIntegration/BadInputFixture.cs b/src/test/WixToolsetTest.CoreIntegration/BadInputFixture.cs index c5168856..62ffe1eb 100644 --- a/src/test/WixToolsetTest.CoreIntegration/BadInputFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/BadInputFixture.cs | |||
| @@ -48,7 +48,7 @@ namespace WixToolsetTest.CoreIntegration | |||
| 48 | } | 48 | } |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | [Fact(Skip = "Test demonstrates failure")] | 51 | [Fact] |
| 52 | public void CantBuildSingleExeBundleWithInvalidArgument() | 52 | public void CantBuildSingleExeBundleWithInvalidArgument() |
| 53 | { | 53 | { |
| 54 | var folder = TestData.Get(@"TestData"); | 54 | var folder = TestData.Get(@"TestData"); |
| @@ -72,7 +72,6 @@ namespace WixToolsetTest.CoreIntegration | |||
| 72 | }); | 72 | }); |
| 73 | 73 | ||
| 74 | Assert.NotEqual(0, result.ExitCode); | 74 | Assert.NotEqual(0, result.ExitCode); |
| 75 | |||
| 76 | Assert.False(File.Exists(exePath)); | 75 | Assert.False(File.Exists(exePath)); |
| 77 | } | 76 | } |
| 78 | } | 77 | } |
diff --git a/src/test/WixToolsetTest.CoreIntegration/CustomTableFixture.cs b/src/test/WixToolsetTest.CoreIntegration/CustomTableFixture.cs index 4a5cf544..3ee88640 100644 --- a/src/test/WixToolsetTest.CoreIntegration/CustomTableFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/CustomTableFixture.cs | |||
| @@ -216,7 +216,7 @@ namespace WixToolsetTest.CoreIntegration | |||
| 216 | result.AssertSuccess(); | 216 | result.AssertSuccess(); |
| 217 | Assert.True(File.Exists(msiPath)); | 217 | Assert.True(File.Exists(msiPath)); |
| 218 | 218 | ||
| 219 | result = WixRunner.Execute(new[] | 219 | result = WixRunner.Execute(false, new[] |
| 220 | { | 220 | { |
| 221 | "decompile", msiPath, | 221 | "decompile", msiPath, |
| 222 | "-intermediateFolder", intermediateFolder, | 222 | "-intermediateFolder", intermediateFolder, |
diff --git a/src/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs b/src/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs index b07f5bda..924337ba 100644 --- a/src/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs +++ b/src/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs | |||
| @@ -20,7 +20,7 @@ namespace WixToolsetTest.CoreIntegration | |||
| 20 | var intermediateFolder = fs.GetFolder(); | 20 | var intermediateFolder = fs.GetFolder(); |
| 21 | var outputPath = Path.Combine(intermediateFolder, @"Actual.wxs"); | 21 | var outputPath = Path.Combine(intermediateFolder, @"Actual.wxs"); |
| 22 | 22 | ||
| 23 | var result = WixRunner.Execute(new[] | 23 | var result = WixRunner.Execute(false, new[] |
| 24 | { | 24 | { |
| 25 | "decompile", | 25 | "decompile", |
| 26 | Path.Combine(folder, msiName), | 26 | Path.Combine(folder, msiName), |
