appium-doctor
Version:
Test environment for fitness to run Appium
160 lines (119 loc) • 10.5 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:
javaHomeBin = _path2['default'].resolve(process.env.JAVA_HOME, 'bin');
if (!(process.env.PATH.indexOf(javaHomeBin) + 1)) {
context$2$0.next = 3;
break;
}
return context$2$0.abrupt('return', (0, _utils.ok)('Bin directory of $JAVA_HOME is set'));
case 3:
return context$2$0.abrupt('return', (0, _utils.nok)('Bin directory for $JAVA_HOME is not set'));
case 4:
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;base64,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QUMsQ0FBQzs7UUFFMUIsa0JBQWtCO1FBQUUsZ0JBQWdCLEdBQWhCLGdCQUFnQjtRQUFFLGVBQWUsR0FBZixlQUFlO3FCQUMvQyxNQUFNIiwiZmlsZSI6ImxpYi9hbmRyb2lkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9jdG9yQ2hlY2sgfSBmcm9tICcuL2RvY3Rvcic7XG5pbXBvcnQgeyBvaywgbm9rIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBmcywgc3lzdGVtIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgRW52VmFyQW5kUGF0aENoZWNrIGZyb20gJy4vZW52JztcblxuXG5sZXQgY2hlY2tzID0gW107XG5cblxuY2hlY2tzLnB1c2gobmV3IEVudlZhckFuZFBhdGhDaGVjaygnQU5EUk9JRF9IT01FJykpO1xuY2hlY2tzLnB1c2gobmV3IEVudlZhckFuZFBhdGhDaGVjaygnSkFWQV9IT01FJykpO1xuXG4vLyBDaGVjayB0aGF0IHRoZSBQQVRIIGluY2x1ZGVzIHRoZSBqZGsncyBiaW4gZGlyZWN0b3J5XG5jbGFzcyBKYXZhT25QYXRoQ2hlY2sgZXh0ZW5kcyBEb2N0b3JDaGVjayB7XG4gIGFzeW5jIGRpYWdub3NlICgpIHtcbiAgICBsZXQgamF2YUhvbWVCaW4gPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuSkFWQV9IT01FLCAnYmluJyk7XG4gICAgaWYgKHByb2Nlc3MuZW52LlBBVEguaW5kZXhPZihqYXZhSG9tZUJpbikgKyAxKSB7XG4gICAgICByZXR1cm4gb2soJ0JpbiBkaXJlY3Rvcnkgb2YgJEpBVkFfSE9NRSBpcyBzZXQnKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vaygnQmluIGRpcmVjdG9yeSBmb3IgJEpBVkFfSE9NRSBpcyBub3Qgc2V0Jyk7XG4gIH1cblxuICBmaXggKCkge1xuICAgIHJldHVybiBgQWRkICckSkFWQV9IT01FJHtwYXRoLnNlcH1iaW4nIHRvIHlvdXIgUEFUSCBlbnZpcm9ubWVudGA7XG4gIH1cbn1cblxuLy8gQ2hlY2sgdG9vbHNcbmNsYXNzIEFuZHJvaWRUb29sQ2hlY2sgZXh0ZW5kcyBEb2N0b3JDaGVjayB7XG4gIGNvbnN0cnVjdG9yICh0b29sTmFtZSwgdG9vbFBhdGgpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudG9vbE5hbWUgPSB0b29sTmFtZTtcbiAgICB0aGlzLnRvb2xQYXRoID0gdG9vbFBhdGg7XG4gIH1cblxuICBhc3luYyBkaWFnbm9zZSAoKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9jZXNzLmVudi5BTkRST0lEX0hPTUUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbm9rKGAke3RoaXMudG9vbE5hbWV9IGNvdWxkIG5vdCBiZSBmb3VuZCBiZWNhdXNlIEFORFJPSURfSE9NRSBpcyBOT1Qgc2V0IWApO1xuICAgIH1cbiAgICBsZXQgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5lbnYuQU5EUk9JRF9IT01FLCB0aGlzLnRvb2xQYXRoKTtcbiAgICByZXR1cm4gYXdhaXQgZnMuZXhpc3RzKGZ1bGxQYXRoKSA/IG9rKGAke3RoaXMudG9vbE5hbWV9IGV4aXN0cyBhdDogJHtmdWxsUGF0aH1gKSA6XG4gICAgICBub2soYCR7dGhpcy50b29sTmFtZX0gY291bGQgTk9UIGJlIGZvdW5kIGF0IFxcJyR7ZnVsbFBhdGh9XFwnIWApO1xuICB9XG5cbiAgZml4ICgpIHtcbiAgICBpZiAodHlwZW9mIHByb2Nlc3MuZW52LkFORFJPSURfSE9NRSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAnTWFudWFsbHkgY29uZmlndXJlIEFORFJPSURfSE9NRSBhbmQgcnVuIGFwcGl1bS1kb2N0b3IgYWdhaW4uJztcbiAgICB9XG4gICAgcmV0dXJuIGBNYW51YWxseSBpbnN0YWxsICR7dGhpcy50b29sTmFtZX0gYW5kIGFkZCBpdCB0byBQQVRILmA7XG4gIH1cbn1cbmNoZWNrcy5wdXNoKG5ldyBBbmRyb2lkVG9vbENoZWNrKCdhZGInLFxuICBwYXRoLmpvaW4oXCJwbGF0Zm9ybS10b29sc1wiLCBzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnYWRiLmV4ZScgOiAnYWRiJykpKTtcbmNoZWNrcy5wdXNoKG5ldyBBbmRyb2lkVG9vbENoZWNrKCdhbmRyb2lkJyxcbiAgcGF0aC5qb2luKFwidG9vbHNcIiwgc3lzdGVtLmlzV2luZG93cygpID8gJ2FuZHJvaWQuYmF0JyA6ICdhbmRyb2lkJykpKTtcbmNoZWNrcy5wdXNoKG5ldyBBbmRyb2lkVG9vbENoZWNrKCdlbXVsYXRvcicsXG4gIHBhdGguam9pbihcInRvb2xzXCIsIHN5c3RlbS5pc1dpbmRvd3MoKSA/ICdlbXVsYXRvci5leGUnIDogJ2VtdWxhdG9yJykpKTtcbmNoZWNrcy5wdXNoKG5ldyBKYXZhT25QYXRoQ2hlY2soKSk7XG5cbmV4cG9ydCB7IEVudlZhckFuZFBhdGhDaGVjaywgQW5kcm9pZFRvb2xDaGVjaywgSmF2YU9uUGF0aENoZWNrIH07XG5leHBvcnQgZGVmYXVsdCBjaGVja3M7XG4iXX0=