UNPKG

justo-runner

Version:
1,172 lines (654 loc) 41.5 kB
"use strict";Object.defineProperty(exports, "__esModule", { value: true });var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {return typeof obj;} : function (obj) {return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;};var _createClass = function () {function defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}return function (Constructor, protoProps, staticProps) {if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;};}(); var _justoInjector = require("justo-injector"); var _justoResult = require("justo-result"); var _justoLoader = require("justo-loader"); var _justoFs = require("justo-fs");var fs = _interopRequireWildcard(_justoFs); var _SimpleTask = require("./SimpleTask");var _SimpleTask2 = _interopRequireDefault(_SimpleTask); var _FileMacro = require("./FileMacro");var _FileMacro2 = _interopRequireDefault(_FileMacro); var _TaskMacro = require("./TaskMacro");var _TaskMacro2 = _interopRequireDefault(_TaskMacro); var _Workflow = require("./Workflow");var _Workflow2 = _interopRequireDefault(_Workflow); var _RunError = require("./RunError");var _RunError2 = _interopRequireDefault(_RunError); var _Catalog = require("./Catalog");var _Catalog2 = _interopRequireDefault(_Catalog); var _Stack = require("./Stack");var _Stack2 = _interopRequireDefault(_Stack); var _Initializer = require("./Initializer");var _Initializer2 = _interopRequireDefault(_Initializer); var _Finalizer = require("./Finalizer");var _Finalizer2 = _interopRequireDefault(_Finalizer); var _Suite = require("./Suite");var _Suite2 = _interopRequireDefault(_Suite); var _Test = require("./Test");var _Test2 = _interopRequireDefault(_Test);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function _interopRequireWildcard(obj) {if (obj && obj.__esModule) {return obj;} else {var newObj = {};if (obj != null) {for (var key in obj) {if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];}}newObj.default = obj;return newObj;}}function _toConsumableArray(arr) {if (Array.isArray(arr)) {for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {arr2[i] = arr[i];}return arr2;} else {return Array.from(arr);}}function _classCallCheck(instance, Constructor) {if (!(instance instanceof Constructor)) {throw new TypeError("Cannot call a class as a function");}} var simple = Symbol(); var macro = Symbol(); var taskMacro = Symbol(); var fileMacro = Symbol(); var workflow = Symbol(); var suite = Symbol(); var test = Symbol(); var init = Symbol(); var fin = Symbol(); var runSyncSimpleTask = Symbol(); var runAsyncSimpleTask = Symbol();var Runner = function () { function Runner(config) {var _this = this;_classCallCheck(this, Runner); if (!config) throw new Error("Expected runner configuration."); if (!config.reporters) throw new Error("Expected reporters."); if (!config.console) throw new Error("Expected console."); Object.defineProperty(this, "breakOnError", { value: config.onError == "break", enumerable: true }); Object.defineProperty(this, "only", { value: !!config.only, enumerable: true }); Object.defineProperty(this, "catalog", { value: new _Catalog2.default(this), enumerable: true }); Object.defineProperty(this, "stack", { value: new _Stack2.default() }); Object.defineProperty(this, "tasks", { value: [] }); Object.defineProperty(this, "console", { value: config.console }); Object.defineProperty(this, "reporters", { value: config.reporters, enumerable: true }); Object.defineProperty(this, "simple", { value: this[simple].bind(this), enumerable: true }); Object.defineProperty(this, "macro", { value: this[macro].bind(this), enumerable: true }); Object.defineProperty(this, "workflow", { value: this[workflow].bind(this), enumerable: true }); Object.defineProperty(this, "suite", { value: this[suite].bind(this), enumerable: true }); Object.defineProperty(this, "test", { value: this[test].bind(this), enumerable: true }); Object.defineProperty(this, "init", { value: this[init].bind(this), enumerable: true }); Object.defineProperty(this, "fin", { value: this[fin].bind(this), enumerable: true }); Object.defineProperty(this.suite, "only", { enumerable: true, value: function value() { var opts, def; if (arguments.length === 0) { throw new Error("Invalid number of arguments. Expected, at least, the definition function."); } else if (arguments.length == 1) { opts = { only: true }; def = arguments.length <= 0 ? undefined : arguments[0]; } else if (arguments.length >= 2) { if (typeof (arguments.length <= 0 ? undefined : arguments[0]) == "string") opts = { name: arguments.length <= 0 ? undefined : arguments[0], only: true };else opts = arguments.length <= 0 ? undefined : arguments[0]; def = arguments.length <= 1 ? undefined : arguments[1]; } return _this.suite(opts, def); } }); Object.defineProperty(this.test, "only", { enumerable: true, value: function value() { var opts, fn; if (arguments.length === 0) { throw new Error("Invalid number of arguments. Expected, at least, the definition function."); } else if (arguments.length == 1) { opts = { only: true }; fn = arguments.length <= 0 ? undefined : arguments[0]; } else if (arguments.length >= 2) { if (typeof (arguments.length <= 0 ? undefined : arguments[0]) == "string") opts = { name: arguments.length <= 0 ? undefined : arguments[0], only: true };else opts = arguments.length <= 0 ? undefined : arguments[0]; fn = arguments.length <= 1 ? undefined : arguments[1]; } return _this.test(opts, fn); } }); }_createClass(Runner, [{ key: "publishInto", value: function publishInto( obj) { Object.defineProperty(obj, "catalog", { value: this.catalog.catalog, enumerable: true, configurable: true }); Object.defineProperty(obj, "register", { value: this.catalog.catalog, enumerable: true, configurable: true }); Object.defineProperty(obj, "simple", { value: this.simple, enumerable: true, configurable: true }); Object.defineProperty(obj, "macro", { value: this.macro, enumerable: true, configurable: true }); Object.defineProperty(obj, "workflow", { value: this.workflow, enumerable: true, configurable: true }); Object.defineProperty(obj, "suite", { value: this.suite, enumerable: true, configurable: true }); Object.defineProperty(obj, "test", { value: this.test, enumerable: true, configurable: true }); Object.defineProperty(obj, "init", { value: this.init, enumerable: true, configurable: true }); Object.defineProperty(obj, "fin", { value: this.fin, enumerable: true, configurable: true }); } }, { key: "unpublishFrom", value: function unpublishFrom( obj) { delete obj.catalog; delete obj.register; delete obj.simple; delete obj.macro; delete obj.workflow; delete obj.suite; delete obj.test; delete obj.init; delete obj.fin; } }, { key: "runCatalogedTasks", value: function runCatalogedTasks( calls) { var wrapper;var _iteratorNormalCompletion = true;var _didIteratorError = false;var _iteratorError = undefined;try { for (var _iterator = calls[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {var call = _step.value; if (!this.catalog.exists(call.name)) throw new Error("The '" + call.name + "' task is not cataloged."); }} catch (err) {_didIteratorError = true;_iteratorError = err;} finally {try {if (!_iteratorNormalCompletion && _iterator.return) {_iterator.return();}} finally {if (_didIteratorError) {throw _iteratorError;}}}var _iteratorNormalCompletion2 = true;var _didIteratorError2 = false;var _iteratorError2 = undefined;try { for (var _iterator2 = calls[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {var _call = _step2.value; this.reporters.start(_call.name); this.catalog.get(_call.name).apply(undefined, [_call.name].concat(_toConsumableArray(_call.params))); this.reporters.end(); }} catch (err) {_didIteratorError2 = true;_iteratorError2 = err;} finally {try {if (!_iteratorNormalCompletion2 && _iterator2.return) {_iterator2.return();}} finally {if (_didIteratorError2) {throw _iteratorError2;}}} } }, { key: simple, value: function value() {var _this2 = this;for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];} var opts, fn, task, wrapper; if (args.length === 0) { throw new Error("Invalid number of arguments. At least, one parameter must be passed (function or object)."); } else if (args.length == 1) { if (args[0] instanceof Function) { fn = args[0]; opts = {}; } else { opts = args[0]; } } else if (args.length >= 2) { opts = args[0];fn = args[1]; } if ((typeof opts === "undefined" ? "undefined" : _typeof(opts)) == "object" && !opts.name) opts.name = fn.name || "simple anonymous task"; if (fn) { task = new _SimpleTask2.default(opts, fn); wrapper = function wrapper() {for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {args[_key2] = arguments[_key2];} var opts, params; if (args.length === 0) { opts = {}; params = []; } else if (args.length == 1) { opts = args[0]; params = []; } else if (args.length >= 2) { opts = args[0]; params = args.slice(1); } if (typeof opts == "string") opts = { title: opts }; return _this2.runSimpleTask(task, opts, params); }; this.initWrapper(wrapper, task); } else { if (!opts.task) throw new Error("task option expected."); wrapper = this[workflow](opts, function () { return opts.task(opts, opts.params || []); }); } return wrapper; } }, { key: "runSimpleTask", value: function runSimpleTask( task, opts, params) { var res; opts = Object.assign({ title: task.title, ignore: task.ignore, mute: task.mute }, opts); if (opts.hasOwnProperty("onlyIf")) opts.ignore = !opts.onlyIf; if (opts.ignore) { if (!opts.mute) this.reporters.ignore(opts.title, task); } else { if (task.sync) res = this[runSyncSimpleTask](task, opts, params);else this[runAsyncSimpleTask](task, opts, params); } return res; } }, { key: runSyncSimpleTask, value: function value(task, opts, params) { var res = void 0,state = void 0,err = void 0,start = void 0,end = void 0; try { var fn = task.fn; params = (0, _justoInjector.inject)({ params: params, console: this.console }, fn); if (!opts.mute) this.reporters.start(opts.title, task); start = Date.now(); res = fn.apply(undefined, _toConsumableArray(params)); state = _justoResult.ResultState.OK; } catch (e) { err = e; state = _justoResult.ResultState.FAILED; } finally { end = Date.now(); } if (!opts.mute) this.reporters.end(task, state, err, start, end); if (err && this.breakOnError) throw new _RunError2.default(task, err); return res; } }, { key: runAsyncSimpleTask, value: function value(task, opts, params) { var state, err, start, end; try { var fn = task.fn; if (!opts.mute) this.reporters.start(opts.title, task); start = Date.now(); err = this.runAsyncFunction(fn, params); state = err ? _justoResult.ResultState.FAILED : _justoResult.ResultState.OK; } catch (e) { err = e; state = _justoResult.ResultState.FAILED; } finally { end = Date.now(); } if (!opts.mute) this.reporters.end(task, state, err, start, end); if (err && this.breakOnError) throw new _RunError2.default(task, err); } }, { key: "runAsyncFunction", value: function runAsyncFunction( fn, params) {var _this3 = this; var sync = require("justo-sync"); var err; try { sync(function (done) { function jdone(err, res) { if (err) { if (err instanceof Error) done(err);else done(new Error(err)); } else { done(undefined, res); } } params = (0, _justoInjector.inject)({ done: jdone, params: params, console: _this3.console }, fn); fn.apply(undefined, _toConsumableArray(params)); }); } catch (e) { err = e; } return err; } }, { key: macro, value: function value() { var opts, tasks;for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {args[_key3] = arguments[_key3];} if (args.length < 2) { throw new Error("Invalid number of arguments. At least, two: name and array or object."); } else if (args.length >= 2) { opts = args[0];tasks = args[1]; } if (tasks instanceof Array) return this[taskMacro](opts, tasks);else return this[fileMacro](opts, tasks); } }, { key: taskMacro, value: function value(opts, tasks) {var _this4 = this; var macro, wrapper; macro = new _TaskMacro2.default(opts, []);var _iteratorNormalCompletion3 = true;var _didIteratorError3 = false;var _iteratorError3 = undefined;try { for (var _iterator3 = tasks[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {var task = _step3.value; if (typeof task == "string") task = { title: task, task: task }; if (typeof task.task == "string") { if (!this.catalog.exists(task.task)) throw new Error("The '" + task.task + "' task is not cataloged."); if (!task.title) task.title = task.task; task.task = this.catalog.get(task.task); } if (!task.hasOwnProperty("title")) throw new Error("Title must be specified."); if (!task.hasOwnProperty("task")) throw new Error("Task must be specified."); macro.add(task); }} catch (err) {_didIteratorError3 = true;_iteratorError3 = err;} finally {try {if (!_iteratorNormalCompletion3 && _iterator3.return) {_iterator3.return();}} finally {if (_didIteratorError3) {throw _iteratorError3;}}} wrapper = function wrapper() {for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {args[_key4] = arguments[_key4];} var opts, params; if (args.length === 0) { opts = {}; params = []; } else if (args.length == 1) { opts = args[0]; params = []; } else if (args.length >= 2) { opts = args[0]; params = args.slice(1); } if (typeof opts == "string") opts = { title: opts }; return _this4.runTaskMacro(macro, opts, params); }; this.initWrapper(wrapper, macro); return wrapper; } }, { key: "runTaskMacro", value: function runTaskMacro( macro, opts, params) { var title, res; title = opts.title || macro.title; if (!opts.hasOwnProperty("ignore")) opts.ignore = macro.ignore; if (!opts.hasOwnProperty("mute")) opts.mute = macro.mute; params = params.length === 0 ? undefined : params; if (opts.ignore) { if (!opts.mute) this.reporters.ignore(title, macro); } else { var err = void 0; if (!opts.mute) this.reporters.start(title, macro); try {var _iteratorNormalCompletion4 = true;var _didIteratorError4 = false;var _iteratorError4 = undefined;try { for (var _iterator4 = macro.tasks[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {var task = _step4.value; try { var oo = { title: task.title, mute: opts.mute }; var pp = params || task.params || []; task.task.apply(task, [oo].concat(_toConsumableArray(pp))); } catch (e) { err = e; if (this.breakOnError) break; } }} catch (err) {_didIteratorError4 = true;_iteratorError4 = err;} finally {try {if (!_iteratorNormalCompletion4 && _iterator4.return) {_iterator4.return();}} finally {if (_didIteratorError4) {throw _iteratorError4;}}} } finally { if (!opts.mute) this.reporters.end(macro); } } } }, { key: fileMacro, value: function value(opts, config) {var _this5 = this; var macro, wrapper; macro = new _FileMacro2.default(opts, config); wrapper = function wrapper() {for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {args[_key5] = arguments[_key5];} var opts, params; if (args.length === 0) { opts = {}; params = []; } else if (args.length == 1) { opts = args[0]; params = []; } else if (args.length >= 2) { opts = args[0]; params = args.slice(1); } if (typeof opts == "string") opts = { title: opts }; return _this5.runFileMacro(macro, opts, params); }; this.initWrapper(wrapper, macro); return wrapper; } }, { key: "runFileMacro", value: function runFileMacro( macro, opts, params) {var _this6 = this; var title, res; var loadFile = function loadFile(file) { _this6.workflow(file, function () {_justoLoader.Loader.load(file);})({ title: file, mute: opts.mute }); }; var loadDir = function loadDir(dir) {var _iteratorNormalCompletion5 = true;var _didIteratorError5 = false;var _iteratorError5 = undefined;try { for (var _iterator5 = new fs.Dir(dir).entries[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {var entry = _step5.value; if (entry instanceof fs.File) loadFile(entry.path);else if (entry instanceof fs.Dir) loadDir(entry.path);else loadFile(entry.path); }} catch (err) {_didIteratorError5 = true;_iteratorError5 = err;} finally {try {if (!_iteratorNormalCompletion5 && _iterator5.return) {_iterator5.return();}} finally {if (_didIteratorError5) {throw _iteratorError5;}}} }; title = opts.title || macro.title; if (!opts.hasOwnProperty("ignore")) opts.ignore = macro.ignore; if (!opts.hasOwnProperty("mute")) opts.mute = macro.mute; params = params.length === 0 ? undefined : params; if (opts.ignore) { if (!opts.mute) this.reporters.ignore(title, macro); } else { var err = void 0; if (!opts.mute) this.reporters.start(title, macro); if (macro.require) {var _iteratorNormalCompletion6 = true;var _didIteratorError6 = false;var _iteratorError6 = undefined;try { for (var _iterator6 = macro.require[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {var pkg = _step6.value;require(pkg);}} catch (err) {_didIteratorError6 = true;_iteratorError6 = err;} finally {try {if (!_iteratorNormalCompletion6 && _iterator6.return) {_iterator6.return();}} finally {if (_didIteratorError6) {throw _iteratorError6;}}} } try {var _iteratorNormalCompletion7 = true;var _didIteratorError7 = false;var _iteratorError7 = undefined;try { for (var _iterator7 = macro.src[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {var src = _step7.value; var entry = void 0; try { try { entry = fs.entry(src); } catch (e) { entry = undefined; } if (entry instanceof fs.File) loadFile(src);else if (entry instanceof fs.Dir) loadDir(src);else loadFile(src); } catch (e) { err = e; if (this.breakOnError) break; } }} catch (err) {_didIteratorError7 = true;_iteratorError7 = err;} finally {try {if (!_iteratorNormalCompletion7 && _iterator7.return) {_iterator7.return();}} finally {if (_didIteratorError7) {throw _iteratorError7;}}} } finally { if (!opts.mute) this.reporters.end(macro); } } } }, { key: workflow, value: function value() {var _this7 = this;for (var _len6 = arguments.length, args = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {args[_key6] = arguments[_key6];} var opts, fn, task, wrapper; if (args.length === 0) { throw new Error("Invalid number of arguments. At least, the workflow function must be passed."); } else if (args.length == 1) { fn = args[0]; opts = {}; } else if (args.length >= 2) { opts = args[0];fn = args[1]; } if ((typeof opts === "undefined" ? "undefined" : _typeof(opts)) == "object" && !opts.name) opts.name = fn.name || "anonymous workflow"; task = new _Workflow2.default(opts, fn); wrapper = function wrapper() {for (var _len7 = arguments.length, args = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {args[_key7] = arguments[_key7];} var opts, params; if (args.length === 0) { opts = {}; params = []; } else if (args.length == 1) { opts = args[0]; params = []; } else if (args.length >= 2) { opts = args[0]; params = args.slice(1); } if (typeof opts == "string") opts = { title: opts }; return _this7.runWorkflow(task, opts, params); }; this.initWrapper(wrapper, task); return wrapper; } }, { key: "runWorkflow", value: function runWorkflow( workflow, opts, params) { var title, res; title = opts.title || workflow.title; if (!opts.hasOwnProperty("ignore")) opts.ignore = workflow.ignore; if (!opts.hasOwnProperty("mute")) opts.mute = workflow.mute; if (opts.ignore) { if (!opts.mute) this.reporters.ignore(title, workflow); } else { var state = void 0,err = void 0,start = void 0,end = void 0; try { var fn = workflow.fn; params = (0, _justoInjector.inject)({ params: params, console: this.console }, fn); if (!opts.mute) this.reporters.start(title, workflow); start = Date.now(); res = fn.apply(undefined, _toConsumableArray(params)); state = _justoResult.ResultState.OK; } catch (e) { err = e; state = _justoResult.ResultState.FAILED; } finally { end = Date.now(); } if (!opts.mute) this.reporters.end(workflow, state, err, start, end); if (err && this.breakOnError) throw new _RunError2.default(workflow, err); } return res; } }, { key: suite, value: function value() {var _this8 = this;for (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {args[_key8] = arguments[_key8];} var opts, def, task, wrapper; if (args.length === 0) { throw new Error("Invalid number of arguments. Expected, at least, the definition function."); } else if (args.length == 1) { opts = {}; def = args[0]; } else if (args.length >= 2) { opts = args[0];def = args[1]; } if (typeof opts == "string") opts = { name: opts }; if (!opts.name) opts.name = "anonymous suite"; task = new _Suite2.default(opts); this.stack.push(task); def(); this.stack.pop(); wrapper = function wrapper() {for (var _len9 = arguments.length, args = Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {args[_key9] = arguments[_key9];} var opts, params; if (args.length === 0) { opts = {}; params = []; } else if (args.length == 1) { opts = args[0]; params = []; } else if (args.length >= 2) { opts = args[0]; params = args.slice(1); } if (typeof opts == "string") opts = { title: opts }; if (!_this8.only || _this8.only && (task.only || task.superonly || task.subonly)) { return _this8.runSuite(task, opts, params); } }; this.initTestWrapper(wrapper, task); if (this.stack.length > 0) this.stack.top.add(wrapper); return wrapper; } }, { key: "runSuite", value: function runSuite( suite, opts, params) { var title, res; title = opts.title || suite.title; if (!opts.hasOwnProperty("mute")) opts.mute = suite.mute; if (opts.ignore || suite.ignore) { if (!opts.mute) this.reporters.ignore(title, suite); } else { var oo = {}; if (opts.mute) oo.mute = true; if (!opts.mute) this.reporters.start(title, suite);var _iteratorNormalCompletion8 = true;var _didIteratorError8 = false;var _iteratorError8 = undefined;try { for (var _iterator8 = suite.initializers[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {var _init = _step8.value;_init.apply(undefined, [oo].concat(_toConsumableArray(params)));}} catch (err) {_didIteratorError8 = true;_iteratorError8 = err;} finally {try {if (!_iteratorNormalCompletion8 && _iterator8.return) {_iterator8.return();}} finally {if (_didIteratorError8) {throw _iteratorError8;}}} if (!this.only) {var _iteratorNormalCompletion9 = true;var _didIteratorError9 = false;var _iteratorError9 = undefined;try { for (var _iterator9 = suite.tasks[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {var task = _step9.value;task.apply(undefined, [oo].concat(_toConsumableArray(params)));}} catch (err) {_didIteratorError9 = true;_iteratorError9 = err;} finally {try {if (!_iteratorNormalCompletion9 && _iterator9.return) {_iterator9.return();}} finally {if (_didIteratorError9) {throw _iteratorError9;}}} } else { if (suite.only || suite.superonly) {var _iteratorNormalCompletion10 = true;var _didIteratorError10 = false;var _iteratorError10 = undefined;try { for (var _iterator10 = suite.tasks[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {var _task = _step10.value;_task.apply(undefined, [oo].concat(_toConsumableArray(params)));}} catch (err) {_didIteratorError10 = true;_iteratorError10 = err;} finally {try {if (!_iteratorNormalCompletion10 && _iterator10.return) {_iterator10.return();}} finally {if (_didIteratorError10) {throw _iteratorError10;}}} } else if (suite.subonly) {var _iteratorNormalCompletion11 = true;var _didIteratorError11 = false;var _iteratorError11 = undefined;try { for (var _iterator11 = suite.tasks[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {var _task2 = _step11.value; if (_task2.__task__.only || _task2.__task__.superonly || _task2.__task__.subonly) _task2.apply(undefined, [oo].concat(_toConsumableArray(params))); }} catch (err) {_didIteratorError11 = true;_iteratorError11 = err;} finally {try {if (!_iteratorNormalCompletion11 && _iterator11.return) {_iterator11.return();}} finally {if (_didIteratorError11) {throw _iteratorError11;}}} } }var _iteratorNormalCompletion12 = true;var _didIteratorError12 = false;var _iteratorError12 = undefined;try { for (var _iterator12 = suite.finalizers[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {var _fin = _step12.value;_fin.apply(undefined, [oo].concat(_toConsumableArray(params)));}} catch (err) {_didIteratorError12 = true;_iteratorError12 = err;} finally {try {if (!_iteratorNormalCompletion12 && _iterator12.return) {_iterator12.return();}} finally {if (_didIteratorError12) {throw _iteratorError12;}}} if (!opts.mute) this.reporters.end(suite); } } }, { key: test, value: function value() {var _this9 = this;for (var _len10 = arguments.length, args = Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {args[_key10] = arguments[_key10];} var opts, fn, task, wrapper; if (this.stack.length === 0) { throw new Error("test() must be invoked into a suite."); } if (args.length === 0) { throw new Error("Invalid number of arguments. At least, one expected: the test function."); } else if (args.length == 1) { fn = args[0]; opts = {}; } else if (args.length >= 2) { opts = args[0];fn = args[1]; } if (typeof opts == "string") opts = { name: opts }; if (!opts.name) opts.name = "anonymous test"; task = new _Test2.default(opts, this.simple({ name: "test function", title: "Test function" }, fn)); wrapper = function wrapper() {for (var _len11 = arguments.length, args = Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {args[_key11] = arguments[_key11];} var opts, params; if (args.length === 0) { opts = {}; params = []; } else if (args.length == 1) { opts = args[0]; params = []; } else if (args.length >= 2) { opts = args[0]; params = args.slice(1); } if (typeof opts == "string") opts = { title: opts }; return _this9.runTest(task, opts, params); }; this.initTestWrapper(wrapper, task); this.stack.top.add(wrapper); return wrapper; } }, { key: "runTest", value: function runTest( test, opts, params) { var title, res; title = opts.title || test.title; if (!opts.hasOwnProperty("mute")) opts.mute = test.mute; if (opts.ignore || test.ignore) { if (!opts.mute) this.reporters.ignore(title, test); } else { var oo = {}; if (opts.mute) oo.mute = true; if (test.hasParams()) {var _iteratorNormalCompletion13 = true;var _didIteratorError13 = false;var _iteratorError13 = undefined;try { for (var _iterator13 = test.params[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {var _params = _step13.value; var headline = title + " # " + ((typeof _params === "undefined" ? "undefined" : _typeof(_params)) == "object" ? JSON.stringify(_params) : _params); if (!opts.mute) this.reporters.start(headline, test);var _iteratorNormalCompletion14 = true;var _didIteratorError14 = false;var _iteratorError14 = undefined;try { for (var _iterator14 = test.initializers[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {var _init2 = _step14.value;_init2.apply(undefined, [oo].concat([_params]));}} catch (err) {_didIteratorError14 = true;_iteratorError14 = err;} finally {try {if (!_iteratorNormalCompletion14 && _iterator14.return) {_iterator14.return();}} finally {if (_didIteratorError14) {throw _iteratorError14;}}} test.fn.apply(test, [oo].concat([_params]));var _iteratorNormalCompletion15 = true;var _didIteratorError15 = false;var _iteratorError15 = undefined;try { for (var _iterator15 = test.finalizers[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) {var _fin2 = _step15.value;_fin2.apply(undefined, [oo].concat([_params]));}} catch (err) {_didIteratorError15 = true;_iteratorError15 = err;} finally {try {if (!_iteratorNormalCompletion15 && _iterator15.return) {_iterator15.return();}} finally {if (_didIteratorError15) {throw _iteratorError15;}}} if (!opts.mute) this.reporters.end(test); }} catch (err) {_didIteratorError13 = true;_iteratorError13 = err;} finally {try {if (!_iteratorNormalCompletion13 && _iterator13.return) {_iterator13.return();}} finally {if (_didIteratorError13) {throw _iteratorError13;}}} } else { if (!opts.mute) this.reporters.start(title, test);var _iteratorNormalCompletion16 = true;var _didIteratorError16 = false;var _iteratorError16 = undefined;try { for (var _iterator16 = test.initializers[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) {var _init3 = _step16.value;_init3.apply(undefined, [oo].concat(_toConsumableArray(params)));}} catch (err) {_didIteratorError16 = true;_iteratorError16 = err;} finally {try {if (!_iteratorNormalCompletion16 && _iterator16.return) {_iterator16.return();}} finally {if (_didIteratorError16) {throw _iteratorError16;}}} test.fn.apply(test, [oo].concat(_toConsumableArray(params)));var _iteratorNormalCompletion17 = true;var _didIteratorError17 = false;var _iteratorError17 = undefined;try { for (var _iterator17 = test.finalizers[Symbol.iterator](), _step17; !(_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done); _iteratorNormalCompletion17 = true) {var _fin3 = _step17.value;_fin3.apply(undefined, [oo].concat(_toConsumableArray(params)));}} catch (err) {_didIteratorError17 = true;_iteratorError17 = err;} finally {try {if (!_iteratorNormalCompletion17 && _iterator17.return) {_iterator17.return();}} finally {if (_didIteratorError17) {throw _iteratorError17;}}} if (!opts.mute) this.reporters.end(test); } } } }, { key: init, value: function value() {var _this10 = this;for (var _len12 = arguments.length, args = Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {args[_key12] = arguments[_key12];} var opts, fn, task, wrapper; if (this.stack.length === 0) { throw new Error("init() must be invoked into a suite."); } if (args.length === 0) { throw new Error("Invalid number of arguments. At least, one expected: the init function."); } else if (args.length == 1) { fn = args[0]; opts = { name: "__suite__" }; } else if (args.length >= 2) { opts = args[0];fn = args[1]; } if (typeof opts == "string") opts = { name: opts }; if (!opts.name) opts.name = "__suite__"; task = new _Initializer2.default(opts, fn); wrapper = function wrapper() {for (var _len13 = arguments.length, args = Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {args[_key13] = arguments[_key13];} var opts, params; if (args.length === 0) { opts = {}; params = []; } else if (args.length == 1) { opts = args[0]; params = []; } else if (args.length >= 2) { opts = args[0]; params = args.slice(1); } if (typeof opts == "string") opts = { title: opts }; return _this10.runInit(task, opts, params); }; this.initWrapper(wrapper, task); this.stack.top.add(wrapper); return wrapper; } }, { key: "runInit", value: function runInit( task, opts, params) { return this.runSimpleTask(task, opts, params); } }, { key: fin, value: function value() {var _this11 = this;for (var _len14 = arguments.length, args = Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {args[_key14] = arguments[_key14];} var opts, fn, task, wrapper; if (this.stack.length === 0) { throw new Error("fin() must be invoked into a suite."); } if (args.length === 0) { throw new Error("Invalid number of arguments. At least, one expected: the fin function."); } else if (args.length == 1) { fn = args[0]; opts = { name: "__suite__" }; } else if (args.length >= 2) { opts = args[0];fn = args[1]; } if (typeof opts == "string") opts = { name: opts }; if (!opts.name) opts.name = "__suite__"; task = new _Finalizer2.default(opts, fn); wrapper = function wrapper() {for (var _len15 = arguments.length, args = Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {args[_key15] = arguments[_key15];} var opts, params; if (args.length === 0) { opts = {}; params = []; } else if (args.length == 1) { opts = args[0]; params = []; } else if (args.length >= 2) { opts = args[0]; params = args.slice(1); } if (typeof opts == "string") opts = { title: opts }; return _this11.runFin(task, opts, params); }; this.initWrapper(wrapper, task); this.stack.top.add(wrapper); return wrapper; } }, { key: "runFin", value: function runFin( task, opts, params) { return this.runSimpleTask(task, opts, params); } }, { key: "initWrapper", value: function initWrapper( wrapper, task) { Object.defineProperty(wrapper, "__task__", { value: task }); Object.defineProperty(wrapper, "ignore", { value: function value(opts) {for (var _len16 = arguments.length, params = Array(_len16 > 1 ? _len16 - 1 : 0), _key16 = 1; _key16 < _len16; _key16++) {params[_key16 - 1] = arguments[_key16];} if (typeof opts == "string") opts = { title: opts }; wrapper.apply(undefined, [Object.assign({}, opts, { ignore: true })].concat(params)); }, enumerable: true }); Object.defineProperty(wrapper, "mute", { value: function value(opts) {for (var _len17 = arguments.length, params = Array(_len17 > 1 ? _len17 - 1 : 0), _key17 = 1; _key17 < _len17; _key17++) {params[_key17 - 1] = arguments[_key17];} if (typeof opts == "string") opts = { title: opts }; return wrapper.apply(undefined, [Object.assign({}, opts, { mute: true })].concat(params)); }, enumerable: true }); Object.defineProperty(wrapper, "title", { value: function value(title) { wrapper.__task__._title = title; return wrapper; }, enumerable: true }); } }, { key: "initTestWrapper", value: function initTestWrapper( wrapper, task) { this.initWrapper(wrapper, task); Object.defineProperty(wrapper, "only", { value: function value(opts) {for (var _len18 = arguments.length, params = Array(_len18 > 1 ? _len18 - 1 : 0), _key18 = 1; _key18 < _len18; _key18++) {params[_key18 - 1] = arguments[_key18];} if (typeof opts == "string") opts = { title: opts }; wrapper.apply(undefined, [Object.assign({}, opts, { only: true })].concat(params)); }, enumerable: true }); Object.defineProperty(wrapper, "params", { value: function value() {for (var _len19 = arguments.length, params = Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {params[_key19] = arguments[_key19];} wrapper.__task__.params = params; return wrapper; }, enumerable: true }); } }, { key: "end", value: function end() { this.reporters.end(); } }, { key: "continueOnError", get: function get() {return !this.breakOnError;} }, { key: "state", get: function get() {var res;var _iteratorNormalCompletion18 = true;var _didIteratorError18 = false;var _iteratorError18 = undefined;try {for (var _iterator18 = this.reporters.items[Symbol.iterator](), _step18; !(_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done); _iteratorNormalCompletion18 = true) {var rep = _step18.value;if (rep.name == "state") res = rep.state;}} catch (err) {_didIteratorError18 = true;_iteratorError18 = err;} finally {try {if (!_iteratorNormalCompletion18 && _iterator18.return) {_iterator18.return();}} finally {if (_didIteratorError18) {throw _iteratorError18;}}}return res;} }], [{ key: "DEFAULT_DISPLAY", get: function get() { return DEFAULT_DISPLAY; } }]);return Runner;}();exports.default = Runner;