reactors-cli
Version:
Command line utility for reactors
272 lines (216 loc) • 8.56 kB
JavaScript
;
var _colors = require('colors');
var _colors2 = _interopRequireDefault(_colors);
var _path2 = require('path');
var _path3 = _interopRequireDefault(_path2);
var _should = require('should');
var _should2 = _interopRequireDefault(_should);
require('babel-polyfill');
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _ws = require('ws');
var _exec = require('../util/exec');
var _exec2 = _interopRequireDefault(_exec);
var _write = require('../util/write');
var _write2 = _interopRequireDefault(_write);
var _read = require('../util/read');
var _read2 = _interopRequireDefault(_read);
var _package = require('../../package.json');
var _config = require('../config');
var _config2 = _interopRequireDefault(_config);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } /* global describe it after */
function cbToPromise(fn) {
return new Promise(function (resolve, reject) {
fn(function (error, result) {
if (error) {
return reject(error);
}
resolve(result);
});
});
}
function stat() {
var _this = this;
for (var _len = arguments.length, paths = Array(_len), _key = 0; _key < _len; _key++) {
paths[_key] = arguments[_key];
}
return new Promise(function () {
var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(resolve, reject) {
var _path;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.prev = 0;
_path = _path3.default.join.apply(_path3.default, paths);
_context.t0 = resolve;
_context.next = 5;
return cbToPromise(_fs2.default.stat.bind(null, _path));
case 5:
_context.t1 = _context.sent;
(0, _context.t0)(_context.t1);
_context.next = 12;
break;
case 9:
_context.prev = 9;
_context.t2 = _context['catch'](0);
reject(_context.t2);
case 12:
case 'end':
return _context.stop();
}
}
}, _callee, _this, [[0, 9]]);
}));
return function (_x, _x2) {
return _ref.apply(this, arguments);
};
}());
}
var APP = 'RunReactorsDesktop';
var CONTAINER = '/tmp';
var PATH = _path3.default.join(CONTAINER, APP);
describe('Run desktop', function () {
describe('Init new app', function () {
it('should init app', _asyncToGenerator(regeneratorRuntime.mark(function _callee3() {
var _this2 = this;
return regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
this.timeout(1000 * 60 * 5);
return _context3.abrupt('return', new Promise(function () {
var _ref3 = _asyncToGenerator(regeneratorRuntime.mark(function _callee2(resolve, reject) {
var binPath;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.prev = 0;
binPath = _path3.default.resolve(__dirname, '../..', _package.bin.reactors);
_context2.next = 4;
return (0, _exec2.default)('node ' + binPath + ' init ' + APP, { cwd: CONTAINER });
case 4:
resolve();
_context2.next = 10;
break;
case 7:
_context2.prev = 7;
_context2.t0 = _context2['catch'](0);
reject(_context2.t0);
case 10:
case 'end':
return _context2.stop();
}
}
}, _callee2, _this2, [[0, 7]]);
}));
return function (_x3, _x4) {
return _ref3.apply(this, arguments);
};
}()));
case 2:
case 'end':
return _context3.stop();
}
}
}, _callee3, this);
})));
});
describe('Run', function () {
var connected = void 0;
it('should put new index', _asyncToGenerator(regeneratorRuntime.mark(function _callee4() {
return regeneratorRuntime.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return (0, _exec2.default)('ls app', { cwd: _path3.default.join(PATH) });
case 2:
_context4.t0 = _write2.default;
_context4.t1 = _path3.default.join(PATH, 'app/App.js');
_context4.next = 6;
return (0, _read2.default)(_path3.default.resolve(__dirname, '../../templates/test/run-desktop-app.js'));
case 6:
_context4.t2 = _context4.sent;
_context4.next = 9;
return (0, _context4.t0)(_context4.t1, _context4.t2);
case 9:
case 'end':
return _context4.stop();
}
}
}, _callee4, undefined);
})));
it('should start a web socket server', function () {
var wss = new _ws.Server({ port: 8008 });
wss.on('connection', function () {
connected = true;
});
});
it('should launch run command', _asyncToGenerator(regeneratorRuntime.mark(function _callee6() {
var _this3 = this;
return regeneratorRuntime.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
this.timeout(1000 * 60 * 5);
return _context6.abrupt('return', new Promise(function () {
var _ref6 = _asyncToGenerator(regeneratorRuntime.mark(function _callee5(resolve, reject) {
var binPath;
return regeneratorRuntime.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
try {
binPath = _path3.default.resolve(__dirname, '../..', _package.bin.reactors);
(0, _exec2.default)('node ' + binPath + ' run desktop', { cwd: PATH });
setTimeout(resolve, 10000);
} catch (error) {
reject(error);
}
case 1:
case 'end':
return _context5.stop();
}
}
}, _callee5, _this3);
}));
return function (_x5, _x6) {
return _ref6.apply(this, arguments);
};
}()));
case 2:
case 'end':
return _context6.stop();
}
}
}, _callee6, this);
})));
it('should have handshaked', function (done) {
this.timeout(3500);
setTimeout(function () {
if (connected) {
done();
} else {
done(new Error('Not connected'));
}
}, 2500);
});
});
after('remove project', _asyncToGenerator(regeneratorRuntime.mark(function _callee7() {
return regeneratorRuntime.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
_context7.next = 2;
return (0, _exec2.default)('rm -rf ' + PATH);
case 2:
case 'end':
return _context7.stop();
}
}
}, _callee7, undefined);
})));
});