Esempio n. 1
0
        public void FilterMutants_FiltersNoMutants_IfTestsChanged()
        {
            // Arrange
            var baselineProvider = new Mock <IBaselineProvider>();

            baselineProvider.Setup(x =>
                                   x.Load(It.IsAny <string>())
                                   ).Returns(
                Task.FromResult(
                    JsonReport.Build(new StrykerOptions(), JsonReportTestHelper.CreateProjectWith().ToReadOnlyInputComponent())
                    ));

            var diffProvider    = new Mock <IDiffProvider>(MockBehavior.Loose);
            var gitInfoProvider = new Mock <IGitInfoProvider>();

            var options = new StrykerOptions(compareToDashboard: false, projectVersion: "version");

            diffProvider.Setup(x => x.ScanDiff()).Returns(new DiffResult
            {
                ChangedSourceFiles = new List <string>(),
                ChangedTestFiles   = new List <string> {
                    "C:/testfile1.cs"
                }
            });

            var target = new DiffMutantFilter(options, diffProvider.Object, baselineProvider.Object, gitInfoProvider.Object);

            var testFile1 = new TestListDescription(new[] { new TestDescription(Guid.NewGuid().ToString(), "name1", "C:/testfile1.cs") });
            var testFile2 = new TestListDescription(new[] { new TestDescription(Guid.NewGuid().ToString(), "name2", "C:/testfile2.cs") });

            var expectedToStay1 = new Mutant
            {
                CoveringTests = testFile1
            };
            var expectedToStay2 = new Mutant
            {
                CoveringTests = testFile1
            };
            var mutants = new List <Mutant>
            {
                expectedToStay1,
                expectedToStay2,
                new Mutant
                {
                    CoveringTests = testFile2
                }
            };

            // Act
            var results = target.FilterMutants(mutants, new CsharpFileLeaf().ToReadOnly(), options);

            // Assert
            results.ShouldBe(new [] { expectedToStay1, expectedToStay2 });
        }
Esempio n. 2
0
        public async Task Save_Calls_DashboardClient_With_version()
        {
            var strykerOptions = new StrykerOptions();

            var dashboardClient = new Mock <IDashboardClient>();

            dashboardClient.Setup(x => x.PublishReport(It.IsAny <string>(), It.IsAny <string>()));

            var target = new DashboardBaselineProvider(strykerOptions, dashboardClient.Object);

            await target.Save(JsonReport.Build(strykerOptions, JsonReportTestHelper.CreateProjectWith()), "version");

            dashboardClient.Verify(x => x.PublishReport(It.IsAny <string>(), It.Is <string>(x => x == "version")), Times.Once);
        }
        public void FilterMutants_FiltersNoMutants_IfTestsChanged()
        {
            // Arrange
            var baselineProvider = new Mock <IBaselineProvider>();

            baselineProvider.Setup(x =>
                                   x.Load(It.IsAny <string>())
                                   ).Returns(
                Task.FromResult(
                    JsonReport.Build(new StrykerOptions(), JsonReportTestHelper.CreateProjectWith())
                    ));

            var diffProvider    = new Mock <IDiffProvider>(MockBehavior.Loose);
            var gitInfoProvider = new Mock <IGitInfoProvider>();

            var options = new StrykerOptions(compareToDashboard: false, projectVersion: "version");

            diffProvider.Setup(x => x.ScanDiff()).Returns(new DiffResult
            {
                ChangedFiles     = new List <string>(),
                TestFilesChanged = new List <string> {
                    "C:/testfile.cs"
                }
            });

            var target = new DiffMutantFilter(options, diffProvider.Object, baselineProvider.Object, gitInfoProvider.Object);

            var testDescriptions = new List <TestDescription> {
                new TestDescription(Guid.NewGuid().ToString(), "name", "C:/testfile.cs")
            };
            var testListDescription = new TestListDescription(testDescriptions);

            var mutants = new List <Mutant>
            {
                new Mutant {
                    CoveringTests = testListDescription
                },
                new Mutant(),
                new Mutant()
            };

            // Act
            var results = target.FilterMutants(mutants, new FileLeaf(), options);

            // Assert
            results.Count().ShouldBe(1);
        }
Esempio n. 4
0
        public async Task ShouldWriteToDisk()
        {
            // Arrange
            var fileSystemMock = new MockFileSystem();
            var options        = new StrykerOptions(basePath: @"C:/Users/JohnDoe/Project/TestFolder", fileSystem: fileSystemMock);
            var sut            = new DiskBaselineProvider(options, fileSystemMock);

            // Act
            await sut.Save(JsonReport.Build(options, JsonReportTestHelper.CreateProjectWith()), "version");

            // Assert
            var path = FilePathUtils.NormalizePathSeparators(@"C:/Users/JohnDoe/Project/TestFolder/StrykerOutput/Baselines/version/stryker-report.json");

            MockFileData file = fileSystemMock.GetFile(path);

            file.ShouldNotBeNull();
        }
Esempio n. 5
0
        public void FilterMutantsForStatusNotRunReturnsAllMutantsWithStatusNotRun()
        {
            // Arrange
            var dashboardClient = new Mock <IDashboardClient>();

            dashboardClient.Setup(x =>
                                  x.PullReport(It.IsAny <string>())
                                  ).Returns(
                Task.FromResult(
                    JsonReport.Build(new StrykerOptions(), JsonReportTestHelper.CreateProjectWith())
                    ));

            var diffProvider   = new Mock <IDiffProvider>(MockBehavior.Loose);
            var branchProvider = new Mock <IGitInfoProvider>();

            var options = new StrykerOptions(compareToDashboard: true, projectVersion: "version");

            diffProvider.Setup(x => x.ScanDiff()).Returns(new DiffResult
            {
                TestsChanged = false,
                ChangedFiles = new List <string>()
            });

            var target = new DiffMutantFilter(options, diffProvider.Object, dashboardClient.Object, branchProvider.Object);

            var mutants = new List <Mutant>
            {
                new Mutant()
                {
                    ResultStatus = MutantStatus.NotRun
                },
                new Mutant()
                {
                    ResultStatus = MutantStatus.NotRun
                },
                new Mutant()
                {
                    ResultStatus = MutantStatus.Killed
                }
            };

            var results = target.FilterMutants(mutants, new FileLeaf(), options);

            results.Count().ShouldBe(2);
        }
Esempio n. 6
0
        public async Task ShouldLoadReportFromDisk()
        {
            // Arrange
            var fileSystemMock = new MockFileSystem();
            var options        = new StrykerOptions(basePath: @"C:/Users/JohnDoe/Project/TestFolder", fileSystem: fileSystemMock);

            var report = JsonReport.Build(options, JsonReportTestHelper.CreateProjectWith());

            fileSystemMock.AddFile("C:/Users/JohnDoe/Project/TestFolder/StrykerOutput/Baselines/version/stryker-report.json", report.ToJson());

            var target = new DiskBaselineProvider(options, fileSystemMock);

            // Act
            var result = await target.Load("version");

            // Assert
            result.ShouldNotBeNull();
            result.ToJson().ShouldBe(report.ToJson());
        }
Esempio n. 7
0
        public void Should_ReturnAllMutants_When_NonSourceCodeFile_In_Tests_Has_Changed()
        {
            // Arrange
            var options = new StrykerOptions(compareToDashboard: true, projectVersion: "version");

            var diffProviderMock     = new Mock <IDiffProvider>();
            var baselineProviderMock = new Mock <IBaselineProvider>();
            var gitInfoProviderMock  = new Mock <IGitInfoProvider>(MockBehavior.Loose);

            var diffResult = new DiffResult()
            {
                ChangedTestFiles = new List <string> {
                    "config.json"
                }
            };

            diffProviderMock.Setup(x => x.ScanDiff()).Returns(diffResult);

            baselineProviderMock.Setup(x =>
                                       x.Load(It.IsAny <string>())
                                       ).Returns(
                Task.FromResult(
                    JsonReport.Build(new StrykerOptions(), JsonReportTestHelper.CreateProjectWith().ToReadOnlyInputComponent())
                    ));

            var target = new DiffMutantFilter(options, diffProviderMock.Object, baselineProviderMock.Object, gitInfoProviderMock.Object);

            var mutants = new List <Mutant> {
                new Mutant(), new Mutant(), new Mutant()
            };

            // Act
            var result = target.FilterMutants(mutants, new CsharpFileLeaf()
            {
                FullPath = "C:\\Foo\\Bar"
            }.ToReadOnly(), options);

            // Assert
            result.ShouldBe(mutants);
        }
Esempio n. 8
0
        public void Should_IgnoreMutants_WithoutCoveringTestsInfo_When_Tests_Have_Changed()
        {
            // Arrange
            var baselineProvider = new Mock <IBaselineProvider>();

            baselineProvider.Setup(x =>
                                   x.Load(It.IsAny <string>())
                                   ).Returns(
                Task.FromResult(
                    JsonReport.Build(new StrykerOptions(), JsonReportTestHelper.CreateProjectWith().ToReadOnlyInputComponent())
                    ));

            var diffProvider    = new Mock <IDiffProvider>(MockBehavior.Loose);
            var gitInfoProvider = new Mock <IGitInfoProvider>();

            var options = new StrykerOptions(compareToDashboard: false, projectVersion: "version");

            diffProvider.Setup(x => x.ScanDiff()).Returns(new DiffResult
            {
                ChangedSourceFiles = new List <string>(),
                ChangedTestFiles   = new List <string> {
                    "C:/testfile.cs"
                }
            });

            var target = new DiffMutantFilter(options, diffProvider.Object, baselineProvider.Object, gitInfoProvider.Object);

            var mutants = new List <Mutant>
            {
                new Mutant()
            };

            // Act
            var results = target.FilterMutants(mutants, new CsharpFileLeaf().ToReadOnly(), options);

            // Assert
            results.ShouldBeEmpty();
        }
        public void FilterMutantsFiltersAll_WhenNoTestsChanged_CompareToDashboardDisabled_AndFileNotCahnged()
        {
            // Arrange
            var baselineProvider = new Mock <IBaselineProvider>();

            baselineProvider.Setup(x =>
                                   x.Load(It.IsAny <string>())
                                   ).Returns(
                Task.FromResult(
                    JsonReport.Build(new StrykerOptions(), JsonReportTestHelper.CreateProjectWith())
                    ));

            var diffProvider   = new Mock <IDiffProvider>(MockBehavior.Loose);
            var branchProvider = new Mock <IGitInfoProvider>();

            var options = new StrykerOptions(compareToDashboard: false, projectVersion: "version");

            diffProvider.Setup(x => x.ScanDiff()).Returns(new DiffResult
            {
                ChangedFiles = new List <string>(),
            });

            var target = new DiffMutantFilter(options, diffProvider.Object, baselineProvider.Object, branchProvider.Object);

            var mutants = new List <Mutant>
            {
                new Mutant(),
                new Mutant(),
                new Mutant()
            };

            // Act
            var results = target.FilterMutants(mutants, new FileLeaf(), options);

            // Assert
            results.Count().ShouldBe(0);
        }
        public void FilterMutantsForStatusNotRunReturnsAllMutantsWithStatusNotRun()
        {
            // Arrange
            var baselineProvider = new Mock <IBaselineProvider>();

            baselineProvider.Setup(x => x.Load(It.IsAny <string>())).ReturnsAsync(JsonReport.Build(new StrykerOptions(), JsonReportTestHelper.CreateProjectWith()));

            var diffProvider   = new Mock <IDiffProvider>(MockBehavior.Loose);
            var branchProvider = new Mock <IGitInfoProvider>();

            var options = new StrykerOptions(compareToDashboard: true, projectVersion: "version");

            diffProvider.Setup(x => x.ScanDiff()).Returns(new DiffResult
            {
                ChangedFiles = new List <string>()
            });

            var target = new DiffMutantFilter(options, diffProvider.Object, baselineProvider.Object, branchProvider.Object);

            var tree         = CSharpSyntaxTree.ParseText("void M(){ int i = 0 + 8; }");
            var originalNode = tree.GetRoot().DescendantNodes().OfType <BinaryExpressionSyntax>().First();

            var mutation = new Mutation()
            {
                OriginalNode    = originalNode,
                ReplacementNode = SyntaxFactory.BinaryExpression(SyntaxKind.SubtractExpression, originalNode.Left, originalNode.Right),
                DisplayName     = "This name should display",
                Type            = Mutator.Arithmetic
            };

            var mutants = new List <Mutant>
            {
                new Mutant()
                {
                    Id           = 1,
                    ResultStatus = MutantStatus.NotRun,
                    Mutation     = mutation
                },
                new Mutant()
                {
                    Id           = 2,
                    ResultStatus = MutantStatus.NotRun,
                    Mutation     = mutation
                },
                new Mutant()
                {
                    Id           = 3,
                    ResultStatus = MutantStatus.Killed,
                    Mutation     = mutation
                }
            };

            // Act
            var results = target.FilterMutants(mutants, new FileLeaf()
            {
                RelativePath = "src/1/SomeFile0.cs"
            }, options);

            // Assert
            results.Count().ShouldBe(3);
        }