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); }
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); }
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); }
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); }
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)); }
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); }
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); }