diff --git a/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Version.cs b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Version.cs index 9894946..e5cf5ce 100644 --- a/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Version.cs +++ b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Version.cs @@ -43,10 +43,6 @@ public sealed partial class CommandAppTests { // Given var fixture = new CommandAppTester(); - fixture.Configure(configurator => - { - configurator.AddCommand("empty"); - }); // When var result = fixture.Run(versionOption); @@ -56,6 +52,26 @@ public sealed partial class CommandAppTests result.Output.ShouldStartWith($"Error: Unexpected option '{versionOption.Replace("-", "")}'"); } + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Output_Application_Version_To_The_Console_With_Default_Command(string versionOption) + { + // Given + var fixture = new CommandAppTester(); + fixture.SetDefaultCommand(); + fixture.Configure(configurator => + { + configurator.SetApplicationVersion("1.0"); + }); + + // When + var result = fixture.Run(versionOption); + + // Then + result.Output.ShouldBe("1.0"); + } + [Theory] [InlineData("-v")] [InlineData("--version")] @@ -77,26 +93,6 @@ public sealed partial class CommandAppTests result.Context.ShouldHaveRemainingArgument(versionOption, new[] { (string)null }); } - [Theory] - [InlineData("-v")] - [InlineData("--version")] - public void Should_Output_Application_Version_To_The_Console_With_Default_Command(string versionOption) - { - // Given - var fixture = new CommandAppTester(); - fixture.SetDefaultCommand(); - fixture.Configure(configurator => - { - configurator.SetApplicationVersion("1.0"); - }); - - // When - var result = fixture.Run(versionOption); - - // Then - result.Output.ShouldBe("1.0"); - } - [Theory] [InlineData("-v")] [InlineData("--version")] @@ -156,16 +152,106 @@ public sealed partial class CommandAppTests configurator.SetApplicationVersion("1.0"); configurator.AddBranch("branch", branch => { - branch.AddCommand("hello"); + branch.AddCommand("empty"); }); }); // When - var result = fixture.Run("branch", "hello", versionOption); + var result = fixture.Run("branch", "empty", versionOption); // Then result.Output.ShouldBe(string.Empty); result.Context.ShouldHaveRemainingArgument(versionOption, new[] { (string)null }); } + + /// + /// When a command with a version option in the settings is set as the application default command, + /// then execute this command instead of displaying the explicitly set Application Version. + /// + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Execute_Default_VersionCommand_Not_Output_Application_Version_To_The_Console(string versionOption) + { + // Given + var fixture = new CommandAppTester(); + fixture.SetDefaultCommand(); + fixture.Configure(configurator => + { + configurator.SetApplicationVersion("1.0"); + }); + + // When + var result = fixture.Run(versionOption, "X.Y.Z"); + + // Then + result.Output.ShouldBe("VersionCommand ran, Version: X.Y.Z"); + } + + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Execute_VersionCommand_Not_Output_Application_Version_To_The_Console(string versionOption) + { + // Given + var fixture = new CommandAppTester(); + fixture.Configure(configurator => + { + configurator.SetApplicationVersion("1.0"); + configurator.AddCommand("hello"); + }); + + // When + var result = fixture.Run("hello", versionOption, "X.Y.Z"); + + // Then + result.Output.ShouldBe("VersionCommand ran, Version: X.Y.Z"); + } + + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Execute_Branch_Default_VersionCommand_Not_Output_Application_Version_To_The_Console(string versionOption) + { + // Given + var fixture = new CommandAppTester(); + fixture.Configure(configurator => + { + configurator.SetApplicationVersion("1.0"); + configurator.AddBranch("branch", branch => + { + branch.SetDefaultCommand(); + }); + }); + + // When + var result = fixture.Run("branch", versionOption, "X.Y.Z"); + + // Then + result.Output.ShouldBe("VersionCommand ran, Version: X.Y.Z"); + } + + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Execute_Branch_VersionCommand_Not_Output_Application_Version_To_The_Console(string versionOption) + { + // Given + var fixture = new CommandAppTester(); + fixture.Configure(configurator => + { + configurator.SetApplicationVersion("1.0"); + configurator.AddBranch("branch", branch => + { + branch.AddCommand("hello"); + }); + }); + + // When + var result = fixture.Run("branch", "hello", versionOption, "X.Y.Z"); + + // Then + result.Output.ShouldBe("VersionCommand ran, Version: X.Y.Z"); + } } }