UNPKG

appium-doctor

Version:

Test environment for fitness to run Appium

160 lines (119 loc) 10.5 kB
'use strict'; 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=