@joebigelow / wix / commits / e35ee2e8

Report invalid command line arguments as errors

Fixes wixtoolset/issues#6313

Rob Mensching committed Jan 7, 2021 at 23:12 UTC e35ee2e8c58bf55da5f3d04915d588fb04d6809d
6 files changed +15 -12
src/WixToolset.Core/CommandLine/BuildCommand.cs
+2 -4
@@ -841,8 +841,7 @@ namespace WixToolset.Core.CommandLine
841 }
842 else
843 {
844 - this.Messaging.Write(ErrorMessages.IllegalSuppressWarningId(paramArg));
845 - parser.ErrorArgument = parameter;
844 + parser.ReportErrorArgument(parameter, ErrorMessages.IllegalSuppressWarningId(paramArg));
845 }
846 }
847
@@ -859,8 +858,7 @@ namespace WixToolset.Core.CommandLine
858 }
859 else
860 {
862 - this.Messaging.Write(ErrorMessages.IllegalSuppressWarningId(paramArg));
863 - parser.ErrorArgument = parameter;
861 + parser.ReportErrorArgument(parameter, ErrorMessages.IllegalSuppressWarningId(paramArg));
862 }
863 }
864 }
src/WixToolset.Core/CommandLine/CommandLine.cs
+3 -3
@@ -97,19 +97,19 @@ namespace WixToolset.Core.CommandLine
97 {
98 if (!this.TryParseCommand(arg, parser, extensions, out command))
99 {
100 - parser.ErrorArgument = arg;
100 + parser.ReportErrorArgument(arg);
101 }
102 }
103 else if (parser.IsSwitch(arg))
104 {
105 if (!command.TryParseArgument(parser, arg) && !TryParseCommandLineArgumentWithExtension(arg, parser, extensions))
106 {
107 - parser.ErrorArgument = arg;
107 + parser.ReportErrorArgument(arg);
108 }
109 }
110 else if (!TryParseCommandLineArgumentWithExtension(arg, parser, extensions) && !command.TryParseArgument(parser, arg))
111 {
112 - parser.ErrorArgument = arg;
112 + parser.ReportErrorArgument(arg);
113 }
114 }
115
src/WixToolset.Core/CommandLine/CommandLineParser.cs
+7 -1
@@ -12,7 +12,7 @@ namespace WixToolset.Core.CommandLine
12 {
13 private const string ExpectedArgument = "expected argument";
14
15 - public string ErrorArgument { get; set; }
15 + public string ErrorArgument { get; private set; }
16
17 private Queue<string> RemainingArguments { get; }
18
@@ -122,6 +122,12 @@ namespace WixToolset.Core.CommandLine
122 return false;
123 }
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 +
131 public bool TryGetNextSwitchOrArgument(out string arg)
132 {
133 if (this.RemainingArguments.Count > 0)
src/test/WixToolsetTest.CoreIntegration/BadInputFixture.cs
+1 -2
@@ -48,7 +48,7 @@ namespace WixToolsetTest.CoreIntegration
48 }
49 }
50
51 - [Fact(Skip = "Test demonstrates failure")]
51 + [Fact]
52 public void CantBuildSingleExeBundleWithInvalidArgument()
53 {
54 var folder = TestData.Get(@"TestData");
@@ -72,7 +72,6 @@ namespace WixToolsetTest.CoreIntegration
72 });
73
74 Assert.NotEqual(0, result.ExitCode);
75 -
75 Assert.False(File.Exists(exePath));
76 }
77 }
src/test/WixToolsetTest.CoreIntegration/CustomTableFixture.cs
+1 -1
@@ -216,7 +216,7 @@ namespace WixToolsetTest.CoreIntegration
216 result.AssertSuccess();
217 Assert.True(File.Exists(msiPath));
218
219 - result = WixRunner.Execute(new[]
219 + result = WixRunner.Execute(false, new[]
220 {
221 "decompile", msiPath,
222 "-intermediateFolder", intermediateFolder,
src/test/WixToolsetTest.CoreIntegration/DecompileFixture.cs
+1 -1
@@ -20,7 +20,7 @@ namespace WixToolsetTest.CoreIntegration
20 var intermediateFolder = fs.GetFolder();
21 var outputPath = Path.Combine(intermediateFolder, @"Actual.wxs");
22
23 - var result = WixRunner.Execute(new[]
23 + var result = WixRunner.Execute(false, new[]
24 {
25 "decompile",
26 Path.Combine(folder, msiName),