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),