CB-11652 Update run and emulate to skip build

We need to add this conditional logic to cordova's `run` and
`emulate` methods to skip build when `--nobuild` option is
specified. CLI previously has delegated this logic to platform's
`run` method but since introducing `before_deploy` hook we call
platform's `build` and `run` separately and so we need to handle
this option in CLI


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

Branch: refs/heads/6.3.x
Commit: 9b023d1bdd4c26bb94da751d3bc270dab3ae1ceb
Parents: 647852e
Author: Vladimir Kotikov <v-vlk...@microsoft.com>
Authored: Tue Aug 2 15:08:24 2016 +0300
Committer: Vladimir Kotikov <v-vlk...@microsoft.com>
Committed: Mon Aug 8 10:46:02 2016 +0300

----------------------------------------------------------------------
 cordova-lib/spec-cordova/emulate.spec.js | 24 ++++++++++++++++++++++
 cordova-lib/spec-cordova/run.spec.js     | 25 +++++++++++++++++++++++
 cordova-lib/src/cordova/emulate.js       | 29 ++++++++++++++-------------
 cordova-lib/src/cordova/run.js           | 29 ++++++++++++++-------------
 4 files changed, 79 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/9b023d1b/cordova-lib/spec-cordova/emulate.spec.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/emulate.spec.js 
b/cordova-lib/spec-cordova/emulate.spec.js
index c04c16d..94b2ab9 100644
--- a/cordova-lib/spec-cordova/emulate.spec.js
+++ b/cordova-lib/spec-cordova/emulate.spec.js
@@ -131,6 +131,30 @@ describe('emulate command', function() {
                 }).fin(done);
             });
         });
+
+        it('should call platform\'s build method', function (done) {
+            cordova.raw.emulate({platforms: ['blackberry10']})
+            .then(function() {
+                expect(prepare_spy).toHaveBeenCalled();
+                expect(platformApi.build).toHaveBeenCalledWith({device: false, 
emulator: true});
+                
expect(platformApi.run).toHaveBeenCalledWith(jasmine.objectContaining({nobuild: 
true}));
+            }, function(err) {
+                expect(err).toBeUndefined();
+            })
+            .fin(done);
+        });
+
+        it('should not call build if --nobuild option is passed', function 
(done) {
+            cordova.raw.emulate({platforms: ['blackberry10'], options: { 
nobuild: true }})
+            .then(function() {
+                expect(prepare_spy).toHaveBeenCalled();
+                expect(platformApi.build).not.toHaveBeenCalled();
+                
expect(platformApi.run).toHaveBeenCalledWith(jasmine.objectContaining({nobuild: 
true}));
+            }, function(err) {
+                expect(err).toBeUndefined();
+            })
+            .fin(done);
+        });
     });
 
     describe('hooks', function() {

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/9b023d1b/cordova-lib/spec-cordova/run.spec.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-cordova/run.spec.js 
b/cordova-lib/spec-cordova/run.spec.js
index b1dedd3..2b09e04 100644
--- a/cordova-lib/spec-cordova/run.spec.js
+++ b/cordova-lib/spec-cordova/run.spec.js
@@ -107,6 +107,31 @@ describe('run command', function() {
                 done();
             });
         });
+
+        it('should call platform\'s build method', function (done) {
+            cordova.raw.run({platforms: ['blackberry10']})
+            .then(function() {
+                expect(prepare_spy).toHaveBeenCalled();
+                expect(platformApi.build).toHaveBeenCalledWith({});
+                
expect(platformApi.run).toHaveBeenCalledWith(jasmine.objectContaining({nobuild: 
true}));
+            }, function(err) {
+                expect(err).toBeUndefined();
+            })
+            .fin(done);
+        });
+
+        it('should not call build if --nobuild option is passed', function 
(done) {
+            cordova.raw.run({platforms: ['blackberry10'], options: { nobuild: 
true }})
+            .then(function() {
+                expect(prepare_spy).toHaveBeenCalled();
+                expect(platformApi.build).not.toHaveBeenCalled();
+                
expect(platformApi.run).toHaveBeenCalledWith(jasmine.objectContaining({nobuild: 
true}));
+            }, function(err) {
+                expect(err).toBeUndefined();
+            })
+            .fin(done);
+        });
+
         describe('run parameters should not be altered by intermediate build 
command', function() {
             var originalBuildSpy;
             beforeEach(function() {

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/9b023d1b/cordova-lib/src/cordova/emulate.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/emulate.js 
b/cordova-lib/src/cordova/emulate.js
index 642e55c..fdb0f13 100644
--- a/cordova-lib/src/cordova/emulate.js
+++ b/cordova-lib/src/cordova/emulate.js
@@ -32,6 +32,10 @@ module.exports = function emulate(options) {
         options.options.device = false;
         options.options.emulator = true;
 
+        var optsClone = _.clone(options.options);
+        // This is needed as .build modifies opts
+        optsClone.nobuild = true;
+
         var hooksRunner = new HooksRunner(projectRoot);
         return hooksRunner.fire('before_emulate', options)
         .then(function() {
@@ -42,20 +46,17 @@ module.exports = function emulate(options) {
         }).then(function() {
             // Deploy in parallel (output gets intermixed though...)
             return Q.all(options.platforms.map(function(platform) {
-                // This is needed as .build modifies opts
-                var optsClone = _.clone(options.options);
-                return platform_lib
-                    .getPlatformApi(platform)
-                    .build(options.options)
-                    .then(function() {
-                        return hooksRunner.fire('before_deploy', options);
-                    })
-                    .then(function() {
-                        optsClone.nobuild = true;
-                        return platform_lib
-                            .getPlatformApi(platform)
-                            .run(optsClone);
-                    });
+
+                var buildPromise = options.options.nobuild ? Q() :
+                    
platform_lib.getPlatformApi(platform).build(options.options);
+
+                return buildPromise
+                .then(function() {
+                    return hooksRunner.fire('before_deploy', options);
+                })
+                .then(function() {
+                    return 
platform_lib.getPlatformApi(platform).run(optsClone);
+                });
             }));
         }).then(function() {
             return hooksRunner.fire('after_emulate', options);

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/9b023d1b/cordova-lib/src/cordova/run.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/run.js b/cordova-lib/src/cordova/run.js
index 74fe8f5..34a76da 100644
--- a/cordova-lib/src/cordova/run.js
+++ b/cordova-lib/src/cordova/run.js
@@ -30,6 +30,10 @@ module.exports = function run(options) {
         var projectRoot = cordova_util.cdProjectRoot();
         options = cordova_util.preProcessOptions(options);
 
+        // This is needed as .build modifies opts
+        var optsClone = _.clone(options.options);
+        optsClone.nobuild = true;
+
         var hooksRunner = new HooksRunner(projectRoot);
         return hooksRunner.fire('before_run', options)
         .then(function() {
@@ -40,20 +44,17 @@ module.exports = function run(options) {
         }).then(function() {
             // Deploy in parallel (output gets intermixed though...)
             return Q.all(options.platforms.map(function(platform) {
-                // This is needed as .build modifies opts
-                var optsClone = _.clone(options.options);
-                return platform_lib
-                    .getPlatformApi(platform)
-                    .build(options.options)
-                    .then(function() {
-                        return hooksRunner.fire('before_deploy', options);
-                    })
-                    .then(function() {
-                        optsClone.nobuild = true;
-                        return platform_lib
-                            .getPlatformApi(platform)
-                            .run(optsClone);
-                    });
+
+                var buildPromise = options.options.nobuild ? Q() :
+                    
platform_lib.getPlatformApi(platform).build(options.options);
+
+                return buildPromise
+                .then(function() {
+                    return hooksRunner.fire('before_deploy', options);
+                })
+                .then(function() {
+                    return 
platform_lib.getPlatformApi(platform).run(optsClone);
+                });
             }));
         }).then(function() {
             return hooksRunner.fire('after_run', options);


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

Reply via email to