Unit tests to ensure VersionCommand executes when -v|--version is specified, rather than showing the ApplicationVersion number

This commit is contained in:
Frank Ray 2024-10-11 17:07:55 +01:00 committed by Patrik Svensson
parent 75b3b83210
commit cefb51df7b

View File

@ -43,10 +43,6 @@ public sealed partial class CommandAppTests
{
// Given
var fixture = new CommandAppTester();
fixture.Configure(configurator =>
{
configurator.AddCommand<EmptyCommand>("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<EmptyCommand>();
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<EmptyCommand>();
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<EmptyCommandSettings>("branch", branch =>
{
branch.AddCommand<EmptyCommand>("hello");
branch.AddCommand<EmptyCommand>("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 });
}
/// <summary>
/// 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.
/// </summary>
[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<Spectre.Console.Tests.Data.VersionCommand>();
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<Spectre.Console.Tests.Data.VersionCommand>("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<VersionSettings>("branch", branch =>
{
branch.SetDefaultCommand<Spectre.Console.Tests.Data.VersionCommand>();
});
});
// 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<VersionSettings>("branch", branch =>
{
branch.AddCommand<Spectre.Console.Tests.Data.VersionCommand>("hello");
});
});
// When
var result = fixture.Run("branch", "hello", versionOption, "X.Y.Z");
// Then
result.Output.ShouldBe("VersionCommand ran, Version: X.Y.Z");
}
}
}