UNPKG

gulp-qunit-harness

Version:

Gulp plugin for running qunit tests on a local machine and in the SauceLabs environment.

131 lines (94 loc) 4.24 kB
'use strict'; var _regeneratorRuntime = require('babel-runtime/regenerator').default; var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default').default; exports.__esModule = true; var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _through2 = require('through2'); var _through22 = _interopRequireDefault(_through2); var _promise = require('promise'); var _promise2 = _interopRequireDefault(_promise); var _qunitHarness = require('qunit-harness'); var _qunitHarness2 = _interopRequireDefault(_qunitHarness); var readFile = _promise2.default.denodeify(_fs2.default.readFile); function hang() { return new _promise2.default(function () { // NOTE: hang forever }); } exports.default = function (qunitSettings, envSettings) { var runOpts = arguments.length <= 2 || arguments[2] === undefined ? { cliMode: false } : arguments[2]; qunitSettings = { basePath: qunitSettings.basePath || '', port: qunitSettings.port, crossDomainPort: qunitSettings.crossDomainPort, scripts: qunitSettings.scripts || [], css: qunitSettings.css || [], configApp: qunitSettings.configApp || null, before: qunitSettings.before, after: qunitSettings.after }; var tests = []; var qunitHarness = new _qunitHarness2.default(); function runTests() { return _regeneratorRuntime.async(function runTests$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: qunitHarness.fixtures(qunitSettings.basePath).scripts(qunitSettings.scripts).css(qunitSettings.css).tests(tests); if (typeof qunitSettings.port === 'number') qunitHarness.port(qunitSettings.port); if (typeof qunitSettings.crossDomainPort === 'number') qunitHarness.crossDomainPort(qunitSettings.crossDomainPort); if (typeof qunitSettings.configApp === 'function') qunitHarness.configApp(qunitSettings.configApp); if (typeof qunitSettings.before === 'function') qunitHarness.before(qunitSettings.before); if (typeof qunitSettings.after === 'function') qunitHarness.after(qunitSettings.after); qunitHarness.create(); if (!envSettings) { context$2$0.next = 12; break; } if (runOpts.cliMode) qunitHarness.cli(envSettings);else qunitHarness.saucelabs(envSettings); context$2$0.next = 11; return _regeneratorRuntime.awrap(qunitHarness.run()); case 11: return context$2$0.abrupt('return', context$2$0.sent); case 12: context$2$0.next = 14; return _regeneratorRuntime.awrap(hang()); case 14: case 'end': return context$2$0.stop(); } }, null, this); } return _through22.default.obj(function (file, enc, done) { tests.push(file.path); done(); }, function callee$1$0(done) { var error; return _regeneratorRuntime.async(function callee$1$0$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: error = null; context$2$0.prev = 1; context$2$0.next = 4; return _regeneratorRuntime.awrap(runTests()); case 4: context$2$0.next = 9; break; case 6: context$2$0.prev = 6; context$2$0.t0 = context$2$0['catch'](1); error = context$2$0.t0; case 9: context$2$0.prev = 9; qunitHarness.close(); done(error); return context$2$0.finish(9); case 13: case 'end': return context$2$0.stop(); } }, null, this, [[1, 6, 9, 13]]); }); }; ; module.exports = exports.default;