appium-ios-simulator
Version:
iOS Simulator interface for Appium.
72 lines (56 loc) • 4.64 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);
// 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;
};
return context$1$0.abrupt('return', new _bluebird2['default'](function callee$1$0(resolve, reject) {
var started, timedout;
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
started = proc.start(startDetector);
timedout = _bluebird2['default'].delay(timeout).then(function () {
return reject('tailing file ' + filePath + ' failed after ' + timeout + 'ms');
});
context$2$0.next = 4;
return _regeneratorRuntime.awrap(_bluebird2['default'].race([started, timedout]));
case 4:
resolve();
case 5:
case 'end':
return context$2$0.stop();
}
}, null, _this);
})['finally'](function () {
// no matter what, stop the tail process
proc.stop();
}));
case 3:
case 'end':
return context$1$0.stop();
}
}, null, this);
}
exports.tailUntil = tailUntil;
// for debugging
// function consoleOut (...args) {
// console.log(`>>> ${args}`);
// }
// proc.on('output', consoleOut);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90YWlsLXVudGlsLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7NEJBQTJCLGNBQWM7O3dCQUMzQixVQUFVOzs7OztBQUd4QixTQUFlLFNBQVMsQ0FBRSxRQUFRLEVBQUUsS0FBSztNQUFFLE9BQU8seURBQUcsSUFBSTtNQUNuRCxJQUFJLEVBUUosYUFBYTs7Ozs7O0FBUmIsWUFBSSxHQUFHLDZCQUFlLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDOztBQVE1RCxxQkFBYSxHQUFHLFNBQWhCLGFBQWEsQ0FBSSxNQUFNLEVBQUs7QUFDOUIsaUJBQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNuQzs7NENBRU0sMEJBQU0sb0JBQU8sT0FBTyxFQUFFLE1BQU07Y0FDN0IsT0FBTyxFQUNQLFFBQVE7Ozs7QUFEUix1QkFBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO0FBQ25DLHdCQUFRLEdBQUcsc0JBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFNO0FBQ3pDLHlCQUFPLE1BQU0sbUJBQWlCLFFBQVEsc0JBQWlCLE9BQU8sUUFBSyxDQUFDO2lCQUNyRSxDQUFDOztpREFFSSxzQkFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Ozs7QUFFakMsdUJBQU8sRUFBRSxDQUFDOzs7Ozs7O1NBQ1gsQ0FBQyxXQUFRLENBQUMsWUFBTTs7QUFFZixjQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYixDQUFDOzs7Ozs7O0NBQ0g7O1FBRVEsU0FBUyxHQUFULFNBQVMiLCJmaWxlIjoibGliL3RhaWwtdW50aWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuLy8gdGFpbHMgYSBmaWxlLCBwcm9taXNlIHJlc29sdmVzIHdoZW4gaW5wdXQgc3RyaW5nIGlzIHdyaXR0ZW4gdG8gZmlsZVxuYXN5bmMgZnVuY3Rpb24gdGFpbFVudGlsIChmaWxlUGF0aCwgdW50aWwsIHRpbWVvdXQgPSA1MDAwKSB7XG4gIGxldCBwcm9jID0gbmV3IFN1YlByb2Nlc3MoJ3RhaWwnLCBbJy1mJywgJy1uJywgJzEwMCcsIGZpbGVQYXRoXSk7XG5cbiAgLy8gZm9yIGRlYnVnZ2luZ1xuICAvLyBmdW5jdGlvbiBjb25zb2xlT3V0ICguLi5hcmdzKSB7XG4gIC8vICAgY29uc29sZS5sb2coYD4+PiAke2FyZ3N9YCk7XG4gIC8vIH1cbiAgLy8gcHJvYy5vbignb3V0cHV0JywgY29uc29sZU91dCk7XG5cbiAgbGV0IHN0YXJ0RGV0ZWN0b3IgPSAoc3Rkb3V0KSA9PiB7XG4gICAgcmV0dXJuIHN0ZG91dC5pbmRleE9mKHVudGlsKSA+IC0xO1xuICB9O1xuXG4gIHJldHVybiBuZXcgQihhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgbGV0IHN0YXJ0ZWQgPSBwcm9jLnN0YXJ0KHN0YXJ0RGV0ZWN0b3IpO1xuICAgIGxldCB0aW1lZG91dCA9IEIuZGVsYXkodGltZW91dCkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gcmVqZWN0KGB0YWlsaW5nIGZpbGUgJHtmaWxlUGF0aH0gZmFpbGVkIGFmdGVyICR7dGltZW91dH1tc2ApO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgQi5yYWNlKFtzdGFydGVkLCB0aW1lZG91dF0pO1xuXG4gICAgcmVzb2x2ZSgpO1xuICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAvLyBubyBtYXR0ZXIgd2hhdCwgc3RvcCB0aGUgdGFpbCBwcm9jZXNzXG4gICAgcHJvYy5zdG9wKCk7XG4gIH0pO1xufVxuXG5leHBvcnQgeyB0YWlsVW50aWwgfTtcbiJdfQ==