コード例 #1
0
ファイル: Dotnet.cs プロジェクト: tom-mckinney/regi
        public async Task <AppProcess> ShutdownBuildServer(CommandOptions options, CancellationToken cancellationToken)
        {
            AppProcess shutdownBuildServer = CreateProcess(FrameworkCommands.DotnetCore.ShutdownBuildServer, options, _fileSystem);

            shutdownBuildServer.Start();
            await shutdownBuildServer.WaitForExitAsync(cancellationToken);

            return(shutdownBuildServer);
        }
コード例 #2
0
        public virtual async Task <AppProcess> Build(Project project, string appDirectoryPath, CommandOptions options, CancellationToken cancellationToken)
        {
            AppProcess build = CreateProcess(BuildCommand, project, appDirectoryPath, options);

            build.Start();

            await build.WaitForExitAsync(cancellationToken);

            return(build);
        }
コード例 #3
0
        public virtual async Task <AppProcess> Test(Project project, string appDirectoryPath, CommandOptions options, CancellationToken cancellationToken)
        {
            AppProcess test = CreateProcess(TestCommand, project, appDirectoryPath, options);

            test.Start();

            await test.WaitForExitAsync(cancellationToken);

            return(test);
        }
コード例 #4
0
        public virtual async Task <AppProcess> Install(Project project, string appDirectoryPath, CommandOptions options, CancellationToken cancellationToken)
        {
            AppProcess install = CreateProcess(InstallCommand, project, appDirectoryPath, options);

            install.Start();

            await install.WaitForExitAsync(cancellationToken);

            return(install);
        }
コード例 #5
0
        public virtual Task <AppProcess> Start(Project project, string appDirectoryPath, CommandOptions options, CancellationToken cancellationToken)
        {
            return(Task.Run(() =>
            {
                AppProcess start = CreateProcess(StartCommand, project, appDirectoryPath, options);

                start.Start();

                return start;
            }, cancellationToken));
        }
コード例 #6
0
        public virtual async Task <AppProcess> Kill(CommandOptions options, CancellationToken cancellationToken)
        {
            var        statuses = new List <AppStatus>();
            AppProcess process  = null;

            foreach (var name in ProcessNames)
            {
                process = new AppProcess(_platformService.GetKillProcess(name, options),
                                         AppTask.Kill,
                                         AppStatus.Running);

                try
                {
                    if (options.KillProcessesOnExit)
                    {
                        process.Start();
                        await process.WaitForExitAsync(cancellationToken);
                    }

                    statuses.Add(AppStatus.Success);
                }
                catch
                {
                    statuses.Add(AppStatus.Failure);
                }
            }

            if (statuses.Any(s => s == AppStatus.Failure))
            {
                process.Status = AppStatus.Failure;
            }
            else
            {
                process.Status = AppStatus.Success;
            }

            return(process);
        }
コード例 #7
0
        public async Task WaitForExitAsync_can_be_cancelled_by_cancellation_token()
        {
            var     runtimeInfo        = new RuntimeInfo();
            Process longRunningProcess = new Process
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName               = runtimeInfo.IsWindows ? "cmd" : "bash",
                    Arguments              = runtimeInfo.IsWindows ? "timeout 15" : "sleep 15",
                    RedirectStandardError  = true,
                    RedirectStandardOutput = true
                }
            };

            AppProcess process = new AppProcess(longRunningProcess, AppTask.Test, AppStatus.Running);


            process.Start();

            var cts = new CancellationTokenSource();

            var task = process.WaitForExitAsync(cts.Token);

            cts.Cancel();

            try
            {
                await task;
            }
            catch (Exception e)
            {
                Assert.IsType <TaskCanceledException>(e);
            }

            Assert.True(task.IsCanceled);
        }