Example #1
0
        public async Task Test_also_starts_every_requirement_for_each_test()
        {
            TestQueueService dependencyQueueService = new TestQueueService(_console);

            var tests = SampleProjects.ConfigurationDefault.Projects;

            ProjectManager.LinkProjectRequirements(tests, TestOptions.Create(), SampleProjects.ConfigurationDefault);

            _frameworkServiceProviderMock.Setup(m => m.CreateScopedQueueService())
            .Returns(dependencyQueueService)
            .Verifiable();

            _nodeServiceMock.Setup(m => m.Test(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new AppProcess(new Process(), AppTask.Test, AppStatus.Success))
            .Verifiable();
            _nodeServiceMock.Setup(m => m.Start(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new AppProcess(new Process(), AppTask.Start, AppStatus.Success))
            .Verifiable();
            _dotnetServiceMock.Setup(m => m.Test(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new AppProcess(new Process(), AppTask.Test, AppStatus.Success))
            .Verifiable();
            _dotnetServiceMock.Setup(m => m.Start(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new AppProcess(new Process(), AppTask.Start, AppStatus.Success))
            .Verifiable();

            var projects = await _runnerService.TestAsync(tests, TestOptions.Create(), CancellationToken.None);

            Assert.Equal(tests.Count, projects.Count);

            foreach (var project in projects)
            {
                var process = Assert.Single(project.Processes);
                Assert.Equal(AppTask.Test, process.Task);
                if (project.Requires?.Count > 0)
                {
                    Assert.Equal(project.Requires.Count, project.RequiredProjects.Count);
                    foreach (var requirement in project.Requires)
                    {
                        var requiredApp        = Assert.Single(project.RequiredProjects, p => p.Name == requirement);
                        var requiredAppProcess = Assert.Single(requiredApp.Processes);
                        Assert.Equal(AppTask.Start, requiredAppProcess.Task);

                        Assert.Contains(requiredApp.Port.Value, _queueService.ActivePorts);          // Waited on during InternalStart
                        Assert.Contains(requiredApp.Port.Value, dependencyQueueService.ActivePorts); // Waited on after starting Test dependencies
                    }
                }
            }

            _frameworkServiceProviderMock.Verify();
            _dotnetServiceMock.VerifyAll();
            _nodeServiceMock.VerifyAll();
        }
Example #2
0
        public RunnerServiceTests(ITestOutputHelper output)
        {
            _frameworkServiceProviderMock.Setup(m => m.GetFrameworkService(ProjectFramework.Dotnet))
            .Returns(_dotnetServiceMock.Object);
            _frameworkServiceProviderMock.Setup(m => m.GetFrameworkService(ProjectFramework.Node))
            .Returns(_nodeServiceMock.Object);

            _console       = new TestConsole(output);
            _queueService  = new TestQueueService(_console);
            _runnerService = new RunnerService(
                new ProjectManager(_console, new Mock <ICleanupService>().Object, new ProjectFilter()),
                _frameworkServiceProviderMock.Object,
                _queueService,
                _networkingServiceMock.Object,
                _platformServiceMock.Object,
                _fileSystem,
                _console);
        }
Example #3
0
        public async Task Install_will_also_install_for_any_required_dependencies()
        {
            TestQueueService dependencyQueueService = new TestQueueService(_console);

            _frameworkServiceProviderMock.Setup(m => m.CreateScopedQueueService())
            .Returns(dependencyQueueService)
            .Verifiable();
            _dotnetServiceMock.Setup(m => m.Install(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new AppProcess(new Process(), AppTask.Install, AppStatus.Success))
            .Verifiable();
            _nodeServiceMock.Setup(m => m.Install(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new AppProcess(new Process(), AppTask.Install, AppStatus.Success))
            .Verifiable();

            var options = TestOptions.Create();

            var projects = new List <Project> {
                SampleProjects.IntegrationTests
            };

            ProjectManager.LinkProjectRequirements(projects, options, SampleProjects.ConfigurationDefault);

            var outputProjects = await _runnerService.InstallAsync(projects, options, CancellationToken.None);

            var integrationTestProject = Assert.Single(outputProjects);

            Assert.Equal(2, integrationTestProject.RequiredProjects.Count);

            var dotnetApp = Assert.Single(integrationTestProject.RequiredProjects, p => p.Framework == ProjectFramework.Dotnet);

            Assert.Equal(AppTask.Install, dotnetApp.Processes.First().Task);
            Assert.Equal(AppStatus.Success, dotnetApp.OutputStatus);

            var nodeApp = Assert.Single(integrationTestProject.RequiredProjects, p => p.Framework == ProjectFramework.Node);

            Assert.Equal(AppTask.Install, nodeApp.Processes.First().Task);
            Assert.Equal(AppStatus.Success, nodeApp.OutputStatus);

            _frameworkServiceProviderMock.Verify();
            _dotnetServiceMock.Verify();
            _nodeServiceMock.Verify();
        }
Example #4
0
        public async Task Test_requirements_with_multiple_paths_will_start_every_path()
        {
            var dependencyQueue = new TestQueueService(_console);
            var appCollection   = SampleProjects.AppCollection;
            var testProject     = SampleProjects.XunitTests;

            testProject.Requires = new List <string> {
                appCollection.Name
            };
            testProject.RequiredProjects.Add(appCollection);

            _dotnetServiceMock.Setup(m => m.Test(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new AppProcess(new Process(), AppTask.Test, AppStatus.Success))
            .Verifiable();
            _frameworkServiceProviderMock.Setup(m => m.CreateScopedQueueService())
            .Returns(dependencyQueue)
            .Verifiable();

            foreach (var path in SampleProjects.AppCollection.Paths)
            {
                _dotnetServiceMock.Setup(m => m.Start(appCollection, It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()))
                .ReturnsAsync(new AppProcess(new Process(), AppTask.Start, AppStatus.Running))
                .Verifiable();
            }

            var projects = await _runnerService.TestAsync(new List <Project> {
                testProject
            }, TestOptions.Create(), CancellationToken.None);

            var actualTestProject = Assert.Single(projects);

            Assert.Same(testProject, actualTestProject);
            Assert.Single(testProject.Processes);
            var requiredProject = Assert.Single(testProject.RequiredProjects);

            Assert.Same(appCollection, requiredProject);
            Assert.Equal(3, requiredProject.Processes.Count);
            Assert.Equal(3, dependencyQueue.AsyncActions.Count);

            _dotnetServiceMock.Verify();
            _frameworkServiceProviderMock.Verify();
        }
Example #5
0
        public async Task Install_will_not_install_a_dependency_if_it_is_also_a_top_level_filtered_project()
        {
            TestQueueService dependencyQueueService = new TestQueueService(_console);

            _frameworkServiceProviderMock.Setup(m => m.CreateScopedQueueService())
            .Returns(dependencyQueueService)
            .Verifiable();
            _dotnetServiceMock.Setup(m => m.Install(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new AppProcess(new Process(), AppTask.Install, AppStatus.Success))
            .Verifiable();
            _nodeServiceMock.Setup(m => m.Install(It.IsAny <Project>(), It.IsAny <string>(), It.IsAny <CommandOptions>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new AppProcess(new Process(), AppTask.Install, AppStatus.Success))
            .Verifiable();

            var projects = SampleProjects.ConfigurationDefault.Projects;

            ProjectManager.LinkProjectRequirements(projects, TestOptions.Create(), SampleProjects.ConfigurationDefault);

            var outputProjects = await _runnerService.InstallAsync(projects, TestOptions.Create(), CancellationToken.None);

            var allAppsAndTests = SampleProjects.ConfigurationDefault.Projects;

            Assert.Equal(allAppsAndTests.Count, outputProjects.Count);

            foreach (var project in outputProjects)
            {
                if (project.RequiredProjects.Any())
                {
                    foreach (var requiredProject in project.RequiredProjects)
                    {
                        Assert.Empty(requiredProject.Processes);
                    }
                }
            }

            _frameworkServiceProviderMock.Verify();
            _dotnetServiceMock.Verify();
            _nodeServiceMock.Verify();
        }