Revert "[CB-4270] [BlackBerry10] Remove custom emulate logic (moving to cordova-blackberry)"
This reverts commit 2782d5ece23c1536239f4c9944179926709298b2. Project: http://git-wip-us.apache.org/repos/asf/cordova-cli/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-cli/commit/4b15c456 Tree: http://git-wip-us.apache.org/repos/asf/cordova-cli/tree/4b15c456 Diff: http://git-wip-us.apache.org/repos/asf/cordova-cli/diff/4b15c456 Branch: refs/heads/plugman-registry Commit: 4b15c4565765e62798221ea4bf6a507ddcb809dc Parents: 5a40a4c Author: Fil Maj <[email protected]> Authored: Tue Jul 16 12:09:49 2013 -0700 Committer: Fil Maj <[email protected]> Committed: Tue Jul 16 12:09:49 2013 -0700 ---------------------------------------------------------------------- spec/emulate.spec.js | 21 +++++++++++++++++++++ src/emulate.js | 14 ++++++++++++++ 2 files changed, 35 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/4b15c456/spec/emulate.spec.js ---------------------------------------------------------------------- diff --git a/spec/emulate.spec.js b/spec/emulate.spec.js index 03151e3..d9f505f 100644 --- a/spec/emulate.spec.js +++ b/spec/emulate.spec.js @@ -54,6 +54,15 @@ describe('emulate command', function() { cordova.emulate(); }).toThrow('Current working directory is not a Cordova-based project.'); }); + it('should throw if no BlackBerry simulator targets exist and blackberry is to be emulated', function() { + var bb_project = path.join(project_dir, 'platforms', 'blackberry'); + spyOn(platforms.blackberry, 'parser').andReturn({ + has_simulator_target:function() { return false; } + }); + expect(function() { + cordova.emulate('blackberry'); + }).toThrow('No BlackBerry simulator targets defined. If you want to run emulate with BB10, please add a simulator target. For more information run "' + path.join(bb_project, 'cordova', 'target') + '" -h'); + }); }); describe('success', function() { @@ -65,6 +74,18 @@ describe('emulate command', function() { done(); }); }); + it('should execute a different BlackBerry-specific command to emulate blackberry', function() { + var bb_project = path.join(project_dir, 'platforms', 'blackberry'); + spyOn(platforms.blackberry, 'parser').andReturn({ + has_simulator_target:function() { return true; }, + get_simulator_targets:function() { return [{name:'fifi'}]; }, + get_cordova_config:function() { return {signing_password:'secret'}; } + }); + expect(function() { + cordova.emulate('blackberry'); + expect(exec.mostRecentCall.args[0]).toMatch(/blackberry.cordova.run" --target=fifi -k secret/gi); + }).not.toThrow(); + }); }); describe('hooks', function() { http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/4b15c456/src/emulate.js ---------------------------------------------------------------------- diff --git a/src/emulate.js b/src/emulate.js index b9cbe70..d41d01c 100644 --- a/src/emulate.js +++ b/src/emulate.js @@ -29,6 +29,20 @@ var cordova_util = require('./util'), function shell_out_to_emulate(root, platform, error_callback, done) { var cmd = '"' + path.join(root, 'platforms', platform, 'cordova', 'run') + '" --emulator'; + // TODO: inconsistent API for BB10 run command + if (platform == 'blackberry') { + var bb_project = path.join(root, 'platforms', 'blackberry') + var project = new platforms.blackberry.parser(bb_project); + if (project.has_simulator_target()) { + var bb_config = project.get_cordova_config(); + var sim = project.get_simulator_targets()[0].name; + cmd = '"' + path.join(bb_project, 'cordova', 'run') + '" --target=' + sim + ' -k ' + bb_config.signing_password; + } else { + var err = new Error('No BlackBerry simulator targets defined. If you want to run emulate with BB10, please add a simulator target. For more information run "' + path.join(bb_project, 'cordova', 'target') + '" -h'); + if (error_callback) return error_callback(err); + else throw err; + } + } events.emit('log', 'Running on emulator for platform "' + platform + '" via command "' + cmd + '" (output to follow)...'); shell.exec(cmd, {silent:true, async:true}, function(code, output) { events.emit('log', output);
