You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by al...@apache.org on 2017/01/26 12:11:27 UTC

cordova-paramedic git commit: Added --cli argument

Repository: cordova-paramedic
Updated Branches:
  refs/heads/master 6991af657 -> e9c056c2c


Added --cli argument


Project: http://git-wip-us.apache.org/repos/asf/cordova-paramedic/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-paramedic/commit/e9c056c2
Tree: http://git-wip-us.apache.org/repos/asf/cordova-paramedic/tree/e9c056c2
Diff: http://git-wip-us.apache.org/repos/asf/cordova-paramedic/diff/e9c056c2

Branch: refs/heads/master
Commit: e9c056c2c2563814a3b6dacc06fbd681bc9cffb7
Parents: 6991af6
Author: Alexander Sorokin <al...@akvelon.com>
Authored: Thu Jan 26 14:36:59 2017 +0300
Committer: Alexander Sorokin <al...@akvelon.com>
Committed: Thu Jan 26 15:06:54 2017 +0300

----------------------------------------------------------------------
 lib/ParamedicConfig.js        | 27 +++++++++++++++++++++++---
 lib/ParamedicTargetChooser.js |  7 ++++---
 lib/PluginsManager.js         |  4 ++--
 lib/appium/AppiumRunner.js    |  4 ++--
 lib/paramedic.js              | 38 +++++++++++++++++++++++++------------
 lib/utils/utilities.js        |  6 +++---
 main.js                       | 39 +++++++++++++++++++++++---------------
 7 files changed, 85 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-paramedic/blob/e9c056c2/lib/ParamedicConfig.js
----------------------------------------------------------------------
diff --git a/lib/ParamedicConfig.js b/lib/ParamedicConfig.js
index d8a05b9..98546a7 100644
--- a/lib/ParamedicConfig.js
+++ b/lib/ParamedicConfig.js
@@ -27,6 +27,7 @@ var DEFAULT_SAUCE_PLATFORM_VERSION_IOS     = '9.3';
 var DEFAULT_SAUCE_APPIUM_VERSION           = '1.5.3';
 var DEFAULT_BUILD_NAME                     = 'Paramedic sauce test';
 var BROWSERIFY_ARG                         = '--browserify ';
+var DEFAULT_CLI                            = 'cordova'; // use globally installed cordova by default
 
 var util = require('./utils').utilities;
 
@@ -69,6 +70,7 @@ ParamedicConfig.parseFromArguments = function (argv) {
         ci:                   argv.ci,
         target:               argv.target,
         fileTransferServer:   argv.fileTransferServer,
+        cli:                  argv.cli,
     });
 };
 
@@ -113,9 +115,17 @@ ParamedicConfig.prototype.setAction = function (action) {
 };
 
 ParamedicConfig.prototype.getArgs = function () {
-    return this._config.args;
+    if (this._config.args) {
+        return this._config.args;
+    } else {
+        return '';
+    }
 };
 
+ParamedicConfig.prototype.setArgs = function (args) {
+    this._config.args = args;
+}
+
 ParamedicConfig.prototype.getPlatformId = function () {
     return this._config.platform.split('@')[0];
 };
@@ -217,12 +227,12 @@ ParamedicConfig.prototype.setSkipAppiumTests = function (skipAppiumTests) {
 };
 
 ParamedicConfig.prototype.isBrowserify = function () {
-    return this._config.args.indexOf(BROWSERIFY_ARG) >= 0;
+    return this.getArgs().indexOf(BROWSERIFY_ARG) >= 0;
 }
 
 ParamedicConfig.prototype.setBrowserify = function (browserify) {
     if (browserify) {
-        this._config.args = BROWSERIFY_ARG + this._config.args;
+        this.setArgs(BROWSERIFY_ARG + this.getArgs());
     } else {
         this._config.args = this._config.args.replace(BROWSERIFY_ARG, '');
     }
@@ -279,4 +289,15 @@ ParamedicConfig.prototype.setFileTransferServer = function (server) {
     this._config.fileTransferServer = server;
 }
 
+ParamedicConfig.prototype.getCli = function () {
+    if (this._config.cli) {
+        return this._config.cli;
+    }
+    return DEFAULT_CLI;
+}
+
+ParamedicConfig.prototype.setCli = function (cli) {
+    this._config.cli = cli;
+}
+
 module.exports = ParamedicConfig;

http://git-wip-us.apache.org/repos/asf/cordova-paramedic/blob/e9c056c2/lib/ParamedicTargetChooser.js
----------------------------------------------------------------------
diff --git a/lib/ParamedicTargetChooser.js b/lib/ParamedicTargetChooser.js
index a343411..35e198a 100644
--- a/lib/ParamedicTargetChooser.js
+++ b/lib/ParamedicTargetChooser.js
@@ -27,9 +27,10 @@ var ParamedicKill = require('./ParamedicKill');
 var ANDROID_RETRY_TIMES = 3;
 var ANDROID_TIME_OUT    = 300000; //5 Minutes
 
-function ParamedicTargetChooser(appPath, platform) {
+function ParamedicTargetChooser(appPath, config) {
     this.appPath = appPath;
-    this.platform = platform;
+    this.platform = config.getPlatformId();
+    this.cli = config.getCli();
 }
 
 ParamedicTargetChooser.prototype.chooseTarget = function (emulator, target) {
@@ -94,7 +95,7 @@ ParamedicTargetChooser.prototype.startAnAndroidEmulator = function (target) {
 
 ParamedicTargetChooser.prototype.chooseTargetForWindows = function (emulator, target) {
     logger.info('cordova-paramedic: Choosing Target for Windows');
-    var windowsCommand = 'cordova run --list --emulator';
+    var windowsCommand = this.cli + ' run --list --emulator';
 
     logger.info('cordova-paramedic: Running command: ' + windowsCommand);
     var devicesResult = shelljs.exec(windowsCommand, {silent: true, async: false});

http://git-wip-us.apache.org/repos/asf/cordova-paramedic/blob/e9c056c2/lib/PluginsManager.js
----------------------------------------------------------------------
diff --git a/lib/PluginsManager.js b/lib/PluginsManager.js
index df966f6..c497bce 100644
--- a/lib/PluginsManager.js
+++ b/lib/PluginsManager.js
@@ -79,7 +79,7 @@ PluginsManager.prototype.installSinglePlugin = function (plugin) {
     logger.normal('cordova-paramedic: installing ' + plugin);
     // var pluginPath = path.resolve(this.storedCWD, plugin);
 
-    var plugAddCmd = exec('cordova plugin add ' + plugin);
+    var plugAddCmd = exec(this.config.getCli() + ' plugin add ' + plugin);
     if (plugAddCmd.code !== 0) {
         logger.error('Failed to install plugin : ' + plugin);
         throw new Error('Failed to install plugin : ' + plugin);
@@ -88,7 +88,7 @@ PluginsManager.prototype.installSinglePlugin = function (plugin) {
 
 PluginsManager.prototype.showPluginsVersions = function () {
     logger.verbose('cordova-paramedic: versions of installed plugins: ');
-    exec('cordova plugins');
+    exec(this.config.getCli() + ' plugins');
 };
 
 module.exports = PluginsManager;

http://git-wip-us.apache.org/repos/asf/cordova-paramedic/blob/e9c056c2/lib/appium/AppiumRunner.js
----------------------------------------------------------------------
diff --git a/lib/appium/AppiumRunner.js b/lib/appium/AppiumRunner.js
index 1415e2f..760a352 100644
--- a/lib/appium/AppiumRunner.js
+++ b/lib/appium/AppiumRunner.js
@@ -418,7 +418,7 @@ AppiumRunner.prototype.prepareApp = function () {
     var fullAppPath = getFullAppPath(self.options.appPath);
     var deviceString = self.options.device ? ' --device' : '';
     var browserifyString = self.options.browserify ? ' --browserify' : '';
-    var buildCommand = 'cordova build ' + self.options.platform + deviceString + browserifyString;
+    var buildCommand = self.options.cli + ' build ' + self.options.platform + deviceString + browserifyString;
 
     // remove medic.json and (re)build
     shell.rm(path.join(fullAppPath, 'www', 'medic.json'));
@@ -438,7 +438,7 @@ AppiumRunner.prototype.prepareApp = function () {
         permitAccess(fullAppPath, '*');
         // add cordova-save-image-gallery plugin from npm to enable
         // Appium tests for camera plugin to save test image to the gallery
-        runCommand('cordova plugin add cordova-save-image-gallery', fullAppPath);
+        runCommand(self.options.cli + ' plugin add cordova-save-image-gallery', fullAppPath);
 
         // rebuild the app
         logger.normal('paramedic-appium: Building the app...');

http://git-wip-us.apache.org/repos/asf/cordova-paramedic/blob/e9c056c2/lib/paramedic.js
----------------------------------------------------------------------
diff --git a/lib/paramedic.js b/lib/paramedic.js
index 325e083..9104940 100644
--- a/lib/paramedic.js
+++ b/lib/paramedic.js
@@ -64,11 +64,7 @@ ParamedicRunner.prototype.run = function () {
     var self = this;
     var isTestPassed = false;
 
-    this.checkSauceRequirements();
-
-    if (!self.config.runMainTests() && !self.config.runAppiumTests()) {
-        throw new Error('No tests to run: both --skipAppiumTests and --skipMainTests are used');
-    }
+    self.checkConfig();
 
     return Q().then(function () {
         self.createTempProject();
@@ -117,11 +113,28 @@ ParamedicRunner.prototype.run = function () {
     });
 };
 
+ParamedicRunner.prototype.checkConfig = function () {
+    this.checkSauceRequirements();
+    if (!this.config.runMainTests() && !this.config.runAppiumTests()) {
+        throw new Error('No tests to run: both --skipAppiumTests and --skipMainTests are used');
+    }
+    checkCli: {
+        if (!(this.config.getCli() === 'cordova') && !(this.config.getCli() === 'phonegap')) {
+            if (path.isAbsolute(this.config.getCli())) {
+                break checkCli;
+            }
+            var cliAbsolutePath = path.resolve(this.config.getCli());
+            this.config.setCli(cliAbsolutePath);
+        }
+    }
+    logger.info('cordova-paramedic: Will use the following cli: ' + this.config.getCli());
+};
+
 ParamedicRunner.prototype.createTempProject = function () {
     this.tempFolder = tmp.dirSync();
     tmp.setGracefulCleanup();
     logger.info('cordova-paramedic: creating temp project at ' + this.tempFolder.name);
-    exec('cordova create ' + this.tempFolder.name);
+    exec(this.config.getCli() + ' create ' + this.tempFolder.name);
 };
 
 ParamedicRunner.prototype.prepareProjectToRunTests = function () {
@@ -167,7 +180,7 @@ ParamedicRunner.prototype.installPlatform = function () {
     var platform = this.config.getPlatform();
     logger.info('cordova-paramedic: adding platform ' + platform);
 
-    return execPromise('cordova platform add ' + platform)
+    return execPromise(this.config.getCli() + ' platform add ' + platform)
     .then(function () {
         logger.info('cordova-paramedic: successfully finished adding platform ' + platform);
     });
@@ -177,7 +190,7 @@ ParamedicRunner.prototype.checkPlatformRequirements = function () {
     var platformId = this.config.getPlatformId();
 
     logger.normal('cordova-paramedic: checking requirements for platform ' + platformId);
-    return execPromise('cordova requirements ' + platformId)
+    return execPromise(this.config.getCli() + ' requirements ' + platformId)
     .then(function () {
         logger.info('cordova-paramedic: successfully finished checking requirements for platform ' + platformId);
     });
@@ -328,7 +341,8 @@ ParamedicRunner.prototype.runAppiumTests = function (useSauce) {
         output: self.config.getOutputDir(),
         verbose: self.config.isVerbose(),
         sauce: useSauce,
-        browserify: self.config.isBrowserify
+        browserify: self.config.isBrowserify,
+        cli: self.config.getCli(),
     };
     if (useSauce) {
         options.sauceAppPath = 'sauce-storage:' + this.getAppName();
@@ -411,8 +425,8 @@ ParamedicRunner.prototype.waitForTests = function () {
 
 ParamedicRunner.prototype.getCommandForStartingTests = function () {
     var self = this;
-    var cmd  = 'cordova ' + this.config.getAction() + ' ' + this.config.getPlatformId();
-    var paramedicTargetChooser = new ParamedicTargetChooser(this.tempFolder.name, this.config.getPlatformId());
+    var cmd  = self.config.getCli() + ' ' + this.config.getAction() + ' ' + this.config.getPlatformId();
+    var paramedicTargetChooser = new ParamedicTargetChooser(this.tempFolder.name, this.config);
 
     if(self.config.getAction() === 'build' || (self.config.getPlatformId() === 'windows' && self.config.getArgs().indexOf('appx=8.1-phone') < 0)) {
         //The app is to be run as a store app or just build. So no need to choose a target.
@@ -449,7 +463,7 @@ ParamedicRunner.prototype.getCommandForStartingTests = function () {
 
 ParamedicRunner.prototype.getCommandForBuilding = function () {
     var browserifyArg = this.config.isBrowserify() ? ' --browserify' : '';
-    var cmd = 'cordova build ' + this.config.getPlatformId() + browserifyArg;
+    var cmd = this.config.getCli() + ' build ' + this.config.getPlatformId() + browserifyArg;
 
     return cmd;
 };

http://git-wip-us.apache.org/repos/asf/cordova-paramedic/blob/e9c056c2/lib/utils/utilities.js
----------------------------------------------------------------------
diff --git a/lib/utils/utilities.js b/lib/utils/utilities.js
index e91279f..edf4b20 100644
--- a/lib/utils/utilities.js
+++ b/lib/utils/utilities.js
@@ -61,12 +61,12 @@ function getSimulatorsFolder() {
     return simulatorsFolderPath;
 }
 
-function getSimulatorModelId(target) {
+function getSimulatorModelId(cli, target) {
     var findSimCommand;
     if (target) {
-        findSimCommand = 'cordova run --list --emulator | grep ' + target + ' | tail -n1';
+        findSimCommand = cli + ' run --list --emulator | grep ' + target + ' | tail -n1';
     } else {
-        findSimCommand = 'cordova run --list --emulator | grep ^iPhone | tail -n1';
+        findSimCommand = cli + ' run --list --emulator | grep ^iPhone | tail -n1';
     }
 
     logger.info('running:');

http://git-wip-us.apache.org/repos/asf/cordova-paramedic/blob/e9c056c2/main.js
----------------------------------------------------------------------
diff --git a/main.js b/main.js
index 172abbe..276a813 100755
--- a/main.js
+++ b/main.js
@@ -38,27 +38,28 @@ var USAGE           = "Error missing args. \n" +
     "`MSECS` : (optional) time in millisecs to wait for tests to pass|fail \n" +
               "\t(defaults to 10 minutes) \n" +
     "`PORTNUM` : (optional) ports to find available and use for posting results from emulator back to paramedic server(default is from 8008 to 8009)\n" +
-    "--target : (optional) target to deploy to\n" +
-    "--justbuild : (optional) just builds the project, without running the tests \n" +
     "--browserify : (optional) plugins are browserified into cordova.js \n" +
-    "--verbose : (optional) verbose mode. Display more information output\n" +
-    "--useTunnel: (optional) use tunneling instead of local address. default is false\n" +
-    "--config : (optional) read configuration from paramedic configuration file\n" +
-    "--outputDir : (optional) path to save Junit results file & Device logs\n" +
+    "--buildName : (optional) Build name to show in Saucelabs dashboard\n" +
+    "--ci : (optional) Skip tests that require user interaction\n" +
     "--cleanUpAfterRun : (optional) cleans up the application after the run\n" +
+    "--cli : (optional) A path to Cordova CLI\n" +
+    "--config : (optional) read configuration from paramedic configuration file\n" +
+    "--fileTransferServer : (optional) (cordova-plugin-file-transfer only) A server address tests should connect to\n" +
+    "--justbuild : (optional) just builds the project, without running the tests \n" +
     "--logMins : (optional) Windows only - specifies number of minutes to get logs\n" +
-    "--tccDb : (optional) iOS only - specifies the path for the TCC.db file to be copied.\n" +
-    "--shouldUseSauce : (optional) run tests on Saucelabs\n" +
-    "--buildName : (optional) Build name to show in Saucelabs dashboard\n" +
-    "--sauceUser : (optional) Saucelabs username\n" +
-    "--sauceKey : (optional) Saucelabs access key\n" +
+    "--outputDir : (optional) path to save Junit results file & Device logs\n" +
+    "--sauceAppiumVersion : (optional) Appium version to use when running on Saucelabs. For example, \"1.5.3\"\n" +
     "--sauceDeviceName : (optional) Name of the SauceLabs emulator. For example, \"iPhone Simulator\"\n" +
+    "--sauceKey : (optional) Saucelabs access key\n" +
     "--saucePlatformVersion : (optional) Platform version of the SauceLabs emulator. For example, \"9.3\"\n" +
-    "--sauceAppiumVersion : (optional) Appium version to use when running on Saucelabs. For example, \"1.5.3\"\n" +
-    "--skipMainTests : (optional) Do not run main (cordova-test-framework) tests\n" +
+    "--sauceUser : (optional) Saucelabs username\n" +
+    "--shouldUseSauce : (optional) run tests on Sauce Labs\n" +
     "--skipAppiumTests : (optional) Do not run Appium tests\n" +
-    "--ci : (optional) Skip tests that require user interaction\n" +
-    "--fileTransferServer : (optional) (cordova-plugin-file-transfer only) A server address tests should connect to\n" +
+    "--skipMainTests : (optional) Do not run main (cordova-test-framework) tests\n" +
+    "--target : (optional) target to deploy to\n" +
+    "--tccDb : (optional) iOS only - specifies the path for the TCC.db file to be copied.\n" +
+    "--useTunnel: (optional) use tunneling instead of local address. default is false\n" +
+    "--verbose : (optional) verbose mode. Display more information output\n" +
     "";
 
 var argv = parseArgs(process.argv.slice(2));
@@ -161,6 +162,14 @@ if (pathToParamedicConfig || // --config
         paramedicConfig.setBrowserify(true);
     }
 
+    if (argv.cli) {
+        paramedicConfig.setCli(argv.cli);
+    }
+
+    if (argv.args) {
+        paramedicConfig.setArgs(argv.args);
+    }
+
     paramedic.run(paramedicConfig)
     .catch(function (error) {
         if (error && error.stack) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org