UNPKG

@tsdi/unit

Version:

unit testing framework, base on AOP, Ioc container

109 lines (107 loc) 4.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UnitTestRunner = void 0; var tslib_1 = require("tslib"); var ioc_1 = require("@tsdi/ioc"); var boot_1 = require("@tsdi/boot"); var OldTestRunner_1 = require("./OldTestRunner"); var decorators_1 = require("../decorators"); var TestReport_1 = require("../reports/TestReport"); /** * Suite runner. * * @export * @class SuiteRunner * @implements {IRunner<any>} */ var UnitTestRunner = /** @class */ (function (_super) { tslib_1.__extends(UnitTestRunner, _super); function UnitTestRunner() { return _super !== null && _super.apply(this, arguments) || this; } UnitTestRunner.prototype.configureService = function (ctx) { return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { this.context = ctx; return [2 /*return*/]; }); }); }; UnitTestRunner.prototype.getContext = function () { return this.context; }; UnitTestRunner.prototype.run = function (data) { return tslib_1.__awaiter(this, void 0, void 0, function () { var context, config, src, injector, exit, suites, oldRunner, loader, alltypes, alltypes, builder, reflects; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: context = this.getContext(); return [4 /*yield*/, context.getConfiguration()]; case 1: config = _a.sent(); src = config.src; injector = context.injector; exit = injector.get(boot_1.ApplicationExit); if (exit) { exit.enable = false; } suites = []; oldRunner = injector.resolve(OldTestRunner_1.OldTestRunner); return [4 /*yield*/, oldRunner.configureService(context)]; case 2: _a.sent(); loader = injector.getLoader(); oldRunner.registerGlobalScope(); if (!ioc_1.isString(src)) return [3 /*break*/, 4]; return [4 /*yield*/, loader.loadTypes({ files: [src], basePath: this.context.baseURL })]; case 3: alltypes = _a.sent(); alltypes.forEach(function (tys) { suites = suites.concat(tys); }); return [3 /*break*/, 8]; case 4: if (!ioc_1.isClass(src)) return [3 /*break*/, 5]; suites = [src]; return [3 /*break*/, 8]; case 5: if (!ioc_1.isArray(src)) return [3 /*break*/, 8]; if (!src.some(function (t) { return ioc_1.isClass(t); })) return [3 /*break*/, 6]; suites = src; return [3 /*break*/, 8]; case 6: return [4 /*yield*/, loader.loadTypes({ files: src, basePath: this.context.baseURL })]; case 7: alltypes = _a.sent(); alltypes.forEach(function (tys) { suites = suites.concat(tys); }); _a.label = 8; case 8: oldRunner.unregisterGlobalScope(); return [4 /*yield*/, oldRunner.run()]; case 9: _a.sent(); builder = injector.resolve(boot_1.BuilderService); reflects = this.context.reflects; return [4 /*yield*/, ioc_1.PromiseUtil.step(suites.filter(function (v) { return ioc_1.isClass(v) && reflects.hasMetadata(decorators_1.Suite, v); }).map(function (s) { return function () { return builder.run({ type: s, injector: injector }); }; }))]; case 10: _a.sent(); return [4 /*yield*/, injector.resolve(TestReport_1.TestReport).report()]; case 11: _a.sent(); return [2 /*return*/]; } }); }); }; UnitTestRunnerAnn = function () { return { "name": "UnitTestRunner", "params": { "configureService": ["ctx"], "run": ["data"] } }; }; UnitTestRunner = tslib_1.__decorate([ ioc_1.Injectable ], UnitTestRunner); return UnitTestRunner; }(boot_1.Runnable)); exports.UnitTestRunner = UnitTestRunner; //# sourceMappingURL=../sourcemaps/runner/UnitTestRunner.js.map