diff --git a/DiscordChatExporter.Cli/Utils/Extensions/ConsoleExtensions.cs b/DiscordChatExporter.Cli/Utils/Extensions/ConsoleExtensions.cs index c19e45c..85194db 100644 --- a/DiscordChatExporter.Cli/Utils/Extensions/ConsoleExtensions.cs +++ b/DiscordChatExporter.Cli/Utils/Extensions/ConsoleExtensions.cs @@ -7,14 +7,31 @@ namespace DiscordChatExporter.Cli.Utils.Extensions { internal static class ConsoleExtensions { - public static IAnsiConsole CreateAnsiConsole(this IConsole console) => AnsiConsole.Create( - new AnsiConsoleSettings - { - Ansi = AnsiSupport.Detect, - ColorSystem = ColorSystemSupport.Detect, - Out = new AnsiConsoleOutput(console.Output) - } - ); + private class NoopExclusivityMode : IExclusivityMode + { + public T Run(Func func) => func(); + + public Task Run(Func> func) => func(); + } + + public static IAnsiConsole CreateAnsiConsole(this IConsole console) + { + // Don't require exclusivity in tests. + // Workaround for: https://github.com/spectreconsole/spectre.console/issues/494 + var exclusivityMode = console is FakeConsole + ? new NoopExclusivityMode() + : null; + + return AnsiConsole.Create( + new AnsiConsoleSettings + { + Ansi = AnsiSupport.Detect, + ColorSystem = ColorSystemSupport.Detect, + Out = new AnsiConsoleOutput(console.Output), + ExclusivityMode = exclusivityMode + } + ); + } public static Progress CreateProgressTicker(this IConsole console) => console .CreateAnsiConsole()