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