public async Task RunAsync_Cancellation_Test() { // Arrange using var console = new VirtualConsole(); var application = new CliApplicationBuilder() .AddCommand(typeof(CancellableCommand)) .UseConsole(console) .Build(); var commandLineArguments = new[] { "cancel" }; var environmentVariables = new Dictionary <string, string>(); // Act console.CancelAfter(TimeSpan.FromSeconds(0.2)); var exitCode = await application.RunAsync(commandLineArguments, environmentVariables); var stdOut = console.ReadOutputString().Trim(); var stdErr = console.ReadErrorString().Trim(); // Assert exitCode.Should().NotBe(0); stdOut.Should().BeNullOrWhiteSpace(); stdErr.Should().NotBeNullOrWhiteSpace(); Console.WriteLine(stdErr); }
public async Task RunAsync_Help_Test( IReadOnlyList <Type> commandTypes, IReadOnlyList <string> commandLineArguments, IReadOnlyList <string>?expectedSubstrings = null) { // Arrange using var console = new VirtualConsole(); var application = new CliApplicationBuilder() .AddCommands(commandTypes) .UseTitle(TestAppName) .UseExecutableName(TestAppName) .UseVersionText(TestVersionText) .UseConsole(console) .Build(); var environmentVariables = new Dictionary <string, string>(); // Act var exitCode = await application.RunAsync(commandLineArguments, environmentVariables); var stdOut = console.ReadOutputString().Trim(); // Assert exitCode.Should().Be(0); stdOut.Should().NotBeNullOrWhiteSpace(); if (expectedSubstrings != null) { stdOut.Should().ContainAll(expectedSubstrings); } Console.WriteLine(stdOut); }
public void Report_Redirected_Test() { // Arrange using var console = new VirtualConsole(); var ticker = console.CreateProgressTicker(); var progressValues = Enumerable.Range(0, 100).Select(p => p / 100.0).ToArray(); // Act foreach (var progress in progressValues) { ticker.Report(progress); } // Assert console.ReadOutputString().Should().BeEmpty(); }
public void Report_Test() { // Arrange using var console = new VirtualConsole(false); var ticker = console.CreateProgressTicker(); var progressValues = Enumerable.Range(0, 100).Select(p => p / 100.0).ToArray(); var progressStringValues = progressValues.Select(p => p.ToString("P2")).ToArray(); // Act foreach (var progress in progressValues) { ticker.Report(progress); } // Assert console.ReadOutputString().Should().ContainAll(progressStringValues); }