protected override async Task <int> ExecuteAsync(IList <Project> projects, CancellationToken cancellationToken) { await _runnerService.StartAsync(projects, Options, cancellationToken); while (_options.RunIndefinitely && !cancellationToken.IsCancellationRequested) { await Task.Delay(200); } return(0); }
public async Task Start_returns_a_project_for_every_app_in_startup_config() { var configuration = SampleProjects.ConfigurationGood; _dotnetServiceMock.Setup(m => m.Start(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>())) .ReturnsAsync((Project p, string s, CommandOptions o, CancellationToken c) => new AppProcess(new Process(), AppTask.Start, AppStatus.Success, p?.Port)) //.ReturnsAsync<Project, string, RegiOptions, CancellationToken>((p, s, o, c) => new AppProcess(new Process(), AppTask.Start, AppStatus.Success, p?.Port)) .Verifiable(); _nodeServiceMock.Setup(m => m.Start(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>())) .ReturnsAsync((Project p, string s, CommandOptions o, CancellationToken c) => new AppProcess(new Process(), AppTask.Start, AppStatus.Success, p?.Port)) //.ReturnsAsync<Project, string, RegiOptions, CancellationToken>((p, s, o, c) => new AppProcess(new Process(), AppTask.Start, AppStatus.Success, p?.Port)) .Verifiable(); var processes = await _runnerService.StartAsync(configuration.Projects, TestOptions.Create(), CancellationToken.None); Assert.Equal(configuration.Projects.Count, processes.Count); Assert.Single(processes, p => p.Port == 9080); Assert.Equal(processes.Count(p => p.Port.HasValue), _queueService.ActivePorts.Distinct().Count()); _dotnetServiceMock.Verify(m => m.Start(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()), Times.Exactly(configuration.Projects.Count(a => a.Framework == ProjectFramework.Dotnet))); _nodeServiceMock.Verify(m => m.Start(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()), Times.Exactly(configuration.Projects.Count(a => a.Framework == ProjectFramework.Node))); }