You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by an...@apache.org on 2014/04/11 21:46:30 UTC
[14/50] [abbrv] git commit: Improve dependencies tests by grouping
with beforeStart() Fix for dependency cycle / throw error.
Improve dependencies tests by grouping with beforeStart() Fix for dependency cycle / throw error.
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/f58db0a9
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/f58db0a9
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/f58db0a9
Branch: refs/heads/browserify
Commit: f58db0a998022b1da39158d4c219a419fa38e532
Parents: ae2ce7a
Author: jbondc <jb...@openmv.com>
Authored: Fri Feb 28 18:44:46 2014 -0500
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Mon Mar 10 16:29:27 2014 -0400
----------------------------------------------------------------------
spec/install.spec.js | 98 +++++++++++++++++++----------------------------
src/install.js | 6 +--
2 files changed, 43 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/f58db0a9/spec/install.spec.js
----------------------------------------------------------------------
diff --git a/spec/install.spec.js b/spec/install.spec.js
index bff78c2..5a40de3 100644
--- a/spec/install.spec.js
+++ b/spec/install.spec.js
@@ -36,7 +36,7 @@ var install = require('../src/install'),
dummy_id = 'com.phonegap.plugins.dummyplugin';
function installPromise(f) {
- f.then(function() { done = true; }, function(err) { done = err; });
+ f.then(function(res) { done = true; }, function(err) { done = err; });
}
var existsSync = fs.existsSync;
@@ -259,7 +259,7 @@ describe('install', function() {
// <engine name="mega-fun-plugin" version=">=1.0.0" scriptSrc="megaFunVersion" platform="*" />
// <engine name="mega-boring-plugin" version=">=3.0.0" scriptSrc="megaBoringVersion" platform="ios|android" />
- var plugmanVersion = require('../package.json').version;
+ var plugmanVersion = require('../package.json').version;
expect(spy.calls.length).toBe(4);
expect(spy.calls[0].args).toEqual([ '', '>=2.3.0' ]);
@@ -280,15 +280,17 @@ describe('install', function() {
});
describe('with dependencies', function() {
- it('should install any dependent plugins if missing', function() {
+ var emit;
+ beforeEach(function() {
spyOn(fs, 'existsSync').andCallFake( fake['existsSync']['noPlugins'] );
fetchSpy.andCallFake( fake['fetch']['dependencies'] );
emit = spyOn(events, 'emit');
-
exec.andCallFake(function(cmd, cb) {
cb(null, '9.0.0\n');
});
-
+ });
+
+ it('should install any dependent plugins if missing', function() {
runs(function() {
installPromise( install('android', project, plugins['A']) );
});
@@ -304,14 +306,8 @@ describe('install', function() {
]);
});
});
- it('should install any dependent plugins from registry when url is not defined', function() {
- spyOn(fs, 'existsSync').andCallFake( fake['existsSync']['noPlugins'] );
- fetchSpy.andCallFake( fake['fetch']['dependencies'] );
- emit = spyOn(events, 'emit');
- exec.andCallFake(function(cmd, cb) {
- cb(null, '9.0.0\n', '');
- });
+ it('should install any dependent plugins from registry when url is not defined', function() {
// Plugin A depends on C & D
runs(function() {
installPromise( install('android', project, plugins['A']) );
@@ -328,53 +324,39 @@ describe('install', function() {
]);;
});
});
+
+ it('should process all dependent plugins with alternate routes to the same plugin', function() {
+ // Plugin F depends on A, C, D and E
+ runs(function () {
+ installPromise(install('android', project, plugins['F']));
+ });
+ waitsFor(function () { return done; }, 'install promise never resolved', 500);
+ runs(function () {
+ var install = common.spy.getInstall(emit);
+
+ expect(install).toEqual([
+ 'Install start for "C" on android.',
+ 'Install start for "D" on android.',
+ 'Install start for "A" on android.',
+ 'Install start for "D" on android.',
+ 'Install start for "F" on android.'
+ ]);
+ });
+ });
+
+ it('should throw if there is a cyclic dependency', function() {
+ runs(function () {
+ installPromise( install('android', project, plugins['G']) );
+ });
+ waitsFor(function () { return done; }, 'install promise never resolved', 500);
+ runs(function () {
+ var install = common.spy.getInstall(emit);
+
+ expect(done.message).toEqual('Cyclic dependency from G to H');
+ });
+ });
});
- it('should process all dependent plugins with alternate routes to the same plugin', function() {
- spyOn(fs, 'existsSync').andCallFake( fake['existsSync']['noPlugins'] );
- fetchSpy.andCallFake( fake['fetch']['dependencies'] );
- emit = spyOn(events, 'emit');
- exec.andCallFake(function(cmd, cb) {
- cb(null, '9.0.0\n', '');
- });
-
- // Plugin F depends on A, C, D and E
- runs(function () {
- installPromise(install('android', project, plugins['F']));
- });
- waitsFor(function () { return done; }, 'install promise never resolved', 500);
- runs(function () {
- var install = common.spy.getInstall(emit);
-
- expect(install).toEqual([
- 'Install start for "C" on android.',
- 'Install start for "D" on android.',
- 'Install start for "A" on android.',
- 'Install start for "D" on android.',
- 'Install start for "F" on android.'
- ]);
- });
- });
- /*
- it('should throw if there is a cyclic dependency', function() {
- // TODO: group this into BeforeStart() for all dependency tests
- spyOn(fs, 'existsSync').andCallFake( fake['existsSync']['noPlugins'] );
- fetchSpy.andCallFake( fake['fetch']['dependencies'] );
- emit = spyOn(events, 'emit');
- exec.andCallFake(function(cmd, cb) {
- cb(null, '9.0.0\n', '');
- });
-
- runs(function () {
- installPromise(install('android', project, plugins['G']));
- });
- waitsFor(function () { return done; }, 'install promise never resolved', 500);
- runs(function () {
- var install = common.spy.getInstall(emit);
-
- console.log(install);
- expect(done.message).toEqual('Cyclic dependency from G to H');
- });
- });*/
+
});
xdescribe('failure', function() {
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/f58db0a9/src/install.js
----------------------------------------------------------------------
diff --git a/src/install.js b/src/install.js
index 1a82f65..3fea119 100644
--- a/src/install.js
+++ b/src/install.js
@@ -285,9 +285,9 @@ var runInstall = module.exports.runInstall = function runInstall(actions, platfo
// Check for dependencies
var dependencies = plugin_et.findall('dependency') || [];
dependencies = dependencies.concat(plugin_et.findall('./platform[@name="'+platform+'"]/dependency'));
- if(dependencies && dependencies.length)
+ if(dependencies && dependencies.length) {
return installDependencies(install, dependencies, options);
-
+ }
return Q(true);
}
).then(
@@ -304,7 +304,7 @@ var runInstall = module.exports.runInstall = function runInstall(actions, platfo
).fail(
function (error) {
events.emit('warn', "Failed to install '"+plugin_id+"':"+ error.stack);
- return Q(false);
+ throw error;
}
);
}