Пример #1
0
            public void Will_add_exception_to_errors_and_move_to_next_test_file()
            {
                var runner  = new TestableTestRunner();
                var summary = new TestFileSummary("somePath");

                summary.AddTestCase(new TestCase());
                var testCallback = new MockTestMethodRunnerCallback();
                var exception    = new Exception();
                var context      = runner.SetupTestContext(testRunnerPath: "testRunner.js", testPaths: new [] { @"path\tests1.html" });

                runner.SetupTestContext(testRunnerPath: "testRunner.js", testPaths: new [] { @"path\tests2.html" }, @throw: true);
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests1.html")).Throws(exception);
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests2.html")).Returns(@"D:\path\tests2.html");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("testRunner.js")).Returns("runner.js");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(TestRunner.HeadlessBrowserName)).Returns("browserPath");
                var args = TestableTestRunner.BuildArgs("runner.js", "file:///D:/harnessPath.html", "execution", Constants.DefaultTestFileTimeout);

                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput("browserPath", args, It.IsAny <Func <ProcessStream, IList <TestFileSummary> > >()))
                .Returns(new ProcessResult <IList <TestFileSummary> >(0, new List <TestFileSummary> {
                    summary
                }));

                TestCaseSummary res = runner.ClassUnderTest.RunTests(new[] { @"path\tests1.html", @"path\tests2.html" }, testCallback.Object);

                testCallback.Verify(x => x.FileError(It.IsAny <TestError>()));
                Assert.Equal(1, res.Errors.Count);
                Assert.Equal(1, res.TotalCount);
            }
Пример #2
0
            public void Will_run_test_files_found_from_chutzpah_json_files()
            {
                var runner  = new TestableTestRunner();
                var summary = new TestFileSummary("somePath");

                summary.AddTestCase(new TestCase());
                var context = runner.SetupTestContext(testRunnerPath: "runner");

                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner")).Returns("jsPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(TestRunner.HeadlessBrowserName)).Returns("browserPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\chutzpah.json")).Returns(@"D:\path\chutzpah.json");
                runner.Mock <IFileProbe>()
                .Setup(x => x.FindScriptFiles(It.IsAny <ChutzpahTestSettingsFile>()))
                .Returns(new List <PathInfo> {
                    new PathInfo {
                        FullPath = @"path\tests.html"
                    }
                });
                var args = TestableTestRunner.BuildArgs("jsPath", "file:///D:/harnessPath.html", "execution", Constants.DefaultTestFileTimeout);

                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput("browserPath", args, It.IsAny <Func <ProcessStream, IList <TestFileSummary> > >()))
                .Returns(new ProcessResult <IList <TestFileSummary> >(0, new List <TestFileSummary> {
                    summary
                }));

                TestCaseSummary res = runner.ClassUnderTest.RunTests(@"path\chutzpah.json");


                Assert.Equal(1, res.TotalCount);
                runner.Mock <IFileProbe>()
                .Verify(x => x.FindScriptFiles(It.IsAny <List <string> >()), Times.Never());
            }
Пример #3
0
            public void Will_run_test_files_found_from_given_folder_path()
            {
                var runner  = new TestableTestRunner();
                var summary = new TestFileSummary("somePath");

                summary.AddTestCase(new TestCase());
                var context = new TestContext {
                    TestHarnessPath = @"D:\harnessPath.html", TestRunner = "runner"
                };

                runner.Mock <ITestContextBuilder>().Setup(x => x.TryBuildContext(It.IsAny <PathInfo>(), It.IsAny <TestOptions>(), out context)).Returns(true);
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner")).Returns("jsPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(TestRunner.HeadlessBrowserName)).Returns("browserPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html");
                runner.Mock <IFileProbe>()
                .Setup(x => x.FindScriptFiles(new List <string> {
                    @"path\testFolder"
                }, It.IsAny <TestingMode>()))
                .Returns(new List <PathInfo> {
                    new PathInfo {
                        FullPath = @"path\tests.html"
                    }
                });
                var args = TestableTestRunner.BuildArgs("jsPath", "file:///D:/harnessPath.html", "execution", Constants.DefaultTestFileTimeout);

                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput("browserPath", args, It.IsAny <Func <ProcessStream, TestFileSummary> >()))
                .Returns(new ProcessResult <TestFileSummary>(0, summary));

                TestCaseSummary res = runner.ClassUnderTest.RunTests(@"path\testFolder");

                Assert.Equal(1, res.TotalCount);
            }
Пример #4
0
            public void Will_use_timeout_from_context_if_exists()
            {
                var runner  = new TestableTestRunner();
                var summary = new TestFileSummary("somePath");

                summary.AddTestCase(new TestCase());
                var context = runner.SetupTestContext(testRunnerPath: "runner");

                context.TestFileSettings.TestFileTimeout = 6000;
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner")).Returns("jsPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(TestRunner.HeadlessBrowserName)).Returns("browserPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html");
                var args = TestableTestRunner.BuildArgs("jsPath", "file:///D:/harnessPath.html", "execution", 6000);

                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput("browserPath", args, It.IsAny <Func <ProcessStream, IList <TestFileSummary> > >()))
                .Returns(new ProcessResult <IList <TestFileSummary> >(0, new List <TestFileSummary> {
                    summary
                }));

                TestCaseSummary res = runner.ClassUnderTest.RunTests(@"path\tests.html", new TestOptions {
                    TestFileTimeoutMilliseconds = 5000
                });

                Assert.Equal(1, res.TotalCount);
            }
Пример #5
0
            public void Will_pass_timeout_option_to_test_runner()
            {
                var runner  = new TestableTestRunner();
                var summary = new TestFileSummary("somePath");

                summary.AddTestCase(new TestCase());
                var context = new TestContext {
                    TestHarnessPath = @"D:\harnessPath.html", TestRunner = "runner"
                };

                runner.Mock <ITestContextBuilder>().Setup(x => x.TryBuildContext(It.IsAny <PathInfo>(), It.IsAny <TestOptions>(), out context)).Returns(true);
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner")).Returns("jsPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(TestRunner.HeadlessBrowserName)).Returns("browserPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html");
                var args = TestableTestRunner.BuildArgs("jsPath", "file:///D:/harnessPath.html", "execution", 5000);

                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput("browserPath", args, It.IsAny <Func <ProcessStream, TestFileSummary> >()))
                .Returns(new ProcessResult <TestFileSummary>(0, summary));

                TestCaseSummary res = runner.ClassUnderTest.RunTests(@"path\tests.html", new TestOptions {
                    TestFileTimeoutMilliseconds = 5000
                });

                Assert.Equal(1, res.TotalCount);
            }
Пример #6
0
            public void Will_batch_test_files_with_same_context_given_testFileBatching_setting_is_enabled()
            {
                var runner  = new TestableTestRunner();
                var summary = new TestFileSummary("somePath");

                summary.AddTestCase(new TestCase());
                var context1 = runner.SetupTestContext(harnessPath: @"D:\harnessPath1.html", testRunnerPath: "runner1", testPaths: new[] { @"path\tests1.js", @"path\tests2.js" });
                var context2 = runner.SetupTestContext(harnessPath: @"D:\harnessPath2.htm", testRunnerPath: "runner2", testPaths: new[] { @"path2\tests1.js", @"path2\tests2.js" });

                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner1")).Returns("jsPath1");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner2")).Returns("jsPath2");
                var args1 = TestableTestRunner.BuildArgs("jsPath1", "file:///D:/harnessPath1.html", "execution", Constants.DefaultTestFileTimeout);
                var args2 = TestableTestRunner.BuildArgs("jsPath2", "file:///D:/harnessPath2.htm", "execution", Constants.DefaultTestFileTimeout);

                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput(It.IsAny <string>(), args1, It.IsAny <Func <ProcessStream, IList <TestFileSummary> > >()))
                .Returns(new ProcessResult <IList <TestFileSummary> >(0, new List <TestFileSummary> {
                    summary
                }));
                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput(It.IsAny <string>(), args2, It.IsAny <Func <ProcessStream, IList <TestFileSummary> > >()))
                .Returns(new ProcessResult <IList <TestFileSummary> >(0, new List <TestFileSummary> {
                    summary
                }));
                runner.Mock <IFileProbe>()
                .Setup(x => x.FindScriptFiles(new List <string> {
                    @"path\tests1a.js", @"path\tests2a.js", @"path2\tests1a.js", @"path2\tests2a.js"
                }))
                .Returns(new List <PathInfo> {
                    new PathInfo {
                        FullPath = @"path\tests1.js"
                    },
                    new PathInfo {
                        FullPath = @"path\tests2.js"
                    },
                    new PathInfo {
                        FullPath = @"path2\tests1.js"
                    },
                    new PathInfo {
                        FullPath = @"path2\tests2.js"
                    },
                });
                var settingsForPath = new ChutzpahTestSettingsFile {
                    SettingsFileDirectory = "path", EnableTestFileBatching = true
                }.InheritFromDefault();
                var settingsForPath2 = new ChutzpahTestSettingsFile {
                    SettingsFileDirectory = "path2", EnableTestFileBatching = true
                }.InheritFromDefault();

                runner.Mock <IChutzpahTestSettingsService>().Setup(x => x.FindSettingsFile(It.Is <string>(p => p.Contains(@"path\")), It.IsAny <ChutzpahSettingsFileEnvironments>())).Returns(settingsForPath);
                runner.Mock <IChutzpahTestSettingsService>().Setup(x => x.FindSettingsFile(It.Is <string>(p => p.Contains(@"path2\")), It.IsAny <ChutzpahSettingsFileEnvironments>())).Returns(settingsForPath2);

                TestCaseSummary res = runner.ClassUnderTest.RunTests(new List <string> {
                    @"path\tests1a.js", @"path\tests2a.js", @"path2\tests1a.js", @"path2\tests2a.js"
                });

                Assert.Equal(2, res.TotalCount);
            }
Пример #7
0
            public void Will_run_multiple_test_files_and_return_results()
            {
                var runner  = new TestableTestRunner();
                var summary = new TestFileSummary("somePath");

                summary.AddTestCase(new TestCase());
                var context1 = new TestContext {
                    TestHarnessPath = @"D:\harnessPath1.html", TestRunner = "runner1"
                };
                var context2 = new TestContext {
                    TestHarnessPath = @"D:\harnessPath2.htm", TestRunner = "runner2"
                };

                runner.Mock <ITestContextBuilder>().Setup(x => x.TryBuildContext(It.Is <PathInfo>(f => f.FullPath == @"path\tests1.html"), It.IsAny <TestOptions>(), out context1)).Returns(true);
                runner.Mock <ITestContextBuilder>().Setup(x => x.TryBuildContext(It.Is <PathInfo>(f => f.FullPath == @"path\tests2.html"), It.IsAny <TestOptions>(), out context2)).Returns(true);
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests1.html")).Returns(@"D:\path\tests1.html");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests2.htm")).Returns(@"D:\path\tests2.htm");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner1")).Returns("jsPath1");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner2")).Returns("jsPath2");
                var args1 = TestableTestRunner.BuildArgs("jsPath1", "file:///D:/harnessPath1.html", "execution", Constants.DefaultTestFileTimeout);
                var args2 = TestableTestRunner.BuildArgs("jsPath2", "file:///D:/harnessPath2.htm", "execution", Constants.DefaultTestFileTimeout);

                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput(It.IsAny <string>(), args1, It.IsAny <Func <ProcessStream, TestFileSummary> >()))
                .Returns(new ProcessResult <TestFileSummary>(0, summary));
                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput(It.IsAny <string>(), args2, It.IsAny <Func <ProcessStream, TestFileSummary> >()))
                .Returns(new ProcessResult <TestFileSummary>(0, summary));
                runner.Mock <IFileProbe>()
                .Setup(x => x.FindScriptFiles(new List <string> {
                    @"path\tests1a.html", @"path\tests2a.htm"
                }, It.IsAny <TestingMode>()))
                .Returns(new List <PathInfo> {
                    new PathInfo {
                        FullPath = @"path\tests1.html"
                    }, new PathInfo {
                        FullPath = @"path\tests2.html"
                    }
                });

                TestCaseSummary res = runner.ClassUnderTest.RunTests(new List <string> {
                    @"path\tests1a.html", @"path\tests2a.htm"
                });

                Assert.Equal(2, res.TotalCount);
            }
Пример #8
0
            public void Will_run_multiple_test_files_and_return_results()
            {
                var runner  = new TestableTestRunner();
                var summary = new TestFileSummary("somePath");

                summary.AddTestCase(new TestCase());
                var context1 = runner.SetupTestContext(harnessPath: @"harnessPath1", testRunnerPath: "runner1", testPaths: new [] { @"path\tests1.html" });
                var context2 = runner.SetupTestContext(harnessPath: @"harnessPath2", testRunnerPath: "runner2", testPaths: new [] { @"path\tests2.html" });

                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests1.html")).Returns(@"D:\path\tests1.html");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests2.htm")).Returns(@"D:\path\tests2.htm");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner1")).Returns("jsPath1");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner2")).Returns("jsPath2");
                var args1 = TestableTestRunner.BuildArgs("jsPath1", "harnessPath1", "execution", Constants.DefaultTestFileTimeout);
                var args2 = TestableTestRunner.BuildArgs("jsPath2", "harnessPath2", "execution", Constants.DefaultTestFileTimeout);

                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput(It.IsAny <string>(), args1, It.IsAny <Func <ProcessStream, IList <TestFileSummary> > >()))
                .Returns(new ProcessResult <IList <TestFileSummary> >(0, new List <TestFileSummary> {
                    summary
                }));
                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput(It.IsAny <string>(), args2, It.IsAny <Func <ProcessStream, IList <TestFileSummary> > >()))
                .Returns(new ProcessResult <IList <TestFileSummary> >(0, new List <TestFileSummary> {
                    summary
                }));
                runner.Mock <IFileProbe>()
                .Setup(x => x.FindScriptFiles(new List <string> {
                    @"path\tests1a.html", @"path\tests2a.htm"
                }))
                .Returns(new List <PathInfo> {
                    new PathInfo {
                        FullPath = @"path\tests1.html"
                    }, new PathInfo {
                        FullPath = @"path\tests2.html"
                    }
                });

                TestCaseSummary res = runner.ClassUnderTest.RunTests(new List <string> {
                    @"path\tests1a.html", @"path\tests2a.htm"
                });

                Assert.Equal(2, res.TotalCount);
            }
Пример #9
0
            public void Will_run_test_file_and_return_test_results_model()
            {
                var runner  = new TestableTestRunner();
                var summary = new TestFileSummary("somePath");

                summary.AddTestCase(new TestCase());
                var context = runner.SetupTestContext(testPaths: new [] { @"path\tests.html" }, harnessPath: @"D:\harnessPath.html", testRunnerPath: "runner");

                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner")).Returns("jsPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(TestRunner.HeadlessBrowserName)).Returns("browserPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html");
                var args = TestableTestRunner.BuildArgs("jsPath", "file:///D:/harnessPath.html", "execution", Constants.DefaultTestFileTimeout);

                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput("browserPath", args, It.IsAny <Func <ProcessStream, IList <TestFileSummary> > >()))
                .Returns(new ProcessResult <IList <TestFileSummary> >(0, new List <TestFileSummary> {
                    summary
                }));

                TestCaseSummary res = runner.ClassUnderTest.RunTests(@"path\tests.html");

                Assert.Equal(1, res.TotalCount);
            }
Пример #10
0
            public void Will_run_test_file_and_return_test_summary_model()
            {
                var runner  = new TestableTestRunner();
                var summary = new TestFileSummary("somePath");

                summary.AddTestCase(new TestCase());
                var context = new TestContext {
                    TestHarnessPath = @"D:\harnessPath.html", TestRunner = "runner"
                };

                runner.Mock <ITestContextBuilder>().Setup(x => x.TryBuildContext(It.Is <PathInfo>(f => f.FullPath == @"path\tests.html"), It.IsAny <TestOptions>(), out context)).Returns(true);
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("runner")).Returns("jsPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(TestRunner.HeadlessBrowserName)).Returns("browserPath");
                runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html");
                var args = TestableTestRunner.BuildArgs("jsPath", "file:///D:/harnessPath.html", "discovery", Constants.DefaultTestFileTimeout);

                runner.Mock <IProcessHelper>()
                .Setup(x => x.RunExecutableAndProcessOutput("browserPath", args, It.IsAny <Func <ProcessStream, TestFileSummary> >()))
                .Returns(new ProcessResult <TestFileSummary>(0, summary));

                var res = runner.ClassUnderTest.DiscoverTests(@"path\tests.html");

                Assert.Equal(1, res.Count());
            }