From cfe0878bcdf68d9acbcd807978fa5842e1b793c9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 9 Oct 2025 23:37:25 +0000 Subject: [PATCH 1/4] Initial plan From f2fdc53222122b20576887fa9fde1671f942cd4e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 9 Oct 2025 23:44:31 +0000 Subject: [PATCH 2/4] Escape markup in file paths for console output Co-authored-by: StevanFreeborn <65925598+StevanFreeborn@users.noreply.github.com> --- .../Commands/DefaultCommand.cs | 4 ++-- .../Unit/Commands/DefaultCommandTests.cs | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 tests/StreamShorts.Console.Tests/Unit/Commands/DefaultCommandTests.cs diff --git a/src/StreamShorts.Console/Commands/DefaultCommand.cs b/src/StreamShorts.Console/Commands/DefaultCommand.cs index c3f878b..60c6308 100644 --- a/src/StreamShorts.Console/Commands/DefaultCommand.cs +++ b/src/StreamShorts.Console/Commands/DefaultCommand.cs @@ -68,7 +68,7 @@ internal sealed class DefaultCommand( public override async Task ExecuteAsync(CommandContext context, Settings settings) { - _console.MarkupLine($"[blue]Processing stream:[/] {settings.Stream}"); + _console.MarkupLine($"[blue]Processing stream:[/] {settings.Stream.EscapeMarkup()}"); var videoStream = _fileSystem.File.OpenRead(settings.Stream); Stream? audioStream = null; @@ -147,7 +147,7 @@ internal sealed class DefaultCommand( }); var directoryUri = new Uri(outputDirectoryPath).AbsoluteUri; - var panel = new Panel($"[blue link={directoryUri}]{artifactsOutputDirectory}[/]") + var panel = new Panel($"[blue link={directoryUri}]{artifactsOutputDirectory.EscapeMarkup()}[/]") { Header = new PanelHeader($"[blue]Shorts created[/] [green]successfully![/]") }; diff --git a/tests/StreamShorts.Console.Tests/Unit/Commands/DefaultCommandTests.cs b/tests/StreamShorts.Console.Tests/Unit/Commands/DefaultCommandTests.cs new file mode 100644 index 0000000..a1d4071 --- /dev/null +++ b/tests/StreamShorts.Console.Tests/Unit/Commands/DefaultCommandTests.cs @@ -0,0 +1,21 @@ +namespace StreamShorts.Console.Tests.Unit.Commands; + +using Spectre.Console; + +public class DefaultCommandTests +{ + [Theory] + [InlineData("file[with]brackets.mp4", "file[[with]]brackets.mp4")] + [InlineData("normal-file.mp4", "normal-file.mp4")] + [InlineData("file_with_underscores.mp4", "file_with_underscores.mp4")] + [InlineData("file with spaces.mp4", "file with spaces.mp4")] + [InlineData("[brackets].mp4", "[[brackets]].mp4")] + public void EscapeMarkup_ShouldProperlyEscapeSquareBrackets(string input, string expected) + { + // Act + var result = input.EscapeMarkup(); + + // Assert + result.Should().Be(expected); + } +} From 662d899196620fc8993673f05a8fc87515ef8387 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 9 Oct 2025 23:46:59 +0000 Subject: [PATCH 3/4] Add markup escaping to validation error message Co-authored-by: StevanFreeborn <65925598+StevanFreeborn@users.noreply.github.com> --- src/StreamShorts.Console/Commands/DefaultCommand.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/StreamShorts.Console/Commands/DefaultCommand.cs b/src/StreamShorts.Console/Commands/DefaultCommand.cs index 60c6308..7208db7 100644 --- a/src/StreamShorts.Console/Commands/DefaultCommand.cs +++ b/src/StreamShorts.Console/Commands/DefaultCommand.cs @@ -53,7 +53,7 @@ internal sealed class DefaultCommand( if (_fileSystem.File.Exists(settings.Stream) is false) { - return ValidationResult.Error($"The specified stream file '{settings.Stream}' does not exist."); + return ValidationResult.Error($"The specified stream file '{settings.Stream.EscapeMarkup()}' does not exist."); } var fileExtension = _fileSystem.Path.GetExtension(settings.Stream).ToUpperInvariant(); From 3656dd74630cada2f9e7a54add1b64f545098ca2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 00:04:54 +0000 Subject: [PATCH 4/4] Fix test naming convention and remove unnecessary comments Co-authored-by: StevanFreeborn <65925598+StevanFreeborn@users.noreply.github.com> --- .../Unit/Commands/DefaultCommandTests.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/StreamShorts.Console.Tests/Unit/Commands/DefaultCommandTests.cs b/tests/StreamShorts.Console.Tests/Unit/Commands/DefaultCommandTests.cs index a1d4071..8cd7a03 100644 --- a/tests/StreamShorts.Console.Tests/Unit/Commands/DefaultCommandTests.cs +++ b/tests/StreamShorts.Console.Tests/Unit/Commands/DefaultCommandTests.cs @@ -10,12 +10,10 @@ public class DefaultCommandTests [InlineData("file_with_underscores.mp4", "file_with_underscores.mp4")] [InlineData("file with spaces.mp4", "file with spaces.mp4")] [InlineData("[brackets].mp4", "[[brackets]].mp4")] - public void EscapeMarkup_ShouldProperlyEscapeSquareBrackets(string input, string expected) + public void EscapeMarkup_WhenCalledWithVariousInputs_ItShouldProperlyEscapeSquareBrackets(string input, string expected) { - // Act var result = input.EscapeMarkup(); - // Assert result.Should().Be(expected); } }