1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | 1× 1× 1× 1× 58× 58× 58× 58× 58× 58× 58× 1438× 1438× 3174× 1438× 58× 1438× 1438× 388× 1050× 1× 58× 58× 319× 1505× 1505× 302× 58× 17× 17× 41× 41× 41× 1× 1438× 1438× 1438× 1438× 57× 57× 1438× 1438× 1438× 622× 816× 1× 816× 816× 816× 816× 816× 816× 816× 1× 622× 622× 622× 1× 1438× 1438× 1438× 57× 57× 1× 15× 12× 3× 1× 83× 83× 83× 83× 83× 15× 68× 1× 67× 41× 1× 388× 388× 388× 82× 306× 1× 1× | "use strict"; var _namespace_1 = require("./errors/_namespace"); require("reflect-metadata"); var TestRunner = (function () { function TestRunner() { var _this = this; this._currentTestId = 0; this._currentTestFixtureIndex = 0; this._currentTestIndex = 0; this._currentTestCaseIndex = 0; this._testsFailed = false; this._getTestDescription = function (test, testCaseArguments) { var testDescription = _this._currentTestId + " - " + test.description; if (testCaseArguments !== undefined) { testDescription += " [ " + testCaseArguments.map(function (x) { return JSON.stringify(x) || "undefined"; }).join(", ") + " ]"; } return testDescription; }; this._runNextTestCase = function () { _this._currentTestCaseIndex++; if (!_this._currentTestSet.testFixtures[_this._currentTestFixtureIndex].tests[_this._currentTestIndex].testCases[_this._currentTestCaseIndex]) { _this._runNextTest(); } else { _this._runTest(_this._currentTestSet.testFixtures[_this._currentTestFixtureIndex], _this._currentTestSet.testFixtures[_this._currentTestFixtureIndex].tests[_this._currentTestIndex], _this._currentTestSet.testFixtures[_this._currentTestFixtureIndex].tests[_this._currentTestIndex].testCases[_this._currentTestCaseIndex].arguments); } }; } TestRunner.prototype.run = function (testSet) { this._currentTestSet = testSet; var totalTestCount = this._currentTestSet.testFixtures .filter(function (x) { return x.tests.length > 0; }) .map(function (x) { return x.tests.map(function (y) { return y.testCases.length; }) .reduce(function (a, b) { return a + b; }, 0); }) .reduce(function (a, b) { return a + b; }, 0); if (totalTestCount === 0) { process.stderr.write("no tests to run"); process.exit(1); } else { process.stdout.write("TAP version 13\n"); process.stdout.write("1.." + totalTestCount + "\n"); this._runTest(this._currentTestSet.testFixtures[this._currentTestFixtureIndex], this._currentTestSet.testFixtures[this._currentTestFixtureIndex].tests[this._currentTestIndex], this._currentTestSet.testFixtures[this._currentTestFixtureIndex].tests[this._currentTestIndex].testCases[this._currentTestCaseIndex].arguments); } }; TestRunner.prototype._runTest = function (testFixture, test, testCaseArguments) { var _this = this; this._currentTestId++; var setupFunctions = Reflect.getMetadata("alsatian:setup", testFixture.fixture); if (setupFunctions) { setupFunctions.forEach(function (setupFunction) { testFixture.fixture[setupFunction].call(testFixture.fixture); }); } try { Iif (test.isAsync) { var timeout_1 = false; var promise = testFixture.fixture[test.key].apply(testFixture.fixture, testCaseArguments); promise.then(function () { if (!timeout_1) { _this._notifySuccess(test, testCaseArguments); } }) .catch(function (error) { _this._handleError(error, test, testCaseArguments); }); var timeoutCheck = setTimeout(function () { timeout_1 = true; _this._handleError(new Error("The test exceeded the given timeout."), test, testCaseArguments); }, 500); } else { testFixture.fixture[test.key].apply(testFixture, testCaseArguments); this._notifySuccess(test, testCaseArguments); } } catch (error) { this._handleError(error, test, testCaseArguments); } }; TestRunner.prototype._handleError = function (error, test, testCaseArguments) { this._teardown(); this._testsFailed = true; process.stdout.write("not ok " + this._getTestDescription(test, testCaseArguments) + "\n"); Iif (error instanceof _namespace_1.MatchError) { process.stdout.write(" ---\n message: \"" + error.message + "\"\n severity: fail\n data:\n got: " + JSON.stringify(error.actualValue) + "\n expect: " + JSON.stringify(error.expectedValue) + "\n ...\n"); } else { console.log(error); process.stdout.write("# Unknown Error\n"); } this._runNextTestCase(); }; TestRunner.prototype._notifySuccess = function (test, testCaseArguments) { this._teardown(); process.stdout.write("ok " + this._getTestDescription(test, testCaseArguments) + "\n"); this._runNextTestCase(); }; TestRunner.prototype._teardown = function () { var testFixture = this._currentTestSet.testFixtures[this._currentTestFixtureIndex]; var teardownFunctions = Reflect.getMetadata("alsatian:teardown", testFixture.fixture); if (teardownFunctions) { teardownFunctions.forEach(function (teardownFunction) { testFixture.fixture[teardownFunction].call(testFixture.fixture); }); } }; TestRunner.prototype._exit = function () { if (this._testsFailed) { process.exit(1); } else { process.exit(0); } }; TestRunner.prototype._runNextTestFixture = function () { var _this = this; this._currentTestFixtureIndex++; this._currentTestIndex = 0; this._currentTestCaseIndex = 0; // no more test fixtures if (!this._currentTestSet.testFixtures[this._currentTestFixtureIndex]) { this._exit(); } else if (!this._currentTestSet.testFixtures[this._currentTestFixtureIndex].tests[this._currentTestIndex]) { this._runNextTestFixture(); } else { setTimeout(function () { _this._runTest(_this._currentTestSet.testFixtures[_this._currentTestFixtureIndex], _this._currentTestSet.testFixtures[_this._currentTestFixtureIndex].tests[_this._currentTestIndex], _this._currentTestSet.testFixtures[_this._currentTestFixtureIndex].tests[_this._currentTestIndex].testCases[_this._currentTestCaseIndex].arguments); }); } }; TestRunner.prototype._runNextTest = function () { this._currentTestIndex++; this._currentTestCaseIndex = 0; if (!this._currentTestSet.testFixtures[this._currentTestFixtureIndex].tests[this._currentTestIndex]) { this._runNextTestFixture(); } else { this._runTest(this._currentTestSet.testFixtures[this._currentTestFixtureIndex], this._currentTestSet.testFixtures[this._currentTestFixtureIndex].tests[this._currentTestIndex], this._currentTestSet.testFixtures[this._currentTestFixtureIndex].tests[this._currentTestIndex].testCases[this._currentTestCaseIndex].arguments); } }; return TestRunner; }()); exports.TestRunner = TestRunner; //# sourceMappingURL=test-runner.js.map |