Example #1
0
        private void RunStryker(StrykerOptions options)
        {
            // start with the stryker header
            PrintStykerASCIIName();

            StrykerRunResult results = _stryker.RunMutationTest(options);

            if (!results.IsScoreAboveThresholdBreak())
            {
                HandleBreakingThresholdScore(options, results);
            }
        }
Example #2
0
        private void RunStryker(StrykerOptions options)
        {
            PrintStykerASCIIName();
            _ = PrintStrykerVersionInformationAsync();

            StrykerRunResult results = _stryker.RunMutationTest(options, _logBuffer.GetMessages());

            if (!results.IsScoreAboveThresholdBreak())
            {
                HandleBreakingThresholdScore(options, results);
            }
        }
Example #3
0
        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();
        }
Example #4
0
        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();
        }
Example #5
0
        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>>()));
        }
Example #6
0
        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>>()));
        }
Example #7
0
        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>>()));
        }
Example #8
0
        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>>()));
        }
Example #9
0
        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>>()));
        }
Example #10
0
        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>>()));
        }
Example #11
0
        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>>()));
        }
Example #12
0
        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)));
        }
Example #13
0
        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>>()));
        }
Example #14
0
        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();
        }
Example #15
0
        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")));
        }
Example #16
0
        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)));
        }
Example #17
0
        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);
        }
Example #18
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>>()));
        }
Example #19
0
        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")));
        }
Example #20
0
        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> >()));
        }
Example #21
0
        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())));
        }
Example #22
0
        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);
        }
Example #23
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)));
        }
Example #24
0
        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> >()));
        }
Example #25
0
        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> >()));
        }
Example #26
0
        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> >()));
        }
Example #27
0
        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);
        }
Example #28
0
        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);
        }
Example #29
0
        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);
        }
Example #30
0
        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)));
        }