appium-doctor
Version:
Test environment for fitness to run Appium
166 lines (123 loc) • 10.8 kB
JavaScript
var _get = require('babel-runtime/helpers/get')['default'];
var _inherits = require('babel-runtime/helpers/inherits')['default'];
var _createClass = require('babel-runtime/helpers/create-class')['default'];
var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
var _doctor = require('./doctor');
var _utils = require('./utils');
var _appiumSupport = require('appium-support');
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _env = require('./env');
var _env2 = _interopRequireDefault(_env);
var checks = [];
checks.push(new _env2['default']('ANDROID_HOME'));
checks.push(new _env2['default']('JAVA_HOME'));
// Check that the PATH includes the jdk's bin directory
var JavaOnPathCheck = (function (_DoctorCheck) {
_inherits(JavaOnPathCheck, _DoctorCheck);
function JavaOnPathCheck() {
_classCallCheck(this, JavaOnPathCheck);
_get(Object.getPrototypeOf(JavaOnPathCheck.prototype), 'constructor', this).apply(this, arguments);
}
// Check tools
_createClass(JavaOnPathCheck, [{
key: 'diagnose',
value: function diagnose() {
var javaHomeBin;
return _regeneratorRuntime.async(function diagnose$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
if (!process.env.JAVA_HOME) {
context$2$0.next = 4;
break;
}
javaHomeBin = _path2['default'].resolve(process.env.JAVA_HOME, 'bin');
if (!(process.env.PATH.indexOf(javaHomeBin) + 1)) {
context$2$0.next = 4;
break;
}
return context$2$0.abrupt('return', (0, _utils.ok)('Bin directory of $JAVA_HOME is set'));
case 4:
return context$2$0.abrupt('return', (0, _utils.nok)('Bin directory for $JAVA_HOME is not set'));
case 5:
case 'end':
return context$2$0.stop();
}
}, null, this);
}
}, {
key: 'fix',
value: function fix() {
return 'Add \'$JAVA_HOME' + _path2['default'].sep + 'bin\' to your PATH environment';
}
}]);
return JavaOnPathCheck;
})(_doctor.DoctorCheck);
var AndroidToolCheck = (function (_DoctorCheck2) {
_inherits(AndroidToolCheck, _DoctorCheck2);
function AndroidToolCheck(toolName, toolPath) {
_classCallCheck(this, AndroidToolCheck);
_get(Object.getPrototypeOf(AndroidToolCheck.prototype), 'constructor', this).call(this);
this.toolName = toolName;
this.toolPath = toolPath;
}
_createClass(AndroidToolCheck, [{
key: 'diagnose',
value: function diagnose() {
var fullPath;
return _regeneratorRuntime.async(function diagnose$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
if (!(typeof process.env.ANDROID_HOME === 'undefined')) {
context$2$0.next = 2;
break;
}
return context$2$0.abrupt('return', (0, _utils.nok)(this.toolName + ' could not be found because ANDROID_HOME is NOT set!'));
case 2:
fullPath = _path2['default'].resolve(process.env.ANDROID_HOME, this.toolPath);
context$2$0.next = 5;
return _regeneratorRuntime.awrap(_appiumSupport.fs.exists(fullPath));
case 5:
if (!context$2$0.sent) {
context$2$0.next = 9;
break;
}
context$2$0.t0 = (0, _utils.ok)(this.toolName + ' exists at: ' + fullPath);
context$2$0.next = 10;
break;
case 9:
context$2$0.t0 = (0, _utils.nok)(this.toolName + ' could NOT be found at \'' + fullPath + '\'!');
case 10:
return context$2$0.abrupt('return', context$2$0.t0);
case 11:
case 'end':
return context$2$0.stop();
}
}, null, this);
}
}, {
key: 'fix',
value: function fix() {
if (typeof process.env.ANDROID_HOME === 'undefined') {
return 'Manually configure ANDROID_HOME and run appium-doctor again.';
}
return 'Manually install ' + this.toolName + ' and add it to PATH.';
}
}]);
return AndroidToolCheck;
})(_doctor.DoctorCheck);
checks.push(new AndroidToolCheck('adb', _path2['default'].join("platform-tools", _appiumSupport.system.isWindows() ? 'adb.exe' : 'adb')));
checks.push(new AndroidToolCheck('android', _path2['default'].join("tools", _appiumSupport.system.isWindows() ? 'android.bat' : 'android')));
checks.push(new AndroidToolCheck('emulator', _path2['default'].join("tools", _appiumSupport.system.isWindows() ? 'emulator.exe' : 'emulator')));
checks.push(new JavaOnPathCheck());
exports.EnvVarAndPathCheck = _env2['default'];
exports.AndroidToolCheck = AndroidToolCheck;
exports.JavaOnPathCheck = JavaOnPathCheck;
exports['default'] = checks;
//# sourceMappingURL=data:application/json;charset=utf8;base64,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TUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUFDLENBQUM7O1FBRTFCLGtCQUFrQjtRQUFFLGdCQUFnQixHQUFoQixnQkFBZ0I7UUFBRSxlQUFlLEdBQWYsZUFBZTtxQkFDL0MsTUFBTSIsImZpbGUiOiJsaWIvYW5kcm9pZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvY3RvckNoZWNrIH0gZnJvbSAnLi9kb2N0b3InO1xuaW1wb3J0IHsgb2ssIG5vayB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgZnMsIHN5c3RlbSB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IEVudlZhckFuZFBhdGhDaGVjayBmcm9tICcuL2Vudic7XG5cblxubGV0IGNoZWNrcyA9IFtdO1xuXG5cbmNoZWNrcy5wdXNoKG5ldyBFbnZWYXJBbmRQYXRoQ2hlY2soJ0FORFJPSURfSE9NRScpKTtcbmNoZWNrcy5wdXNoKG5ldyBFbnZWYXJBbmRQYXRoQ2hlY2soJ0pBVkFfSE9NRScpKTtcblxuLy8gQ2hlY2sgdGhhdCB0aGUgUEFUSCBpbmNsdWRlcyB0aGUgamRrJ3MgYmluIGRpcmVjdG9yeVxuY2xhc3MgSmF2YU9uUGF0aENoZWNrIGV4dGVuZHMgRG9jdG9yQ2hlY2sge1xuICBhc3luYyBkaWFnbm9zZSAoKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52LkpBVkFfSE9NRSkge1xuICAgICAgbGV0IGphdmFIb21lQmluID0gcGF0aC5yZXNvbHZlKHByb2Nlc3MuZW52LkpBVkFfSE9NRSwgJ2JpbicpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52LlBBVEguaW5kZXhPZihqYXZhSG9tZUJpbikgKyAxKSB7XG4gICAgICAgIHJldHVybiBvaygnQmluIGRpcmVjdG9yeSBvZiAkSkFWQV9IT01FIGlzIHNldCcpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm9rKCdCaW4gZGlyZWN0b3J5IGZvciAkSkFWQV9IT01FIGlzIG5vdCBzZXQnKTtcbiAgfVxuXG4gIGZpeCAoKSB7XG4gICAgcmV0dXJuIGBBZGQgJyRKQVZBX0hPTUUke3BhdGguc2VwfWJpbicgdG8geW91ciBQQVRIIGVudmlyb25tZW50YDtcbiAgfVxufVxuXG4vLyBDaGVjayB0b29sc1xuY2xhc3MgQW5kcm9pZFRvb2xDaGVjayBleHRlbmRzIERvY3RvckNoZWNrIHtcbiAgY29uc3RydWN0b3IgKHRvb2xOYW1lLCB0b29sUGF0aCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50b29sTmFtZSA9IHRvb2xOYW1lO1xuICAgIHRoaXMudG9vbFBhdGggPSB0b29sUGF0aDtcbiAgfVxuXG4gIGFzeW5jIGRpYWdub3NlICgpIHtcbiAgICBpZiAodHlwZW9mIHByb2Nlc3MuZW52LkFORFJPSURfSE9NRSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBub2soYCR7dGhpcy50b29sTmFtZX0gY291bGQgbm90IGJlIGZvdW5kIGJlY2F1c2UgQU5EUk9JRF9IT01FIGlzIE5PVCBzZXQhYCk7XG4gICAgfVxuICAgIGxldCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5BTkRST0lEX0hPTUUsIHRoaXMudG9vbFBhdGgpO1xuICAgIHJldHVybiBhd2FpdCBmcy5leGlzdHMoZnVsbFBhdGgpID8gb2soYCR7dGhpcy50b29sTmFtZX0gZXhpc3RzIGF0OiAke2Z1bGxQYXRofWApIDpcbiAgICAgIG5vayhgJHt0aGlzLnRvb2xOYW1lfSBjb3VsZCBOT1QgYmUgZm91bmQgYXQgXFwnJHtmdWxsUGF0aH1cXCchYCk7XG4gIH1cblxuICBmaXggKCkge1xuICAgIGlmICh0eXBlb2YgcHJvY2Vzcy5lbnYuQU5EUk9JRF9IT01FID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuICdNYW51YWxseSBjb25maWd1cmUgQU5EUk9JRF9IT01FIGFuZCBydW4gYXBwaXVtLWRvY3RvciBhZ2Fpbi4nO1xuICAgIH1cbiAgICByZXR1cm4gYE1hbnVhbGx5IGluc3RhbGwgJHt0aGlzLnRvb2xOYW1lfSBhbmQgYWRkIGl0IHRvIFBBVEguYDtcbiAgfVxufVxuY2hlY2tzLnB1c2gobmV3IEFuZHJvaWRUb29sQ2hlY2soJ2FkYicsXG4gIHBhdGguam9pbihcInBsYXRmb3JtLXRvb2xzXCIsIHN5c3RlbS5pc1dpbmRvd3MoKSA/ICdhZGIuZXhlJyA6ICdhZGInKSkpO1xuY2hlY2tzLnB1c2gobmV3IEFuZHJvaWRUb29sQ2hlY2soJ2FuZHJvaWQnLFxuICBwYXRoLmpvaW4oXCJ0b29sc1wiLCBzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnYW5kcm9pZC5iYXQnIDogJ2FuZHJvaWQnKSkpO1xuY2hlY2tzLnB1c2gobmV3IEFuZHJvaWRUb29sQ2hlY2soJ2VtdWxhdG9yJyxcbiAgcGF0aC5qb2luKFwidG9vbHNcIiwgc3lzdGVtLmlzV2luZG93cygpID8gJ2VtdWxhdG9yLmV4ZScgOiAnZW11bGF0b3InKSkpO1xuY2hlY2tzLnB1c2gobmV3IEphdmFPblBhdGhDaGVjaygpKTtcblxuZXhwb3J0IHsgRW52VmFyQW5kUGF0aENoZWNrLCBBbmRyb2lkVG9vbENoZWNrLCBKYXZhT25QYXRoQ2hlY2sgfTtcbmV4cG9ydCBkZWZhdWx0IGNoZWNrcztcbiJdLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
;