예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }