private void RunStryker(StrykerOptions options) { // start with the stryker header PrintStykerASCIIName(); StrykerRunResult results = _stryker.RunMutationTest(options); if (!results.IsScoreAboveThresholdBreak()) { HandleBreakingThresholdScore(options, results); } }
private void RunStryker(StrykerOptions options) { PrintStykerASCIIName(); _ = PrintStrykerVersionInformationAsync(); StrykerRunResult results = _stryker.RunMutationTest(options, _logBuffer.GetMessages()); if (!results.IsScoreAboveThresholdBreak()) { HandleBreakingThresholdScore(options, results); } }
public void StrykerCLI_WithNoArgumentsAndEmptyConfig_ShouldStartStrykerWithDefaultOptions() { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); var options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>(), It.IsAny <IEnumerable <LogMessage> >())).Returns(runResults).Verifiable(); var target = new StrykerCLI(mock.Object); target.Run(new string[] { }); mock.VerifyAll(); }
public void StrykerCLI_WithNoArgumentsAndEmptyConfig_ShouldStartStrykerWithDefaultOptions() { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); StrykerOptions options = new StrykerOptions("", "Console", "", 1000, null, "trace", false, 1, 90, 80, 70); var runResults = new StrykerRunResult(options, 0.3M); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(runResults).Verifiable(); var target = new StrykerCLI(mock.Object); target.Run(new string[] { }); mock.VerifyAll(); }
public void StrykerCLI_WithLogLevelFileArgument_ShouldPassLogFileArgumentsToStryker(string argName) { StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); var mock = new Mock<IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName }); mock.Verify(x => x.RunMutationTest(It.Is<StrykerOptions>(o => o.LogOptions.LogToFile), It.IsAny<IEnumerable<LogMessage>>())); }
public void StrykerCLI_WithCustomThresholdBreakParameter_ShouldPassThresholdBreakToStryker(string argName) { StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); var mock = new Mock<IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "20" }); mock.Verify(x => x.RunMutationTest(It.Is<StrykerOptions>(o => o.Thresholds.Break == 20), It.IsAny<IEnumerable<LogMessage>>())); }
public void StrykerCLI_WithTestProjectsArgument_ShouldPassTestProjectArgumentsToStryker(string argName) { StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); var mock = new Mock<IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "['TestProjectFolder/SomeTestProjectName.csproj']" }); mock.Verify(x => x.RunMutationTest(It.Is<StrykerOptions>(o => o.TestProjects.Count() == 1), It.IsAny<IEnumerable<LogMessage>>())); }
public void StrykerCLI_WithSolutionArgument_ShouldPassSolutionArgumentPlusBasePathToStryker(string argName) { StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); var mock = new Mock<IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "SomeSolutionPath.sln" }); mock.Verify(x => x.RunMutationTest(It.Is<StrykerOptions>(o => o.SolutionPath.Contains("SomeSolutionPath.sln")), It.IsAny<IEnumerable<LogMessage>>())); }
public void StrykerCLI_WithReporterArgument_ShouldPassReporterArgumentsToStryker(string argName) { StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); var mock = new Mock<IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, $"['{ Reporter.ConsoleReport }', '{ Reporter.ConsoleProgressDots }']" }); mock.Verify(x => x.RunMutationTest(It.Is<StrykerOptions>(o => o.Reporters.Contains(Reporter.ConsoleReport) && o.Reporters.Contains(Reporter.ConsoleProgressDots)), It.IsAny<IEnumerable<LogMessage>>())); }
public void StrykerCLI_WithProjectArgument_ShouldPassProjectArgumentsToStryker(string argName) { StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); var mock = new Mock<IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "SomeProjectName.csproj" }); mock.Verify(x => x.RunMutationTest(It.Is<StrykerOptions>(o => o.ProjectUnderTestNameFilter == "SomeProjectName.csproj"), It.IsAny<IEnumerable<LogMessage>>())); }
public void ShouldSetMutationLevelWhenPassed(string argName) { StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); var mock = new Mock<IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "advanced" }); mock.Verify(x => x.RunMutationTest(It.Is<StrykerOptions>(o => o.MutationLevel == MutationLevel.Advanced), It.IsAny<IEnumerable<LogMessage>>())); }
public void StrykerCLI_WithDevModeArgument_ShouldPassDevModeArgumentsToStryker(string argName) { StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3M); var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName }); mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => o.DevMode))); }
public void StrykerCLI_WithTimeoutArgument_ShouldPassTimeoutToStryker(string argName) { StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); var mock = new Mock<IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "1000" }); mock.Verify(x => x.RunMutationTest(It.Is<StrykerOptions>(o => o.AdditionalTimeoutMS == 1000), It.IsAny<IEnumerable<LogMessage>>())); }
public void StrykerCLI_WithConfigFile_ShouldStartStrykerWithConfigFileOptions(string argName) { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3M); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(runResults).Verifiable(); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "filled-stryker-config.json" }); mock.VerifyAll(); }
public void StrykerCLI_WithReporterArgument_ShouldPassReporterArgumentsToStryker(string argName) { StrykerOptions options = new StrykerOptions("", "Console", "", 1000, null, "trace", false, 1, 90, 80, 70); var runResults = new StrykerRunResult(options, 0.3M); var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "Console" }); mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => o.Reporter == "Console"))); }
public void StrykerCLI_WithCustomThresholdBreakParameter_ShouldPassThresholdBreakToStryker(string argName) { StrykerOptions options = new StrykerOptions("", "Console", "", 1000, null, "trace", false, 1, 90, 80, 70); var runResults = new StrykerRunResult(options, 0.3M); var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "20" }); mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => o.ThresholdOptions.ThresholdBreak == 20))); }
public void StrykerCLI_OnMutationScoreEqualToNullAndThresholdBreakAbove0_ShouldReturnExitCode0() { var mock = new Mock<IStrykerRunner>(MockBehavior.Strict); StrykerOptions options = new StrykerOptions(thresholdBreak: 40); StrykerRunResult strykerRunResult = new StrykerRunResult(options, double.NaN); mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>())).Returns(strykerRunResult).Verifiable(); var target = new StrykerCLI(mock.Object); int result = target.Run(new string[] { }); mock.Verify(); target.ExitCode.ShouldBe(0); result.ShouldBe(0); }
public void StrykerCLI_WithMaxConcurrentTestrunnerArgument_ShouldPassValidatedConcurrentTestrunnersToStryker(string argName) { StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); var mock = new Mock<IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "4" }); mock.Verify(x => x.RunMutationTest(It.Is<StrykerOptions>(o => o.ConcurrentTestrunners <= 4), It.IsAny<IEnumerable<LogMessage>>())); }
public void StrykerCLI_WithTestProjectArgument_ShouldPassTestProjectArgumentsToStryker(string argName) { StrykerOptions options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3M); var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "TestProjectFolder/SomeTestProjectName.csproj" }); mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => o.TestProjectNameFilter == "TestProjectFolder/SomeTestProjectName.csproj"))); }
public void StrykerCLI_WithNoFilesToExcludeSet_ShouldPassDefaultValueToStryker() { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); var options = new StrykerOptions(); var strykerRunResult = new StrykerRunResult(options, 0.1); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>(), It.IsAny <IEnumerable <LogMessage> >())).Returns(() => strykerRunResult); var target = new StrykerCLI(mock.Object); target.Run(new string[] { }); mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => o.FilePatterns.Count() == 1), It.IsAny <IEnumerable <LogMessage> >())); }
public void StrykerCLI_WithNoFilesToExcludeSet_ShouldPassDefaultValueToStryker() { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); StrykerOptions options = new StrykerOptions(); StrykerRunResult strykerRunResult = new StrykerRunResult(options, 0.1M); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(() => strykerRunResult); var target = new StrykerCLI(mock.Object); target.Run(new string[] { }); mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => !o.FilesToExclude.Any()))); }
public void StrykerCLI_OnMutationScoreAboveThresholdBreak_ShouldReturnExitCode0() { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); StrykerOptions options = new StrykerOptions(thresholdBreak: 0); StrykerRunResult strykerRunResult = new StrykerRunResult(options, 0.1M); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(strykerRunResult).Verifiable(); var target = new StrykerCLI(mock.Object); int result = target.Run(new string[] { }); mock.Verify(); target.ExitCode.ShouldBe(0); result.ShouldBe(0); }
public void StrykerCLI_WithCustomThresholdHighParameter_ShouldPassThresholdHighToStryker(string argName) { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); StrykerOptions options = new StrykerOptions(); var runResult = new StrykerRunResult(options, 0.3M); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(runResult); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "90" }); mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => o.Thresholds.High == 90))); }
public void ShouldCreateDiffIgnoreGlobFiltersIfSpecified(string argName) { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); var options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>(), It.IsAny <IEnumerable <LogMessage> >())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName }); mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => o.DiffIgnoreFiles.Count() == 1), It.IsAny <IEnumerable <LogMessage> >())); }
public void ShouldSetDiskBaselineProviderWhenNotSpecifiedAndNoDashboardReporterSpecified() { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); var options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>(), It.IsAny <IEnumerable <LogMessage> >())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { }); mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => o.BaselineProvider == BaselineProvider.Disk), It.IsAny <IEnumerable <LogMessage> >())); }
public void ShouldSetGitDiffTargetWhenPassed(string argName) { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); var options = new StrykerOptions(); var runResults = new StrykerRunResult(options, 0.3); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>(), It.IsAny <IEnumerable <LogMessage> >())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new string[] { argName, "development" }); mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => o.GitDiffSource == "development"), It.IsAny <IEnumerable <LogMessage> >())); }
public void StrykerCLI_OnMutationScoreBelowThresholdBreak_ShouldReturnExitCode1() { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); var options = new StrykerOptions(thresholdBreak: 40); var strykerRunResult = new StrykerRunResult(options, 0.3); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>(), It.IsAny <IEnumerable <LogMessage> >())).Returns(strykerRunResult).Verifiable(); var target = new StrykerCLI(mock.Object); var result = target.Run(new string[] { }); mock.Verify(); target.ExitCode.ShouldBe(1); result.ShouldBe(1); }
public void StrykerCLI_OnMutationScoreAboveThresholdBreak_ShouldReturnExitCode0() { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); StrykerOptions options = new StrykerOptions("", "Console", "", 1000, null, "trace", false, 1, 90, 80, 0); StrykerRunResult strykerRunResult = new StrykerRunResult(options, 0.1M); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(strykerRunResult).Verifiable(); var target = new StrykerCLI(mock.Object); int result = target.Run(new string[] { }); mock.Verify(); Assert.Equal(0, target.ExitCode); Assert.Equal(0, result); }
public void StrykerCLI_OnMutationScoreBelowThresholdBreak_ShouldReturnExitCode1() { var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); StrykerOptions options = new StrykerOptions(thresholdBreak: 40); StrykerRunResult strykerRunResult = new StrykerRunResult(options, 0.3M); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(strykerRunResult).Verifiable(); var target = new StrykerCLI(mock.Object); int result = target.Run(new string[] { }); mock.Verify(); Assert.Equal(1, target.ExitCode); Assert.Equal(1, result); }
public void StrykerCLI_WithLogConsoleArgument_ShouldPassLogConsoleArgumentsToStryker(string argName) { StrykerOptions options = new StrykerOptions("", "Console", "", 1000, null, "trace", false, 1, 90, 80, 70); var runResults = new StrykerRunResult(options, 0.3M); var mock = new Mock <IStrykerRunner>(MockBehavior.Strict); mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(runResults); var target = new StrykerCLI(mock.Object); target.Run(new[] { argName, "debug" }); mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => o.LogOptions.LogLevel == LogEventLevel.Debug && o.LogOptions.LogToFile == false))); }