From bc297c9aba20e9f3b2093af05f1fa28155795d36 Mon Sep 17 00:00:00 2001 From: Inok Date: Tue, 11 Feb 2020 02:25:30 +0300 Subject: [PATCH] #2089 fix parsing of command line switch arguments --- .../Extensions/StringExtensions.cs | 4 +- .../ArgumentParserTests.cs | 46 +++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/GitVersionCore/Extensions/StringExtensions.cs b/src/GitVersionCore/Extensions/StringExtensions.cs index a1b8dcb9ce..96274c17b9 100644 --- a/src/GitVersionCore/Extensions/StringExtensions.cs +++ b/src/GitVersionCore/Extensions/StringExtensions.cs @@ -105,7 +105,9 @@ public static bool ArgumentRequiresValue(this string argument, int argumentIndex "init", "updateassemblyinfo", "ensureassemblyinfo", - "nofetch" + "nofetch", + "nonormalize", + "nocache", }; var argumentMightRequireValue = !booleanArguments.Contains(argument.Substring(1), StringComparer.OrdinalIgnoreCase); diff --git a/src/GitVersionExe.Tests/ArgumentParserTests.cs b/src/GitVersionExe.Tests/ArgumentParserTests.cs index 761f6b787e..575577913d 100644 --- a/src/GitVersionExe.Tests/ArgumentParserTests.cs +++ b/src/GitVersionExe.Tests/ArgumentParserTests.cs @@ -327,6 +327,22 @@ public void OtherArgumentsCanBeParsedBeforeNofetch() arguments.NoFetch.ShouldBe(true); } + [Test] + public void OtherArgumentsCanBeParsedBeforeNonormalize() + { + var arguments = argumentParser.ParseArguments("targetpath -nonormalize"); + arguments.TargetPath.ShouldBe("targetpath"); + arguments.NoNormalize.ShouldBe(true); + } + + [Test] + public void OtherArgumentsCanBeParsedBeforeNocache() + { + var arguments = argumentParser.ParseArguments("targetpath -nocache"); + arguments.TargetPath.ShouldBe("targetpath"); + arguments.NoCache.ShouldBe(true); + } + [Test] public void OtherArgumentsCanBeParsedAfterNofetch() { @@ -335,6 +351,36 @@ public void OtherArgumentsCanBeParsedAfterNofetch() arguments.Proj.ShouldBe("foo.sln"); } + [Test] + public void OtherArgumentsCanBeParsedAfterNonormalize() + { + var arguments = argumentParser.ParseArguments("-nonormalize -proj foo.sln"); + arguments.NoNormalize.ShouldBe(true); + arguments.Proj.ShouldBe("foo.sln"); + } + + [Test] + public void OtherArgumentsCanBeParsedAfterNocache() + { + var arguments = argumentParser.ParseArguments("-nocache -proj foo.sln"); + arguments.NoCache.ShouldBe(true); + arguments.Proj.ShouldBe("foo.sln"); + } + + [TestCase("-nofetch -nonormalize -nocache")] + [TestCase("-nofetch -nocache -nonormalize")] + [TestCase("-nocache -nofetch -nonormalize")] + [TestCase("-nocache -nonormalize -nofetch")] + [TestCase("-nonormalize -nocache -nofetch")] + [TestCase("-nonormalize -nofetch -nocache")] + public void SeveralSwitchesCanBeParsed(string commandLineArgs) + { + var arguments = argumentParser.ParseArguments(commandLineArgs); + arguments.NoCache.ShouldBe(true); + arguments.NoNormalize.ShouldBe(true); + arguments.NoFetch.ShouldBe(true); + } + [Test] public void LogPathCanContainForwardSlash() {