コード例 #1
0
        public static void Chutzpah(this ICakeContext context, Path testPath = null, ChutzpahSettings settings = null)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            var runner = new ChutzpahRunner(context.FileSystem, context.Environment, context.ProcessRunner, context.Tools);
            runner.Run(testPath, settings);
        }
コード例 #2
0
            public void ShouldThrowIfProcessHasANonZeroExitCode(
                [Frozen] IProcess process,
                [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                fileSystem.Exist(Arg.Any <FilePath>()).Returns(true);
                process.GetExitCode().Returns(3);

                sut.Invoking(s => s.Run())
                .ShouldThrow <CakeException>()
                .WithMessage("Chutzpah: Process returned an error (exit code 3).");
            }
コード例 #3
0
            public void ShouldThrowIfProcessHasANonZeroExitCode(
                [Frozen] IProcess process,
                [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                fileSystem.Exist(Arg.Any<FilePath>()).Returns(true);
                process.GetExitCode().Returns(3);

                sut.Invoking(s => s.Run())
                    .ShouldThrow<CakeException>()
                    .WithMessage("Chutzpah: Process returned an error (exit code 3).");
            }
コード例 #4
0
            public void ShouldThrowIfProcessWasNotStarted([Frozen] ICakeEnvironment environment,
                [Frozen] IProcessRunner processRunner,
                [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                environment.WorkingDirectory.Returns("/Working");
                fileSystem.Exist(Arg.Any<FilePath>()).Returns(true);
                processRunner.Start(Arg.Any<FilePath>(), Arg.Any<ProcessSettings>())
                    .Returns((IProcess)null);

                sut.Invoking(s => s.Run())
                    .ShouldThrow<CakeException>()
                    .WithMessage("Chutzpah: Process was not started.");
            }
コード例 #5
0
            public void ShouldThrowIfChutzpahExecutableNotFound(
                [Frozen] ICakeEnvironment environment, [Frozen] IFileSystem fileSystem,
                ChutzpahRunner sut)
            {
                environment.WorkingDirectory.Returns("/Working");
                fileSystem.Exist(
                    Arg.Is<FilePath>(a => a.FullPath.Contains("chutzpah.console.exe")))
                    .Returns(false);

                sut.Invoking(x => x.Run())
                    .ShouldThrow<CakeException>()
                    .WithMessage("Chutzpah: Could not locate executable.");
            }
コード例 #6
0
            public void ShouldBuildEmptyCommand([Frozen] IProcess process,
                                                [Frozen] IProcessRunner processRunner,
                                                [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                process.GetExitCode().Returns(0);
                fileSystem.Exist(Arg.Any <FilePath>()).Returns(true);

                sut.Run();

                processRunner.Received(1)
                .Start(Arg.Any <FilePath>(),
                       Arg.Is <ProcessSettings>(p => p.Arguments.Render() == string.Empty));
            }
コード例 #7
0
            public void ShouldThrowIfChutzpahExecutableNotFound(
                [Frozen] ICakeEnvironment environment, [Frozen] IFileSystem fileSystem, [Frozen] IToolLocator tools,
                ChutzpahRunner sut)
            {
                environment.WorkingDirectory.Returns("/Working");
                tools.Resolve(Arg.Any <string>()).Returns(null as FilePath);
                fileSystem.Exist(
                    Arg.Is <FilePath>(a => a.FullPath.Contains("chutzpah.console.exe")))
                .Returns(false);

                sut.Invoking(x => x.Run())
                .ShouldThrow <CakeException>()
                .WithMessage("Chutzpah: Could not locate executable.");
            }
コード例 #8
0
            public void ShouldSetWorkingDirectory([Frozen] ICakeEnvironment environment,
                [Frozen] IProcess process,
                [Frozen] IProcessRunner processRunner,
                [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                environment.WorkingDirectory.Returns("/Working");
                fileSystem.Exist(Arg.Any<FilePath>()).Returns(true);
                process.GetExitCode().Returns(0);

                sut.Run();

                processRunner.Received(1)
                    .Start(Arg.Any<FilePath>(),
                        Arg.Is<ProcessSettings>(ps => ps.WorkingDirectory.FullPath == "/Working"));
            }
コード例 #9
0
            public void ShouldSetWorkingDirectory([Frozen] ICakeEnvironment environment,
                                                  [Frozen] IProcess process,
                                                  [Frozen] IProcessRunner processRunner,
                                                  [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                environment.WorkingDirectory.Returns("/Working");
                fileSystem.Exist(Arg.Any <FilePath>()).Returns(true);
                process.GetExitCode().Returns(0);

                sut.Run();

                processRunner.Received(1)
                .Start(Arg.Any <FilePath>(),
                       Arg.Is <ProcessSettings>(ps => ps.WorkingDirectory.FullPath == "/Working"));
            }
コード例 #10
0
            public void ProcessRunnerShouldStartChutzpah([Frozen] ICakeEnvironment environment,
                [Frozen] IProcess process, [Frozen] IGlobber globber,
                [Frozen] IProcessRunner processRunner,
                [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                environment.WorkingDirectory.Returns("/Working");
                globber.Match("./tools/**/chutzpah.console.exe")
                    .Returns(new[] { (FilePath)"/Working/tools/chutzpah.console.exe" });
                process.GetExitCode().Returns(0);
                fileSystem.Exist(Arg.Any<FilePath>())
                    .Returns(true);

                sut.Run();

                processRunner.Received(1)
                    .Start(
                        Arg.Is<FilePath>(fp => fp.FullPath == "/Working/tools/chutzpah.console.exe"),
                        Arg.Any<ProcessSettings>());
            }
コード例 #11
0
            public void ShouldUseProvidedSettings([Frozen] IProcess process,
                                                  [Frozen] IProcessRunner processRunner,
                                                  [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                process.GetExitCode().Returns(0);
                fileSystem.Exist(Arg.Any <FilePath>()).Returns(true);

                var settings = new ChutzpahSettings
                {
                    NoLogo = true,
                    EnableCoverageCollection = true,
                    FailOnError                = true,
                    ForceTeamCityMode          = true,
                    CoverageHtmlOutputFile     = @"c:\temp\Code Coverage\coverage.html",
                    LaunchInBrowser            = ChutzpahBrowser.DefaultBrowser,
                    JUnitXmlResultsFile        = "junitResults.xml",
                    LcovResultsFile            = "lcov.dat",
                    VisualStudioTrxResultsFile = "testResults.trx",
                    NUnit2XmlResultsFile       = "nunit.xml",
                    MaxParallelism             = 1,
                    OutputRunningTestCount     = false,
                    PrintDebugInfo             = true,
                    Trace               = true,
                    ShowFailureReport   = true,
                    AdditionalTestPaths = { (FilePath)"testfile.js", (DirectoryPath)"tests" }
                };

                sut.Run(settings: settings);

                processRunner.Received(1)
                .Start(Arg.Any <FilePath>(),
                       Arg.Is <ProcessSettings>(
                           p =>
                           p.Arguments.Render() ==
                           "/nologo /coverage /failOnError /teamcity /coveragehtml " +
                           "\"c:/temp/Code Coverage/coverage.html\" /openInBrowser " +
                           "/junit \"junitResults.xml\" /lcov \"lcov.dat\" /trx \"testResults.trx\" " +
                           "/nunit2 \"nunit.xml\" /parallelism 1 /silent /debug /trace " +
                           "/showFailureReport /path \"testfile.js\" /path \"tests\""));
            }
コード例 #12
0
            public void ShouldBuildCommandWithTestFilePath([Frozen] IProcess process,
                                                           [Frozen] IProcessRunner processRunner,
                                                           [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                process.GetExitCode().Returns(0);
                fileSystem.Exist(Arg.Any <FilePath>()).Returns(true);

                sut.Run((FilePath)"mytests.js");

                processRunner.Received(1)
                .Start(Arg.Any <FilePath>(),
                       Arg.Is <ProcessSettings>(p => p.Arguments.Render() == "mytests.js"));
            }
コード例 #13
0
 public void ShouldImplementTool(ChutzpahRunner sut)
 {
     sut.Should().BeAssignableTo<Tool<ChutzpahSettings>>();
 }
コード例 #14
0
            public void ShouldUseProvidedSettings([Frozen] IProcess process,
                [Frozen] IProcessRunner processRunner,
                [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                process.GetExitCode().Returns(0);
                fileSystem.Exist(Arg.Any<FilePath>()).Returns(true);

                var settings = new ChutzpahSettings
                {
                    NoLogo = true,
                    EnableCoverageCollection = true,
                    FailOnError = true,
                    ForceTeamCityMode = true,
                    CoverageHtmlOutputFile = @"c:\temp\Code Coverage\coverage.html",
                    LaunchInBrowser = ChutzpahBrowser.DefaultBrowser,
                    JUnitXmlResultsFile = "junitResults.xml",
                    LcovResultsFile = "lcov.dat",
                    VisualStudioTrxResultsFile = "testResults.trx",
                    NUnit2XmlResultsFile = "nunit.xml",
                    MaxParallelism = 1,
                    OutputRunningTestCount = false,
                    PrintDebugInfo = true,
                    Trace = true,
                    ShowFailureReport = true,
                    AdditionalTestPaths = { (FilePath)"testfile.js", (DirectoryPath)"tests" }

                };

                sut.Run(settings: settings);

                processRunner.Received(1)
                    .Start(Arg.Any<FilePath>(),
                        Arg.Is<ProcessSettings>(
                            p =>
                                p.Arguments.Render() ==
                                "/nologo /coverage /failOnError /teamcity /coveragehtml " +
                                "\"c:/temp/Code Coverage/coverage.html\" /openInBrowser " +
                                "/junit \"junitResults.xml\" /lcov \"lcov.dat\" /trx \"testResults.trx\" " +
                                "/nunit2 \"nunit.xml\" /parallelism 1 /silent /debug /trace " +
                                "/showFailureReport /path \"testfile.js\" /path \"tests\""));
            }
コード例 #15
0
            public void ShouldOpenInNonDefaultBrowser([Frozen] IProcess process,
                [Frozen] IProcessRunner processRunner,
                [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                process.GetExitCode().Returns(0);
                fileSystem.Exist(Arg.Any<FilePath>()).Returns(true);

                var settings = new ChutzpahSettings
                {
                    LaunchInBrowser = ChutzpahBrowser.Chrome
                };

                sut.Run(settings: settings);

                processRunner.Received(1)
                    .Start(Arg.Any<FilePath>(),
                        Arg.Is<ProcessSettings>(
                            p => p.Arguments.Render() == "/openInBrowser Chrome"));
            }
コード例 #16
0
            public void ShouldThrowIfProcessWasNotStarted([Frozen] ICakeEnvironment environment,
                                                          [Frozen] IProcessRunner processRunner,
                                                          [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                environment.WorkingDirectory.Returns("/Working");
                fileSystem.Exist(Arg.Any <FilePath>()).Returns(true);
                processRunner.Start(Arg.Any <FilePath>(), Arg.Any <ProcessSettings>())
                .Returns((IProcess)null);

                sut.Invoking(s => s.Run())
                .ShouldThrow <CakeException>()
                .WithMessage("Chutzpah: Process was not started.");
            }
コード例 #17
0
 public void ShouldBeNamedChutzpah(ChutzpahRunner sut)
 {
     sut.Name.Should().Be("Chutzpah");
 }
コード例 #18
0
 public void ShouldUseProperExecutable(ChutzpahRunner sut)
 {
     sut.ToolExecutableNames.Should().BeEquivalentTo("chutzpah.console.exe");
 }
コード例 #19
0
 public void ShouldBeNamedChutzpah(ChutzpahRunner sut)
 {
     sut.Name.Should().Be("Chutzpah");
 }
コード例 #20
0
            public void ShouldOpenInNonDefaultBrowser([Frozen] IProcess process,
                                                      [Frozen] IProcessRunner processRunner,
                                                      [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                process.GetExitCode().Returns(0);
                fileSystem.Exist(Arg.Any <FilePath>()).Returns(true);

                var settings = new ChutzpahSettings
                {
                    LaunchInBrowser = ChutzpahBrowser.Chrome
                };

                sut.Run(settings: settings);

                processRunner.Received(1)
                .Start(Arg.Any <FilePath>(),
                       Arg.Is <ProcessSettings>(
                           p => p.Arguments.Render() == "/openInBrowser Chrome"));
            }
コード例 #21
0
 public void ShouldImplementTool(ChutzpahRunner sut)
 {
     sut.Should().BeAssignableTo <Tool <ChutzpahSettings> >();
 }
コード例 #22
0
            public void ShouldBuildCommandWithTestFilePath([Frozen] IProcess process,
                [Frozen] IProcessRunner processRunner,
                [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                process.GetExitCode().Returns(0);
                fileSystem.Exist(Arg.Any<FilePath>()).Returns(true);

                sut.Run((FilePath)"mytests.js");

                processRunner.Received(1)
                    .Start(Arg.Any<FilePath>(),
                        Arg.Is<ProcessSettings>(p => p.Arguments.Render() == "mytests.js"));
            }
コード例 #23
0
            public void ShouldBuildEmptyCommand([Frozen] IProcess process,
                [Frozen] IProcessRunner processRunner,
                [Frozen] IFileSystem fileSystem, ChutzpahRunner sut)
            {
                process.GetExitCode().Returns(0);
                fileSystem.Exist(Arg.Any<FilePath>()).Returns(true);

                sut.Run();

                processRunner.Received(1)
                    .Start(Arg.Any<FilePath>(),
                        Arg.Is<ProcessSettings>(p => p.Arguments.Render() == string.Empty));
            }
コード例 #24
0
 public void ShouldUseProperExecutable(ChutzpahRunner sut)
 {
     sut.ToolExecutableNames.Should().BeEquivalentTo("chutzpah.console.exe");
 }