public async Task ConsoleCancelKey() { _tempDir .WithCSharpProject("testproj") .WithTargetFrameworks("netcoreapp3.1") .Dir() .WithFile("Program.cs") .Create(); var output = new StringBuilder(); _console.Error = _console.Out = new StringWriter(output); using (var app = new Program(_console, _tempDir.Root)) { var run = app.RunAsync(new[] { "run" }); await _console.CancelKeyPressSubscribed.TimeoutAfter(TimeSpan.FromSeconds(30)); _console.ConsoleCancelKey(); var exitCode = await run.TimeoutAfter(TimeSpan.FromSeconds(30)); Assert.Contains("Shutdown requested. Press Ctrl+C again to force exit.", output.ToString()); Assert.Equal(0, exitCode); } }
public async Task ConsoleCancelKey() { var console = new TestConsole(_output); var testAsset = _testAssetsManager.CopyTestAsset(AppName) .WithSource() .Path; using var watchableApp = new WatchableApp(testAsset, _output); using var app = new Program(console, testAsset); var run = app.RunAsync(new[] { "run" }); await console.CancelKeyPressSubscribed.TimeoutAfter(TimeSpan.FromSeconds(30)); console.ConsoleCancelKey(); var exitCode = await run.TimeoutAfter(TimeSpan.FromSeconds(30)); Assert.Contains("Shutdown requested. Press Ctrl+C again to force exit.", console.GetOutput()); Assert.Equal(0, exitCode); }