public void Will_record_unknown_exception_from_test_runner() { var runner = new TestableTestRunner(); var summary = new TestFileSummary("somePath"); summary.AddTestCase(new TestCase()); var testCallback = new MockTestMethodRunnerCallback(); var context = new TestContext { TestHarnessPath = @"D:\harnessPath.html", TestRunner = "testRunner.js" }; runner.Mock <ITestContextBuilder>().Setup(x => x.TryBuildContext(It.IsAny <PathInfo>(), It.IsAny <TestOptions>(), out context)).Returns(true); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html"); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("testRunner.js")).Returns("runner.js"); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(TestRunner.HeadlessBrowserName)).Returns(TestRunner.HeadlessBrowserName); runner.Mock <IProcessHelper>() .Setup(x => x.RunExecutableAndProcessOutput(TestRunner.HeadlessBrowserName, TestableTestRunner.ExecutionPhantomArgs, It.IsAny <Func <ProcessStream, TestFileSummary> >())) .Returns(new ProcessResult <TestFileSummary>((int)TestProcessExitCode.Unknown, summary)); TestCaseSummary res = runner.ClassUnderTest.RunTests(new[] { @"path\tests.html" }, testCallback.Object); testCallback.Verify(x => x.FileError(It.IsAny <TestError>())); Assert.Equal(1, res.TotalCount); Assert.Equal(1, res.Errors.Count); }
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); }
public void Will_call_test_suite_finished_with_final_result() { var runner = new TestableTestRunner(); var testCallback = new MockTestMethodRunnerCallback(); TestCaseSummary res = runner.ClassUnderTest.RunTests(@"path\tests.html", testCallback.Object); testCallback.Verify(x => x.TestSuiteFinished(null, It.IsAny <TestCaseSummary>())); }
public void Will_call_test_suite_started() { var runner = new TestableTestRunner(); var testCallback = new MockTestMethodRunnerCallback(); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html"); TestCaseSummary res = runner.ClassUnderTest.RunTests(@"path\tests.html", testCallback.Object); testCallback.Verify(x => x.TestSuiteStarted(null)); }
public void Will_call_test_suite_finished_with_final_result() { var runner = new TestableTestRunner(); var testCallback = new MockTestMethodRunnerCallback(); var context = runner.SetupTestContext(); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html"); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(TestRunner.TestRunnerJsName)).Returns("jsPath"); TestCaseSummary res = runner.ClassUnderTest.RunTests(@"path\tests.html", testCallback.Object); testCallback.Verify(x => x.TestSuiteFinished(It.IsAny <TestCaseSummary>())); }
public void Will_call_test_suite_started() { var runner = new TestableTestRunner(); var testCallback = new MockTestMethodRunnerCallback(); var context = new TestContext { TestHarnessPath = @"D:\harnessPath.html" }; runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html"); runner.Mock <ITestContextBuilder>().Setup(x => x.TryBuildContext(It.IsAny <PathInfo>(), It.IsAny <TestOptions>(), out context)).Returns(true); TestCaseSummary res = runner.ClassUnderTest.RunTests(@"path\tests.html", testCallback.Object); testCallback.Verify(x => x.TestSuiteStarted()); }
public void Will_call_process_transforms() { var runner = new TestableTestRunner(); var summary = new TestFileSummary("somePath"); summary.AddTestCase(new TestCase()); var testCallback = new MockTestMethodRunnerCallback(); var context = runner.SetupTestContext(testRunnerPath: "testRunner.js"); runner.Mock <ITestExecutionProvider>() .Setup(x => x.Execute(It.IsAny <TestOptions>(), It.IsAny <TestContext>(), TestExecutionMode.Execution, It.IsAny <ITestMethodRunnerCallback>())) .Returns(new List <TestFileSummary> { summary }); TestCaseSummary res = runner.ClassUnderTest.RunTests(new[] { @"path\tests.html" }, testCallback.Object); runner.Mock <ITransformProcessor>().Verify(x => x.ProcessTransforms(It.Is <IEnumerable <TestContext> >(c => c.Count() == 1 && c.Single() == context), res)); }
public void Will_call_process_transforms() { var runner = new TestableTestRunner(); var summary = new TestFileSummary("somePath"); summary.AddTestCase(new TestCase()); var testCallback = new MockTestMethodRunnerCallback(); var context = runner.SetupTestContext(testRunnerPath: "testRunner.js"); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html"); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("testRunner.js")).Returns("runner.js"); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(TestRunner.HeadlessBrowserName)).Returns(TestRunner.HeadlessBrowserName); runner.Mock <IProcessHelper>() .Setup(x => x.RunExecutableAndProcessOutput(TestRunner.HeadlessBrowserName, TestableTestRunner.ExecutionPhantomArgs, It.IsAny <Func <ProcessStream, IList <TestFileSummary> > >())) .Returns(new ProcessResult <IList <TestFileSummary> >((int)TestProcessExitCode.Unknown, new List <TestFileSummary> { summary })); TestCaseSummary res = runner.ClassUnderTest.RunTests(new[] { @"path\tests.html" }, testCallback.Object); runner.Mock <ITransformProcessor>().Verify(x => x.ProcessTransforms(It.Is <IEnumerable <TestContext> >(c => c.Count() == 1 && c.Single() == context), res)); }
public void Will_record_timeout_exception_from_test_runner() { var runner = new TestableTestRunner(); var summary = new TestFileSummary("somePath"); summary.AddTestCase(new TestCase()); var testCallback = new MockTestMethodRunnerCallback(); var context = runner.SetupTestContext(testRunnerPath: "testRunner.js"); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"path\tests.html")).Returns(@"D:\path\tests.html"); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath("testRunner.js")).Returns("runner.js"); runner.Mock <IFileProbe>().Setup(x => x.FindFilePath(TestRunner.HeadlessBrowserName)).Returns(TestRunner.HeadlessBrowserName); runner.Mock <IProcessHelper>() .Setup(x => x.RunExecutableAndProcessOutput(TestRunner.HeadlessBrowserName, TestableTestRunner.ExecutionPhantomArgs, It.IsAny <Func <ProcessStream, IList <TestFileSummary> > >())) .Returns(new ProcessResult <IList <TestFileSummary> >((int)TestProcessExitCode.Timeout, new List <TestFileSummary> { summary })); TestCaseSummary res = runner.ClassUnderTest.RunTests(new[] { @"path\tests.html" }, testCallback.Object); testCallback.Verify(x => x.FileError(It.IsAny <TestError>())); Assert.Equal(1, res.TotalCount); Assert.Equal(1, res.Errors.Count); }