From 17c7a4f7d690d1823587259e6a6e6ea5ba3927f8 Mon Sep 17 00:00:00 2001 From: Frank Ray <52075808+FrankRay78@users.noreply.github.com> Date: Wed, 9 Oct 2024 10:20:11 +0100 Subject: [PATCH] Cover -v and --version options in unit tests --- .../Unit/CommandAppTests.Version.cs | 97 +++++++++++++++---- 1 file changed, 78 insertions(+), 19 deletions(-) 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 e0a48ee2..d47670f6 100644 --- a/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Version.cs +++ b/src/Tests/Spectre.Console.Cli.Tests/Unit/CommandAppTests.Version.cs @@ -1,3 +1,5 @@ +using System.Runtime.InteropServices; + namespace Spectre.Console.Tests.Unit.Cli; public sealed partial class CommandAppTests @@ -17,8 +19,10 @@ public sealed partial class CommandAppTests result.Output.ShouldStartWith("Spectre.Cli version "); } - [Fact] - public void Should_Output_Application_Version_To_The_Console_With_No_Command() + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Output_Application_Version_To_The_Console_With_No_Command(string versionOption) { // Given var fixture = new CommandAppTester(); @@ -28,14 +32,16 @@ public sealed partial class CommandAppTests }); // When - var result = fixture.Run("--version"); + var result = fixture.Run(versionOption); // Then result.Output.ShouldBe("1.0"); } - [Fact] - public void Should_Not_Display_Version_If_Not_Specified() + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Not_Display_Version_If_Not_Specified(string versionOption) { // Given var fixture = new CommandAppTester(); @@ -45,15 +51,17 @@ public sealed partial class CommandAppTests }); // When - var result = fixture.Run("--version"); + var result = fixture.Run(versionOption); // Then result.ExitCode.ShouldNotBe(0); - result.Output.ShouldStartWith("Error: Unexpected option 'version'"); + result.Output.ShouldStartWith($"Error: Unexpected option '{versionOption.Replace("-", "")}'"); } - [Fact] - public void Should_Execute_Command_Not_Output_Application_Version_To_The_Console() + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Execute_Command_Not_Output_Application_Version_To_The_Console(string versionOption) { // Given var fixture = new CommandAppTester(); @@ -64,15 +72,17 @@ public sealed partial class CommandAppTests }); // When - var result = fixture.Run("empty", "--version"); + var result = fixture.Run("empty", versionOption); // Then result.Output.ShouldBe(string.Empty); - result.Context.ShouldHaveRemainingArgument("--version", new[] { (string)null }); + result.Context.ShouldHaveRemainingArgument(versionOption, new[] { (string)null }); } - [Fact] - public void Should_Execute_Default_Command_Not_Output_Application_Version_To_The_Console() + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Output_Application_Version_To_The_Console_With_Default_Command(string versionOption) { // Given var fixture = new CommandAppTester(); @@ -83,15 +93,16 @@ public sealed partial class CommandAppTests }); // When - var result = fixture.Run("--version"); + var result = fixture.Run(versionOption); // Then - result.Output.ShouldBe(string.Empty); - result.Context.ShouldHaveRemainingArgument("--version", new[] { (string)null }); + result.Output.ShouldBe("1.0"); } - [Fact] - public void Should_Output_Application_Version_To_The_Console_With_Branch_Default_Command() + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Output_Application_Version_To_The_Console_With_Branch_Default_Command(string versionOption) { // Given var fixture = new CommandAppTester(); @@ -105,10 +116,58 @@ public sealed partial class CommandAppTests }); // When - var result = fixture.Run("--version"); + var result = fixture.Run(versionOption); // Then result.Output.ShouldBe("1.0"); } + + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Execute_Branch_Default_Command_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); + + // Then + result.Output.ShouldBe(string.Empty); + result.Context.ShouldHaveRemainingArgument(versionOption, new[] { (string)null }); + } + + [Theory] + [InlineData("-v")] + [InlineData("--version")] + public void Should_Execute_Branch_Command_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); + + // Then + result.Output.ShouldBe(string.Empty); + result.Context.ShouldHaveRemainingArgument(versionOption, new[] { (string)null }); + } } }