appium-ios-simulator
Version:
iOS Simulator interface for Appium.
98 lines (73 loc) • 6.2 kB
JavaScript
;
var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
var _teen_process = require('teen_process');
var _bluebird = require('bluebird');
var _bluebird2 = _interopRequireDefault(_bluebird);
var _logger = require('./logger');
var _logger2 = _interopRequireDefault(_logger);
// tails a file, promise resolves when input string is written to file
function tailUntil(filePath, until) {
var timeout = arguments.length <= 2 || arguments[2] === undefined ? 5000 : arguments[2];
var proc, startDetector;
return _regeneratorRuntime.async(function tailUntil$(context$1$0) {
var _this = this;
while (1) switch (context$1$0.prev = context$1$0.next) {
case 0:
proc = new _teen_process.SubProcess('tail', ['-f', '-n', '100', filePath]);
startDetector = function startDetector(stdout) {
return stdout.indexOf(until) > -1;
};
context$1$0.next = 4;
return _regeneratorRuntime.awrap(new _bluebird2['default'](function (resolve, reject) {
var started = proc.start(startDetector);
/* eslint-disable promise/prefer-await-to-then */
var timedout = _bluebird2['default'].delay(timeout).then(function () {
return reject(new Error('Tailing file ' + filePath + ' failed after ' + timeout + 'ms'));
});
/* eslint-enable */
_bluebird2['default'].race([started, timedout]).then(resolve)['catch'](reject);
})['finally'](function callee$1$0() {
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
if (!proc.isRunning) {
context$2$0.next = 9;
break;
}
context$2$0.prev = 1;
context$2$0.next = 4;
return _regeneratorRuntime.awrap(proc.stop());
case 4:
context$2$0.next = 9;
break;
case 6:
context$2$0.prev = 6;
context$2$0.t0 = context$2$0['catch'](1);
// there is not much we can do here, unfortunately, but log
_logger2['default'].info('Stopping tail process failed: ' + context$2$0.t0.message);
case 9:
case 'end':
return context$2$0.stop();
}
}, null, _this, [[1, 6]]);
}));
case 4:
return context$1$0.abrupt('return', context$1$0.sent);
case 5:
case 'end':
return context$1$0.stop();
}
}, null, this);
}
exports.tailUntil = tailUntil;
// // for debugging
// function consoleOut (...args) {
// console.log(`>>> ${args}`); // eslint-disable-line no-console
// }
// proc.on('output', consoleOut);
// no matter what, stop the tail process
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90YWlsLXVudGlsLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7NEJBQTJCLGNBQWM7O3dCQUMzQixVQUFVOzs7O3NCQUNSLFVBQVU7Ozs7O0FBRzFCLFNBQWUsU0FBUyxDQUFFLFFBQVEsRUFBRSxLQUFLO01BQUUsT0FBTyx5REFBRyxJQUFJO01BQ25ELElBQUksRUFRSixhQUFhOzs7Ozs7QUFSYixZQUFJLEdBQUcsNkJBQWUsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7O0FBUTVELHFCQUFhLEdBQUcsU0FBaEIsYUFBYSxDQUFJLE1BQU0sRUFBSztBQUM5QixpQkFBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ25DOzs7eUNBRVksMEJBQU0sVUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFLO0FBQ3RDLGNBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7OztBQUd4QyxjQUFJLFFBQVEsR0FBRyxzQkFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU07QUFDekMsbUJBQU8sTUFBTSxDQUFDLElBQUksS0FBSyxtQkFBaUIsUUFBUSxzQkFBaUIsT0FBTyxRQUFLLENBQUMsQ0FBQztXQUNoRixDQUFDLENBQUM7OztBQUdILGdDQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pELENBQUMsV0FBUSxDQUFDOzs7O3FCQUVMLElBQUksQ0FBQyxTQUFTOzs7Ozs7O2lEQUVSLElBQUksQ0FBQyxJQUFJLEVBQUU7Ozs7Ozs7Ozs7O0FBR2pCLG9DQUFJLElBQUksb0NBQWtDLGVBQUksT0FBTyxDQUFHLENBQUM7Ozs7Ozs7U0FHOUQsQ0FBQzs7Ozs7Ozs7OztDQUNIOztRQUVRLFNBQVMsR0FBVCxTQUFTIiwiZmlsZSI6ImxpYi90YWlsLXVudGlsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViUHJvY2VzcyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcblxuLy8gdGFpbHMgYSBmaWxlLCBwcm9taXNlIHJlc29sdmVzIHdoZW4gaW5wdXQgc3RyaW5nIGlzIHdyaXR0ZW4gdG8gZmlsZVxuYXN5bmMgZnVuY3Rpb24gdGFpbFVudGlsIChmaWxlUGF0aCwgdW50aWwsIHRpbWVvdXQgPSA1MDAwKSB7XG4gIGxldCBwcm9jID0gbmV3IFN1YlByb2Nlc3MoJ3RhaWwnLCBbJy1mJywgJy1uJywgJzEwMCcsIGZpbGVQYXRoXSk7XG5cbiAgLy8gLy8gZm9yIGRlYnVnZ2luZ1xuICAvLyBmdW5jdGlvbiBjb25zb2xlT3V0ICguLi5hcmdzKSB7XG4gIC8vICAgY29uc29sZS5sb2coYD4+PiAke2FyZ3N9YCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAvLyB9XG4gIC8vIHByb2Mub24oJ291dHB1dCcsIGNvbnNvbGVPdXQpO1xuXG4gIGxldCBzdGFydERldGVjdG9yID0gKHN0ZG91dCkgPT4ge1xuICAgIHJldHVybiBzdGRvdXQuaW5kZXhPZih1bnRpbCkgPiAtMTtcbiAgfTtcblxuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxldCBzdGFydGVkID0gcHJvYy5zdGFydChzdGFydERldGVjdG9yKTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLXRoZW4gKi9cbiAgICBsZXQgdGltZWRvdXQgPSBCLmRlbGF5KHRpbWVvdXQpLnRoZW4oKCkgPT4ge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoYFRhaWxpbmcgZmlsZSAke2ZpbGVQYXRofSBmYWlsZWQgYWZ0ZXIgJHt0aW1lb3V0fW1zYCkpO1xuICAgIH0pO1xuICAgIC8qIGVzbGludC1lbmFibGUgKi9cblxuICAgIEIucmFjZShbc3RhcnRlZCwgdGltZWRvdXRdKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7XG4gIH0pLmZpbmFsbHkoYXN5bmMgKCkgPT4ge1xuICAgIC8vIG5vIG1hdHRlciB3aGF0LCBzdG9wIHRoZSB0YWlsIHByb2Nlc3NcbiAgICBpZiAocHJvYy5pc1J1bm5pbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHByb2Muc3RvcCgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIHRoZXJlIGlzIG5vdCBtdWNoIHdlIGNhbiBkbyBoZXJlLCB1bmZvcnR1bmF0ZWx5LCBidXQgbG9nXG4gICAgICAgIGxvZy5pbmZvKGBTdG9wcGluZyB0YWlsIHByb2Nlc3MgZmFpbGVkOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCB7IHRhaWxVbnRpbCB9O1xuIl0sInNvdXJjZVJvb3QiOiIuLi8uLiJ9