Return-Path: X-Original-To: apmail-cordova-commits-archive@www.apache.org Delivered-To: apmail-cordova-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 546FA11649 for ; Fri, 2 May 2014 18:32:16 +0000 (UTC) Received: (qmail 46275 invoked by uid 500); 2 May 2014 18:30:41 -0000 Delivered-To: apmail-cordova-commits-archive@cordova.apache.org Received: (qmail 44844 invoked by uid 500); 2 May 2014 18:30:04 -0000 Mailing-List: contact commits-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cordova.apache.org Delivered-To: mailing list commits@cordova.apache.org Received: (qmail 43734 invoked by uid 99); 2 May 2014 18:29:38 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 May 2014 18:29:38 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id E820945E6C; Fri, 2 May 2014 18:29:36 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: kamrik@apache.org To: commits@cordova.apache.org Date: Fri, 02 May 2014 18:29:58 -0000 Message-Id: In-Reply-To: <7fc515fdc8214ea6b8a47a40cad66e18@git.apache.org> References: <7fc515fdc8214ea6b8a47a40cad66e18@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [23/70] Split out cordova-lib: move cordova-plugman files http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/adduser.spec.js ---------------------------------------------------------------------- diff --git a/spec/adduser.spec.js b/spec/adduser.spec.js deleted file mode 100644 index 48b1281..0000000 --- a/spec/adduser.spec.js +++ /dev/null @@ -1,11 +0,0 @@ -var adduser = require('../src/adduser'), - Q = require('q'), - registry = require('../src/registry/registry'); - -describe('adduser', function() { - it('should add a user', function() { - var sAddUser = spyOn(registry, 'adduser').andReturn(Q()); - adduser(); - expect(sAddUser).toHaveBeenCalled(); - }); -}); http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/common.js ---------------------------------------------------------------------- diff --git a/spec/common.js b/spec/common.js deleted file mode 100644 index b71efbf..0000000 --- a/spec/common.js +++ /dev/null @@ -1,62 +0,0 @@ - -var plugman = require('../plugman'), - nopt = require('nopt'); - -var known_opts = { - 'verbose' : Boolean, - 'debug' : Number -}, shortHands = { 'd' : ['--debug'] }; - -var opt = nopt(known_opts, shortHands); -var mapNames = { - 'verbose' : 7, - 'info' : 6, - 'notice' : 5, - 'warn' : 4, - 'error' : 3 -} - -if(opt.verbose) - opt.debug = 7; - -if(opt.debug) { - for(var i in mapNames) { - if(mapNames[i] <= opt.debug) - plugman.on(i, console.log); - } - - if(opt.debug >= 6) - plugman.on('log', console.log); -} - -module.exports = common = { - spy: { - getInstall: function(emitSpy){ - return common.spy.startsWith(emitSpy, 'Install start'); - }, - - getDeleted: function(emitSpy){ - return common.spy.startsWith(emitSpy, 'Deleted'); - }, - - startsWith: function(emitSpy, string) - { - var match = [], i; - for(i in emitSpy.argsForCall) { - if(emitSpy.argsForCall[i][1].substr(0, string.length) === string) - match.push(emitSpy.argsForCall[i][1]); - } - return match; - }, - - contains: function(emitSpy, string) - { - var match = [], i; - for(i in emitSpy.argsForCall) { - if(emitSpy.argsForCall[i][1].indexOf(string) >= 0) - match.push(emitSpy.argsForCall[i][1]); - } - return match; - } - } -}; http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/config.spec.js ---------------------------------------------------------------------- diff --git a/spec/config.spec.js b/spec/config.spec.js deleted file mode 100644 index 65addbf..0000000 --- a/spec/config.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -var config = require('../src/config'), - Q = require('q'), - registry = require('../src/registry/registry'); - -describe('config', function() { - it('should run config', function() { - var sConfig = spyOn(registry, 'config').andReturn(Q()); - var params = ['set', 'registry', 'http://registry.cordova.io']; - config(params); - expect(sConfig).toHaveBeenCalledWith(params); - }); -}); http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/create.spec.js ---------------------------------------------------------------------- diff --git a/spec/create.spec.js b/spec/create.spec.js deleted file mode 100644 index afc034a..0000000 --- a/spec/create.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -var create = require('../src/create'), - Q = require('q'), - fs = require('fs'), - shell = require('shelljs'), - plugman = require('../plugman'); - -describe( 'create', function() { - it( 'should call create', function() { - var sCreate = spyOn( plugman, 'create' ).andReturn(Q()); - plugman.create(); - expect(sCreate).toHaveBeenCalled(); - }); -}); - -describe( 'create plugin', function() { - var done = false, - existsSync, - mkdir, - writeFileSync; - function createPromise( f ) { - f.then( function() { done = true; }, function(err) { done = err; } ); - } - beforeEach( function() { - existsSync = spyOn( fs, 'existsSync' ).andReturn( false ); - mkdir = spyOn( shell, 'mkdir' ).andReturn( true ); - writeFileSync = spyOn( fs, 'writeFileSync' ); - done = false; - }); - - it( 'should be successful', function() { - runs(function() { - createPromise( create( 'name', 'org.plugin.id', '0.0.0', '.', [] ) ); - }); - waitsFor(function() { return done; }, 'create promise never resolved', 500); - runs(function() { - expect( done ).toBe( true ); - expect( writeFileSync.calls.length ).toEqual( 2 ); - }); - }); -}); - -describe( 'create plugin in existing plugin', function() { - var done = false, - existsSync; - function createPromise( f ) { - f.then( function() { done = true; }, function(err) { done = err; } ); - } - beforeEach( function() { - existsSync = spyOn( fs, 'existsSync' ).andReturn( true ); - done = false; - }); - - it( 'should fail due to an existing plugin.xml', function() { - runs(function() { - createPromise( create() ); - }); - waitsFor(function() { return done; }, 'create promise never resolved', 500); - runs(function() { - expect(''+ done ).toContain( 'Error: plugin.xml already exists. Are you already in a plugin?' ); - }); - }); -}); http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/fetch.spec.js ---------------------------------------------------------------------- diff --git a/spec/fetch.spec.js b/spec/fetch.spec.js deleted file mode 100644 index 2a0b660..0000000 --- a/spec/fetch.spec.js +++ /dev/null @@ -1,211 +0,0 @@ -var fetch = require('../src/fetch'), - fs = require('fs'), - os = require('osenv'), - path = require('path'), - shell = require('shelljs'), - xml_helpers = require('../src/util/xml-helpers'), - metadata = require('../src/util/metadata'), - temp = path.join(os.tmpdir(), 'plugman'), - test_plugin = path.join(__dirname, 'plugins', 'ChildBrowser'), - test_plugin_with_space = path.join(__dirname, 'folder with space', 'plugins', 'ChildBrowser'), - plugins = require('../src/util/plugins'), - Q = require('q'), - registry = require('../src/registry/registry'); - -describe('fetch', function() { - function wrapper(p, done, post) { - p.then(post, function(err) { - expect(err).toBeUndefined(); - }).fin(done); - } - - describe('local plugins', function() { - var xml, rm, sym, mkdir, cp, save_metadata; - beforeEach(function() { - xml = spyOn(xml_helpers, 'parseElementtreeSync').andReturn({ - getroot:function() { return {attrib:{id:'id'}};} - }); - rm = spyOn(shell, 'rm'); - sym = spyOn(fs, 'symlinkSync'); - mkdir = spyOn(shell, 'mkdir'); - cp = spyOn(shell, 'cp'); - save_metadata = spyOn(metadata, 'save_fetch_metadata'); - }); - - it('should copy locally-available plugin to plugins directory', function(done) { - wrapper(fetch(test_plugin, temp), done, function() { - expect(cp).toHaveBeenCalledWith('-R', path.join(test_plugin, '*'), path.join(temp, 'id')); - }); - }); - it('should copy locally-available plugin to plugins directory when spaces in path', function(done) { - //XXX: added this because plugman tries to fetch from registry when plugin folder does not exist - spyOn(fs,'existsSync').andReturn(true); - wrapper(fetch(test_plugin_with_space, temp), done, function() { - expect(cp).toHaveBeenCalledWith('-R', path.join(test_plugin_with_space, '*'), path.join(temp, 'id')); - }); - }); - it('should create a symlink if used with `link` param', function(done) { - wrapper(fetch(test_plugin, temp, { link: true }), done, function() { - expect(sym).toHaveBeenCalledWith(test_plugin, path.join(temp, 'id'), 'dir'); - }); - }); - it('should fail when the expected ID doesn\'t match', function(done) { - fetch(test_plugin, temp, { expected_id: 'wrongID' }) - .then(function() { - expect('this call').toBe('fail'); - }, function(err) { - expect(''+err).toContain('Expected fetched plugin to have ID "wrongID" but got "id".'); - }).fin(done); - }); - it('should succeed when the expected ID is correct', function(done) { - wrapper(fetch(test_plugin, temp, { expected_id: 'id' }), done, function() { - expect(1).toBe(1); - }); - }); - }); - describe('git plugins', function() { - var clone, save_metadata, done, xml; - - function fetchPromise(f) { - f.then(function() { done = true; }, function(err) { done = err; }); - } - - beforeEach(function() { - clone = spyOn(plugins, 'clonePluginGitRepo').andReturn(Q('somedir')); - save_metadata = spyOn(metadata, 'save_fetch_metadata'); - done = false; - xml = spyOn(xml_helpers, 'parseElementtreeSync').andReturn({ - getroot:function() { return {attrib:{id:'id'}};} - }); - }); - it('should call clonePluginGitRepo for https:// and git:// based urls', function() { - var url = "https://github.com/bobeast/GAPlugin.git"; - runs(function() { - fetchPromise(fetch(url, temp)); - }); - waitsFor(function() { return done; }, 'fetch promise never resolved', 250); - runs(function() { - expect(done).toBe(true); - expect(clone).toHaveBeenCalledWith(url, temp, '.', undefined); - expect(save_metadata).toHaveBeenCalledWith('somedir', jasmine.any(Object)); - }); - }); - it('should call clonePluginGitRepo with subdir if applicable', function() { - var url = "https://github.com/bobeast/GAPlugin.git"; - var dir = 'fakeSubDir'; - runs(function() { - fetchPromise(fetch(url, temp, { subdir: dir })); - }); - waitsFor(function() { return done; }, 'fetch promise never resolved', 250); - runs(function() { - expect(clone).toHaveBeenCalledWith(url, temp, dir, undefined); - expect(save_metadata).toHaveBeenCalledWith('somedir', jasmine.any(Object)); - }); - }); - it('should call clonePluginGitRepo with subdir and git ref if applicable', function() { - var url = "https://github.com/bobeast/GAPlugin.git"; - var dir = 'fakeSubDir'; - var ref = 'fakeGitRef'; - runs(function() { - fetchPromise(fetch(url, temp, { subdir: dir, git_ref: ref })); - }); - waitsFor(function() { return done; }, 'fetch promise never resolved', 250); - runs(function() { - expect(clone).toHaveBeenCalledWith(url, temp, dir, ref); - expect(save_metadata).toHaveBeenCalledWith('somedir', jasmine.any(Object)); - }); - }); - it('should extract the git ref from the URL hash, if provided', function() { - var url = "https://github.com/bobeast/GAPlugin.git#fakeGitRef"; - var baseURL = "https://github.com/bobeast/GAPlugin.git"; - runs(function() { - fetchPromise(fetch(url, temp, {})); - }); - waitsFor(function() { return done; }, 'fetch promise never resolved', 250); - runs(function() { - expect(clone).toHaveBeenCalledWith(baseURL, temp, '.', 'fakeGitRef'); - expect(save_metadata).toHaveBeenCalledWith('somedir', jasmine.any(Object)); - }); - }); - it('should extract the subdir from the URL hash, if provided', function() { - var url = "https://github.com/bobeast/GAPlugin.git#:fakeSubDir"; - var baseURL = "https://github.com/bobeast/GAPlugin.git"; - runs(function() { - fetchPromise(fetch(url, temp, {})); - }); - waitsFor(function() { return done; }, 'fetch promise never resolved', 250); - runs(function() { - expect(clone).toHaveBeenCalledWith(baseURL, temp, 'fakeSubDir', undefined); - expect(save_metadata).toHaveBeenCalledWith('somedir', jasmine.any(Object)); - }); - }); - it('should extract the git ref and subdir from the URL hash, if provided', function() { - var url = "https://github.com/bobeast/GAPlugin.git#fakeGitRef:/fake/Sub/Dir/"; - var baseURL = "https://github.com/bobeast/GAPlugin.git"; - runs(function() { - fetchPromise(fetch(url, temp, {})); - }); - waitsFor(function() { return done; }, 'fetch promise never resolved', 250); - runs(function() { - expect(clone).toHaveBeenCalledWith(baseURL, temp, 'fake/Sub/Dir', 'fakeGitRef'); - expect(save_metadata).toHaveBeenCalledWith('somedir', jasmine.any(Object)); - }); - }); - it('should throw if used with url and `link` param', function() { - runs(function() { - fetch("https://github.com/bobeast/GAPlugin.git", temp, {link:true}).then(null, function(err) { done = err; }); - }); - waitsFor(function() { return done; }, 'fetch promise never resolved', 250); - runs(function() { - expect(''+done).toContain('--link is not supported for git URLs'); - }); - }); - it('should fail when the expected ID doesn\'t match', function(done) { - fetch('https://github.com/bobeast/GAPlugin.git', temp, { expected_id: 'wrongID' }) - .then(function() { - expect('this call').toBe('fail'); - }, function(err) { - expect(''+err).toContain('Expected fetched plugin to have ID "wrongID" but got "id".'); - }).fin(done); - }); - it('should succeed when the expected ID is correct', function(done) { - wrapper(fetch('https://github.com/bobeast/GAPlugin.git', temp, { expected_id: 'id' }), done, function() { - expect(1).toBe(1); - }); - }); - }); - describe('registry plugins', function() { - var pluginId = 'dummyplugin', sFetch; - var xml, rm, sym, mkdir, cp, save_metadata; - beforeEach(function() { - xml = spyOn(xml_helpers, 'parseElementtreeSync').andReturn({ - getroot:function() { return {attrib:{id:'id'}};} - }); - rm = spyOn(shell, 'rm'); - sym = spyOn(fs, 'symlinkSync'); - mkdir = spyOn(shell, 'mkdir'); - cp = spyOn(shell, 'cp'); - save_metadata = spyOn(metadata, 'save_fetch_metadata'); - sFetch = spyOn(registry, 'fetch').andReturn(Q('somedir')); - }); - - it('should get a plugin from registry and set the right client when argument is not a folder nor URL', function(done) { - wrapper(fetch(pluginId, temp, {client: 'plugman'}), done, function() { - expect(sFetch).toHaveBeenCalledWith([pluginId], 'plugman'); - }); - }); - it('should fail when the expected ID doesn\'t match', function(done) { - fetch(pluginId, temp, { expected_id: 'wrongID' }) - .then(function() { - expect('this call').toBe('fail'); - }, function(err) { - expect(''+err).toContain('Expected fetched plugin to have ID "wrongID" but got "id".'); - }).fin(done); - }); - it('should succeed when the expected ID is correct', function(done) { - wrapper(fetch(pluginId, temp, { expected_id: 'id' }), done, function() { - expect(1).toBe(1); - }); - }); - }); -}); http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/info.spec.js ---------------------------------------------------------------------- diff --git a/spec/info.spec.js b/spec/info.spec.js deleted file mode 100644 index 96256c7..0000000 --- a/spec/info.spec.js +++ /dev/null @@ -1,15 +0,0 @@ -var search = require('../src/info'), - Q = require('q'), - registry = require('../src/registry/registry'); - -describe('info', function() { - it('should show plugin info', function() { - var sSearch = spyOn(registry, 'info').andReturn(Q({ - name: 'fakePlugin', - version: '1.0.0', - engines: [{ name: 'plugman', version: '>=0.11' }] - })); - search(new Array('myplugin')); - expect(sSearch).toHaveBeenCalledWith(['myplugin']); - }); -}); http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/install.spec.js ---------------------------------------------------------------------- diff --git a/spec/install.spec.js b/spec/install.spec.js deleted file mode 100644 index 20a3d37..0000000 --- a/spec/install.spec.js +++ /dev/null @@ -1,472 +0,0 @@ -var install = require('../src/install'), - actions = require('../src/util/action-stack'), - config_changes = require('../src/util/config-changes'), - xml_helpers = require('../src/util/xml-helpers'), - events = require('../src/events'), - plugman = require('../plugman'), - platforms = require('../src/platforms/common'), - common = require('./common'), - fs = require('fs'), - os = require('os'), - path = require('path'), - shell = require('shelljs'), - child_process = require('child_process'), - semver = require('semver'), - Q = require('q'), - spec = __dirname, - done = false, - srcProject = path.join(spec, 'projects', 'android_install'), - project = path.join(os.tmpdir(), 'plugman-test', 'android_install'), - - plugins_dir = path.join(spec, 'plugins'), - plugins_install_dir = path.join(project, 'cordova', 'plugins'), - plugins = { - 'DummyPlugin' : path.join(plugins_dir, 'DummyPlugin'), - 'EnginePlugin' : path.join(plugins_dir, 'EnginePlugin'), - 'EnginePluginAndroid' : path.join(plugins_dir, 'EnginePluginAndroid'), - 'ChildBrowser' : path.join(plugins_dir, 'ChildBrowser'), - 'VariablePlugin' : path.join(plugins_dir, 'VariablePlugin'), - 'A' : path.join(plugins_dir, 'dependencies', 'A'), - 'B' : path.join(plugins_dir, 'dependencies', 'B'), - 'C' : path.join(plugins_dir, 'dependencies', 'C'), - 'F' : path.join(plugins_dir, 'dependencies', 'F'), - 'G' : path.join(plugins_dir, 'dependencies', 'G') - }, - promise, - results = {}, - dummy_id = 'com.phonegap.plugins.dummyplugin'; - -function installPromise(f) { - f.then(function(res) { done = true; }, function(err) { done = err; }); -} - -var existsSync = fs.existsSync; - -// Mocked functions for tests -var fake = { - 'existsSync' : { - 'noPlugins' : function(path){ - // fake installed plugin directories as 'not found' - if( path.slice(-5) !== '.json' && path.indexOf(plugins_install_dir) >= 0) { - return false; - } - - return existsSync(path); - } - }, - 'fetch' : { - 'dependencies' : function(id, dir) { - if(id == plugins['A']) - return Q(id); // full path to plugin - - return Q( path.join(plugins_dir, 'dependencies', id) ); - } - } -} - -describe('start', function() { - var prepare, config_queue_add, proc, actions_push, ca, emit; - - beforeEach(function() { - prepare = spyOn(plugman, 'prepare'); - config_queue_add = spyOn(config_changes, 'add_installed_plugin_to_prepare_queue'); - proc = spyOn(actions.prototype, 'process').andReturn( Q(true) ); - actions_push = spyOn(actions.prototype, 'push'); - ca = spyOn(actions.prototype, 'createAction'); - }); - it('start', function() { - shell.rm('-rf', project); - shell.cp('-R', path.join(srcProject, '*'), project); - - done = false; - promise = Q() - .then( - function(){ return install('android', project, plugins['DummyPlugin']) } - ).then( - function(){ - results['actions_callCount'] = actions_push.callCount; - results['actions_create'] = ca.argsForCall[0]; - results['config_add'] = config_queue_add.argsForCall[0]; - - return Q(); - } - ).then( - function(){ return install('android', project, plugins['EnginePlugin']) } - ).then( - function(){ - emit = spyOn(events, 'emit'); - return install('android', project, plugins['ChildBrowser']) - } - ).then( - function(){ - return install('android', project, plugins['VariablePlugin'], plugins_install_dir, { cli_variables:{API_KEY:'batman'} }) - } - ).then( - function(){ - done = true; - results['prepareCount'] = prepare.callCount; - results['emit_results'] = []; - - for(var i in emit.calls) { - if(emit.calls[i].args[0] === 'results') - results['emit_results'].push(emit.calls[i].args[1]); - } - - events.emit("verbose", "***** DONE START *****"); - } - ); - waitsFor(function() { return done; }, 'promise never resolved', 500); - }); -}); - -describe('install', function() { - var chmod, exec, proc, add_to_queue, prepare, actions_push, c_a, mkdir, cp, rm, fetchSpy, emit; - - beforeEach(function() { - prepare = spyOn(plugman, 'prepare').andReturn( Q(true) ); - - exec = spyOn(child_process, 'exec').andCallFake(function(cmd, cb) { - cb(false, '', ''); - }); - spyOn(fs, 'mkdirSync').andReturn(true); - spyOn(shell, 'mkdir').andReturn(true); - spyOn(platforms, 'copyFile').andReturn(true); - - fetchSpy = spyOn(plugman.raw, 'fetch').andReturn( Q( plugins['EnginePlugin'] ) ); - chmod = spyOn(fs, 'chmodSync').andReturn(true); - fsWrite = spyOn(fs, 'writeFileSync').andReturn(true); - cp = spyOn(shell, 'cp').andReturn(true); - rm = spyOn(shell, 'rm').andReturn(true); - add_to_queue = spyOn(config_changes, 'add_installed_plugin_to_prepare_queue'); - done = false; - }); - - describe('success', function() { - it('should call prepare after a successful install', function() { - expect(results['prepareCount']).toBe(4); - }); - - it('should emit a results event with platform-agnostic ', function() { - // ChildBrowser - expect(results['emit_results'][0]).toBe('No matter what platform you are installing to, this notice is very important.'); - }); - it('should emit a results event with platform-specific ', function() { - // ChildBrowser - expect(results['emit_results'][1]).toBe('Please make sure you read this because it is very important to complete the installation of your plugin.'); - }); - it('should interpolate variables into tags', function() { - // VariableBrowser - expect(results['emit_results'][2]).toBe('Remember that your api key is batman!'); - }); - - it('should call fetch if provided plugin cannot be resolved locally', function() { - fetchSpy.andReturn( Q( plugins['DummyPlugin'] ) ); - spyOn(fs, 'existsSync').andCallFake( fake['existsSync']['noPlugins'] ); - - runs(function() { - installPromise(install('android', project, 'CLEANYOURSHORTS' )); - }); - waitsFor(function() { return done; }, 'install promise never resolved', 200); - runs(function() { - expect(done).toBe(true); - expect(fetchSpy).toHaveBeenCalled(); - }); - }); - - it('should call the config-changes module\'s add_installed_plugin_to_prepare_queue method after processing an install', function() { - expect(results['config_add']).toEqual([plugins_install_dir, dummy_id, 'android', {}, true]); - }); - it('should queue up actions as appropriate for that plugin and call process on the action stack', - function() { - expect(results['actions_callCount']).toEqual(3); - expect(results['actions_create']).toEqual([jasmine.any(Function), [jasmine.any(Object), path.join(plugins_install_dir, dummy_id), project, dummy_id], jasmine.any(Function), [jasmine.any(Object), project, dummy_id]]); - }); - - it('should check version if plugin has engine tag', function(){ - var satisfies = spyOn(semver, 'satisfies').andReturn(true); - exec.andCallFake(function(cmd, cb) { - cb(null, '2.5.0\n'); - }); - - runs(function() { - installPromise( install('android', project, plugins['EnginePlugin']) ); - }); - waitsFor(function() { return done; }, 'install promise never resolved', 200); - runs(function() { - expect(satisfies).toHaveBeenCalledWith('2.5.0','>=2.3.0'); - }); - }); - it('should check version and munge it a little if it has "rc" in it so it plays nice with semver (introduce a dash in it)', function() { - var satisfies = spyOn(semver, 'satisfies').andReturn(true); - exec.andCallFake(function(cmd, cb) { - cb(null, '3.0.0rc1\n'); - }); - - runs(function() { - installPromise( install('android', project, plugins['EnginePlugin']) ); - }); - waitsFor(function() { return done; }, 'install promise never resolved', 200); - runs(function() { - expect(satisfies).toHaveBeenCalledWith('3.0.0-rc1','>=2.3.0'); - }); - }); - it('should check specific platform version over cordova version if specified', function() { - var spy = spyOn(semver, 'satisfies').andReturn(true); - exec.andCallFake(function(cmd, cb) { - cb(null, '3.1.0\n'); - }); - fetchSpy.andReturn( Q( plugins['EnginePluginAndroid'] ) ); - - runs(function() { - installPromise( install('android', project, plugins['EnginePluginAndroid']) ); - }); - waitsFor(function() { return done; }, 'install promise never resolved', 200); - runs(function() { - expect(spy).toHaveBeenCalledWith('3.1.0','>=3.1.0'); - }); - }); - it('should check platform sdk version if specified', function() { - var spy = spyOn(semver, 'satisfies').andReturn(true); - fetchSpy.andReturn( Q( plugins['EnginePluginAndroid'] ) ); - exec.andCallFake(function(cmd, cb) { - cb(null, '18\n'); - }); - - runs(function() { - installPromise( install('android', project, 'EnginePluginAndroid') ); - }); - waitsFor(function() { return done; }, 'install promise never resolved', 200); - runs(function() { - // - // - // - - expect(spy.calls.length).toBe(3); - expect(spy.calls[0].args).toEqual([ '18.0.0', '>=3.0.0' ]); - expect(spy.calls[1].args).toEqual([ '18.0.0', '>=3.1.0' ]); - expect(spy.calls[2].args).toEqual([ '18.0.0','>=18' ]); - }); - }); - it('should check engine versions', function() { - var spy = spyOn(semver, 'satisfies').andReturn(true); - fetchSpy.andReturn( Q( plugins['EnginePlugin'] ) ); - - runs(function() { - installPromise( install('android', project, plugins['EnginePlugin']) ); - }); - waitsFor(function() { return done; }, 'install promise never resolved', 200); - runs(function() { - // - // - // - // - - var plugmanVersion = require('../package.json').version; - - expect(spy.calls.length).toBe(4); - expect(spy.calls[0].args).toEqual([ '', '>=2.3.0' ]); - expect(spy.calls[1].args).toEqual([ plugmanVersion, '>=0.10.0' ]); - expect(spy.calls[2].args).toEqual([ '', '>=1.0.0' ]); - expect(spy.calls[3].args).toEqual([ '', '>=3.0.0' ]); - }); - }); - it('should not check custom engine version that is not supported for platform', function() { - var spy = spyOn(semver, 'satisfies').andReturn(true); - runs(function() { - installPromise( install('blackberry10', project, plugins['EnginePlugin']) ); - }); - waitsFor(function() { return done; }, 'install promise never resolved', 200); - runs(function() { - expect(spy).not.toHaveBeenCalledWith('','>=3.0.0'); - }); - }); - - describe('with dependencies', 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']) ); - }); - waitsFor(function() { return done; }, 'install promise never resolved', 200); - runs(function() { - // Look for 'Installing plugin ...' in events - 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.' - ]); - }); - }); - - 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']) ); - }); - waitsFor(function() { return done; }, 'promise never resolved', 200); - runs(function() { - // TODO: this is same test as above? Need test other dependency with url=? - 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.' - ]);; - }); - }); - - 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', 200); - 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', 200); - runs(function () { - var install = common.spy.getInstall(emit); - - expect(done.message).toEqual('Cyclic dependency from G to H'); - }); - }); - - it('install subdir relative to top level plugin if no fetch meta', function() { - runs(function () { - installPromise(install('android', project, plugins['B'])); - }); - waitsFor(function () { return done; }, 'install promise never resolved', 200); - runs(function () { - var install = common.spy.getInstall(emit); - - expect(install).toEqual([ - 'Install start for "D" on android.', - 'Install start for "E" on android.', - 'Install start for "B" on android.' - ]); - }); - }); - - it('install uses meta data (if available) of top level plugin source', function() { - // Fake metadata so plugin 'B' appears from 'meta/B' - var meta = require('../src/util/metadata'); - spyOn(meta, 'get_fetch_metadata').andCallFake(function(){ - return { - source: {type: 'dir', url: path.join(plugins['B'], '..', 'meta')} - }; - }); - - runs(function () { - installPromise(install('android', project, plugins['B'])); - }); - waitsFor(function () { return done; }, 'install promise never resolved', 200); - runs(function () { - var install = common.spy.getInstall(emit); - - expect(install).toEqual([ - 'Install start for "D" on android.', - 'Install start for "E" on android.', - 'Install start for "B" on android.' - ]); - - var copy = common.spy.startsWith(emit, "Copying from"); - expect(copy.length).toBe(3); - expect(copy[0].indexOf(path.normalize('meta/D')) > 0).toBe(true); - expect(copy[1].indexOf(path.normalize('meta/subdir/E')) > 0).toBe(true); - }); - }); - }); - - }); - - xdescribe('failure', function() { - it('should throw if platform is unrecognized', function() { - runs(function() { - installPromise( install('atari', project, 'SomePlugin') ); - }); - waitsFor(function() { return done; }, 'install promise never resolved', 200); - runs(function() { - expect(''+done).toContain('atari not supported.'); - }); - }); - it('should throw if variables are missing', function() { - runs(function() { - installPromise( install('android', project, plugins['VariablePlugin']) ); - }); - waitsFor(function(){ return done; }, 'install promise never resolved', 200); - runs(function() { - expect(''+done).toContain('Variable(s) missing: API_KEY'); - }); - }); - it('should throw if git is not found on the path and a remote url is requested', function() { - spyOn(fs, 'existsSync').andCallFake( fake['existsSync']['noPlugins'] ); - var which_spy = spyOn(shell, 'which').andReturn(null); - runs(function() { - installPromise( install('android', project, 'https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git') ); - }); - waitsFor(function(){ return done; }, 'install promise never resolved', 200); - runs(function() { - expect(''+done).toContain('"git" command line tool is not installed: make sure it is accessible on your PATH.'); - }); - }); - it('should throw if plugin version is less than the minimum requirement', function(){ - var spy = spyOn(semver, 'satisfies').andReturn(false); - exec.andCallFake(function(cmd, cb) { - cb(null, '0.0.1\n'); - }); - runs(function() { - installPromise( install('android', project, plugins['EnginePlugin']) ); - }); - waitsFor(function(){ return done; }, 'install promise never resolved', 200); - runs(function() { - expect(''+done).toContain('Plugin doesn\'t support this project\'s cordova version. cordova: 0.0.1, failed version requirement: >=2.3.0'); - }); - }); - }); - -}); - - -describe('end', function() { - - it('end', function() { - done = false; - - promise.fin(function(err){ - if(err) - events.emit('error', err); - - shell.rm('-rf', project); - done = true; - }); - - waitsFor(function() { return done; }, 'promise never resolved', 500); - }); -}); http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/owner.spec.js ---------------------------------------------------------------------- diff --git a/spec/owner.spec.js b/spec/owner.spec.js deleted file mode 100644 index 1c6bd2c..0000000 --- a/spec/owner.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -var owner = require('../src/owner'), - Q = require('q'), - registry = require('../src/registry/registry'); - -describe('owner', function() { - it('should run owner', function() { - var sOwner = spyOn(registry, 'owner').andReturn(Q()); - var params = ['add', 'anis', 'com.phonegap.plugins.dummyplugin']; - owner(params); - expect(sOwner).toHaveBeenCalledWith(params); - }); -}); http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/platform.spec.js ---------------------------------------------------------------------- diff --git a/spec/platform.spec.js b/spec/platform.spec.js deleted file mode 100644 index 4f8099c..0000000 --- a/spec/platform.spec.js +++ /dev/null @@ -1,26 +0,0 @@ -var platforms = require('../src/platforms') -var pluginTags = ["source-file", "header-file", "lib-file", "resource-file", "framework"]; - -function getTest(platformId, pluginTag) { - return function() { - it('should exist', function() { - expect(platforms[platformId][pluginTag] ).toBeDefined(); - }); - it('with an install method', function() { - expect(platforms[platformId][pluginTag].install ).toBeDefined(); - }); - it('with an uninstall method', function() { - expect(platforms[platformId][pluginTag].uninstall ).toBeDefined(); - }); - } -} - -for(var platformId in platforms) { - for(var index = 0, len = pluginTags.length; index < len; index++) { - var funk = getTest(platformId,pluginTags[index]); - describe(platformId + " should have a " + pluginTags[index] + " object", funk); - } - -} - - http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/platforms/amazon-fireos.spec.js ---------------------------------------------------------------------- diff --git a/spec/platforms/amazon-fireos.spec.js b/spec/platforms/amazon-fireos.spec.js deleted file mode 100644 index 49a8b0d..0000000 --- a/spec/platforms/amazon-fireos.spec.js +++ /dev/null @@ -1,139 +0,0 @@ -var amazon_fireos = require('../../src/platforms/amazon-fireos'), - common = require('../../src/platforms/common'), - install = require('../../src/install'), - path = require('path'), - fs = require('fs'), - shell = require('shelljs'), - et = require('elementtree'), - os = require('osenv'), - temp = path.join(os.tmpdir(), 'plugman'), - plugins_dir = path.join(temp, 'cordova', 'plugins'), - xml_helpers = require('../../src/util/xml-helpers'), - plugins_module = require('../../src/util/plugins'), - dummyplugin = path.join(__dirname, '..', 'plugins', 'DummyPlugin'), - faultyplugin = path.join(__dirname, '..', 'plugins', 'FaultyPlugin'), - variableplugin = path.join(__dirname, '..', 'plugins', 'VariablePlugin'), - amazon_fireos_one_project = path.join(__dirname, '..', 'projects', 'android_one', '*'), - amazon_fireos_two_project = path.join(__dirname, '..', 'projects', 'android_two', '*'); - -var xml_path = path.join(dummyplugin, 'plugin.xml') - , xml_text = fs.readFileSync(xml_path, 'utf-8') - , plugin_et = new et.ElementTree(et.XML(xml_text)); - -var platformTag = plugin_et.find('./platform[@name="amazon-fireos"]'); -var dummy_id = plugin_et._root.attrib['id']; - -var valid_source = platformTag.findall('./source-file'), - valid_libs = platformTag.findall('./lib-file'), - assets = plugin_et.findall('./asset'), - configChanges = platformTag.findall('./config-file'); - -xml_path = path.join(faultyplugin, 'plugin.xml') -xml_text = fs.readFileSync(xml_path, 'utf-8') -plugin_et = new et.ElementTree(et.XML(xml_text)); - -platformTag = plugin_et.find('./platform[@name="amazon-fireos"]'); -var invalid_source = platformTag.findall('./source-file'); -var faulty_id = plugin_et._root.attrib['id']; -xml_path = path.join(variableplugin, 'plugin.xml') -xml_text = fs.readFileSync(xml_path, 'utf-8') -plugin_et = new et.ElementTree(et.XML(xml_text)); -platformTag = plugin_et.find('./platform[@name="amazon-fireos"]'); - -var variable_id = plugin_et._root.attrib['id']; -var variable_configs = platformTag.findall('./config-file'); - -function copyArray(arr) { - return Array.prototype.slice.call(arr, 0); -} -/* -describe('amazon-fireos project handler', function() { - describe('www_dir method', function() { - it('should return cordova-amazon-fireos project www location using www_dir', function() { - expect(amazon_fireos.www_dir(path.sep)).toEqual(path.sep + path.join('assets', 'www')); - }); - }); - describe('package_name method', function() { - it('should return an amazon-fireos project\'s proper package name', function() { - expect(amazon_fireos.package_name(path.join(amazon_fireos_one_project, '..'))).toEqual('com.alunny.childapp'); - }); - }); - - describe('installation', function() { - beforeEach(function() { - shell.mkdir('-p', temp); - }); - afterEach(function() { - shell.rm('-rf', temp); - }); - describe('of elements', function() { - it("should copy jar files to project/libs", function () { - var s = spyOn(common, 'copyFile'); - - amazon_fireos['lib-file'].install(valid_libs[0], dummyplugin, temp); - expect(s).toHaveBeenCalledWith(dummyplugin, 'src/amazon-fireos/TestLib.jar', temp, path.join('libs', 'TestLib.jar')); - }); - }); - describe('of elements', function() { - beforeEach(function() { - shell.cp('-rf', amazon_fireos_one_project, temp); - }); - - it('should copy stuff from one location to another by calling common.copyFile', function() { - var source = copyArray(valid_source); - var s = spyOn(common, 'copyFile'); - amazon_fireos['source-file'].install(source[0], dummyplugin, temp); - expect(s).toHaveBeenCalledWith(dummyplugin, 'src/amazon-fireos/DummyPlugin.java', temp, path.join('src', 'com', 'phonegap', 'plugins', 'dummyplugin', 'DummyPlugin.java')); - }); - it('should throw if source file cannot be found', function() { - var source = copyArray(invalid_source); - expect(function() { - amazon_fireos['source-file'].install(source[0], faultyplugin, temp); - }).toThrow('"' + path.resolve(faultyplugin, 'src/amazon-fireos/NotHere.java') + '" not found!'); - }); - it('should throw if target file already exists', function() { - // write out a file - var target = path.resolve(temp, 'src/com/phonegap/plugins/dummyplugin'); - shell.mkdir('-p', target); - target = path.join(target, 'DummyPlugin.java'); - fs.writeFileSync(target, 'some bs', 'utf-8'); - - var source = copyArray(valid_source); - expect(function() { - amazon_fireos['source-file'].install(source[0], dummyplugin, temp); - }).toThrow('"' + target + '" already exists!'); - }); - }); - }); - - describe('uninstallation', function() { - beforeEach(function() { - shell.mkdir('-p', temp); - shell.mkdir('-p', plugins_dir); - shell.cp('-rf', amazon_fireos_two_project, temp); - }); - afterEach(function() { - shell.rm('-rf', temp); - }); - describe('of elements', function(done) { - it('should remove jar files', function () { - var s = spyOn(common, 'removeFile'); - amazon_fireos['lib-file'].install(valid_libs[0], dummyplugin, temp); - amazon_fireos['lib-file'].uninstall(valid_libs[0], temp, dummy_id); - expect(s).toHaveBeenCalledWith(temp, path.join('libs', 'TestLib.jar')); - }); - }); - describe('of elements', function() { - it('should remove stuff by calling common.deleteJava', function(done) { - var s = spyOn(common, 'deleteJava'); - install('amazon-fireos', temp, dummyplugin, plugins_dir, {}) - .then(function() { - var source = copyArray(valid_source); - amazon_fireos['source-file'].uninstall(source[0], temp); - expect(s).toHaveBeenCalledWith(temp, path.join('src', 'com', 'phonegap', 'plugins', 'dummyplugin', 'DummyPlugin.java')); - done(); - }); - }); - }); - }); -}); */ http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/platforms/android.spec.js ---------------------------------------------------------------------- diff --git a/spec/platforms/android.spec.js b/spec/platforms/android.spec.js deleted file mode 100644 index 57f45fe..0000000 --- a/spec/platforms/android.spec.js +++ /dev/null @@ -1,156 +0,0 @@ -var android = require('../../src/platforms/android'), - common = require('../../src/platforms/common'), - install = require('../../src/install'), - path = require('path'), - fs = require('fs'), - shell = require('shelljs'), - et = require('elementtree'), - os = require('osenv'), - temp = path.join(os.tmpdir(), 'plugman'), - plugins_dir = path.join(temp, 'cordova', 'plugins'), - xml_helpers = require('../../src/util/xml-helpers'), - plugins_module = require('../../src/util/plugins'), - dummyplugin = path.join(__dirname, '..', 'plugins', 'DummyPlugin'), - faultyplugin = path.join(__dirname, '..', 'plugins', 'FaultyPlugin'), - variableplugin = path.join(__dirname, '..', 'plugins', 'VariablePlugin'), - android_one_project = path.join(__dirname, '..', 'projects', 'android_one', '*'), - android_two_project = path.join(__dirname, '..', 'projects', 'android_two', '*'); - -var xml_path = path.join(dummyplugin, 'plugin.xml') - , xml_text = fs.readFileSync(xml_path, 'utf-8') - , plugin_et = new et.ElementTree(et.XML(xml_text)); - -var platformTag = plugin_et.find('./platform[@name="android"]'); -var dummy_id = plugin_et._root.attrib['id']; -var valid_source = platformTag.findall('./source-file'), - valid_libs = platformTag.findall('./lib-file'), - valid_resources = platformTag.findall('./resource-file'), - assets = plugin_et.findall('./asset'), - configChanges = platformTag.findall('./config-file'); - -xml_path = path.join(faultyplugin, 'plugin.xml') -xml_text = fs.readFileSync(xml_path, 'utf-8') -plugin_et = new et.ElementTree(et.XML(xml_text)); - -platformTag = plugin_et.find('./platform[@name="android"]'); -var invalid_source = platformTag.findall('./source-file'); -var faulty_id = plugin_et._root.attrib['id']; - -xml_path = path.join(variableplugin, 'plugin.xml') -xml_text = fs.readFileSync(xml_path, 'utf-8') -plugin_et = new et.ElementTree(et.XML(xml_text)); -platformTag = plugin_et.find('./platform[@name="android"]'); - -var variable_id = plugin_et._root.attrib['id']; -var variable_configs = platformTag.findall('./config-file'); - -function copyArray(arr) { - return Array.prototype.slice.call(arr, 0); -} - -describe('android project handler', function() { - describe('www_dir method', function() { - it('should return cordova-android project www location using www_dir', function() { - expect(android.www_dir(path.sep)).toEqual(path.sep + path.join('assets', 'www')); - }); - }); - describe('package_name method', function() { - it('should return an android project\'s proper package name', function() { - expect(android.package_name(path.join(android_one_project, '..'))).toEqual('com.alunny.childapp'); - }); - }); - - describe('installation', function() { - beforeEach(function() { - shell.mkdir('-p', temp); - }); - afterEach(function() { - shell.rm('-rf', temp); - }); - describe('of elements', function() { - it("should copy jar files to project/libs", function () { - var s = spyOn(common, 'copyFile'); - - android['lib-file'].install(valid_libs[0], dummyplugin, temp); - expect(s).toHaveBeenCalledWith(dummyplugin, 'src/android/TestLib.jar', temp, path.join('libs', 'TestLib.jar')); - }); - }); - describe('of elements', function() { - it("should copy files", function () { - var s = spyOn(common, 'copyFile'); - - android['resource-file'].install(valid_resources[0], dummyplugin, temp); - expect(s).toHaveBeenCalledWith(dummyplugin, 'android-resource.xml', temp, path.join('res', 'xml', 'dummy.xml')); - }); - }); - describe('of elements', function() { - beforeEach(function() { - shell.cp('-rf', android_one_project, temp); - }); - - it('should copy stuff from one location to another by calling common.copyFile', function() { - var source = copyArray(valid_source); - var s = spyOn(common, 'copyFile'); - android['source-file'].install(source[0], dummyplugin, temp); - expect(s).toHaveBeenCalledWith(dummyplugin, 'src/android/DummyPlugin.java', temp, path.join('src', 'com', 'phonegap', 'plugins', 'dummyplugin', 'DummyPlugin.java')); - }); - it('should throw if source file cannot be found', function() { - var source = copyArray(invalid_source); - expect(function() { - android['source-file'].install(source[0], faultyplugin, temp); - }).toThrow('"' + path.resolve(faultyplugin, 'src/android/NotHere.java') + '" not found!'); - }); - it('should throw if target file already exists', function() { - // write out a file - var target = path.resolve(temp, 'src/com/phonegap/plugins/dummyplugin'); - shell.mkdir('-p', target); - target = path.join(target, 'DummyPlugin.java'); - fs.writeFileSync(target, 'some bs', 'utf-8'); - - var source = copyArray(valid_source); - expect(function() { - android['source-file'].install(source[0], dummyplugin, temp); - }).toThrow('"' + target + '" already exists!'); - }); - }); - }); - - describe('uninstallation', function() { - beforeEach(function() { - shell.mkdir('-p', temp); - shell.mkdir('-p', plugins_dir); - shell.cp('-rf', android_two_project, temp); - }); - afterEach(function() { - shell.rm('-rf', temp); - }); - describe('of elements', function(done) { - it('should remove jar files', function () { - var s = spyOn(common, 'removeFile'); - android['lib-file'].install(valid_libs[0], dummyplugin, temp); - android['lib-file'].uninstall(valid_libs[0], temp, dummy_id); - expect(s).toHaveBeenCalledWith(temp, path.join('libs', 'TestLib.jar')); - }); - }); - describe('of elements', function(done) { - it('should remove files', function () { - var s = spyOn(common, 'removeFile'); - android['resource-file'].install(valid_resources[0], dummyplugin, temp); - android['resource-file'].uninstall(valid_resources[0], temp, dummy_id); - expect(s).toHaveBeenCalledWith(temp, path.join('res', 'xml', 'dummy.xml')); - }); - }); - describe('of elements', function() { - it('should remove stuff by calling common.deleteJava', function(done) { - var s = spyOn(common, 'deleteJava'); - install('android', temp, dummyplugin, plugins_dir, {}) - .then(function() { - var source = copyArray(valid_source); - android['source-file'].uninstall(source[0], temp); - expect(s).toHaveBeenCalledWith(temp, path.join('src', 'com', 'phonegap', 'plugins', 'dummyplugin', 'DummyPlugin.java')); - done(); - }); - }); - }); - }); -}); http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/platforms/blackberry10.spec.js ---------------------------------------------------------------------- diff --git a/spec/platforms/blackberry10.spec.js b/spec/platforms/blackberry10.spec.js deleted file mode 100644 index bfdf926..0000000 --- a/spec/platforms/blackberry10.spec.js +++ /dev/null @@ -1,148 +0,0 @@ -var blackberry10 = require('../../src/platforms/blackberry10'), - common = require('../../src/platforms/common'), - install = require('../../src/install'), - path = require('path'), - fs = require('fs'), - shell = require('shelljs'), - et = require('elementtree'), - os = require('osenv'), - temp = path.join(os.tmpdir(), 'plugman'), - plugins_dir = path.join(temp, 'cordova', 'plugins'), - xml_helpers = require('../../src/util/xml-helpers'), - plugins_module = require('../../src/util/plugins'), - blackberry10_project = path.join(__dirname, '..', 'projects', 'blackberry10', '*'), - plugins = { - dummy: parsePlugin(path.join(__dirname, '..', 'plugins', 'DummyPlugin')), - faulty: parsePlugin(path.join(__dirname, '..', 'plugins', 'FaultyPlugin')), - echo: parsePlugin(path.join(__dirname, '..', 'plugins', 'cordova.echo')) - }; - -function copyArray(arr) { - return Array.prototype.slice.call(arr, 0); -} - -function parsePlugin (pluginPath) { - var pluginXML = fs.readFileSync(path.join(pluginPath, "plugin.xml"), "utf-8"), - pluginEt = new et.ElementTree(et.XML(pluginXML)), - platformTag = pluginEt.find('./platform[@name="blackberry10"]'); - - return { - path: pluginPath, - id: pluginEt._root.attrib.id, - assets: pluginEt.findall('./asset'), - srcFiles: platformTag.findall('./source-file'), - configChanges: platformTag.findall('./config-file'), - libFiles: platformTag.findall('./lib-file') - }; -} - - -describe('blackberry10 project handler', function() { - describe('www_dir method', function() { - it('should return cordova-blackberry10 project www location using www_dir', function() { - expect(blackberry10.www_dir(path.sep)).toEqual(path.sep + 'www'); - }); - }); - - describe('package_name method', function() { - it('should return a blackberry10 project\'s proper package name', function() { - expect(blackberry10.package_name(path.join(blackberry10_project, '..'))).toEqual('cordovaExample'); - }); - }); - - describe('installation', function() { - beforeEach(function() { - shell.mkdir('-p', temp); - shell.cp('-rf', blackberry10_project, temp); - }); - afterEach(function() { - shell.rm('-rf', temp); - }); - describe('of elements', function() { - it("should copy so files to native/target/plugins", function () { - var plugin = plugins.echo, - libs = copyArray(plugin.libFiles), - s = spyOn(common, 'copyFile'); - - blackberry10['lib-file'].install(libs[0], plugin.path, temp); - expect(s).toHaveBeenCalledWith(plugin.path, 'src/blackberry10/native/device/echoJnext.so', temp, path.join('native', 'device', 'plugins', 'jnext', 'echoJnext.so')); - }); - }); - describe('of elements', function() { - it('should copy stuff from one location to another by calling common.copyFile', function() { - var plugin = plugins.echo, - source = copyArray(plugin.srcFiles); - s = spyOn(common, 'copyFile'); - - blackberry10['source-file'].install(source[0], plugin.path, temp, plugin.id); - expect(s).toHaveBeenCalledWith(plugin.path, 'src/blackberry10/index.js', temp, path.join('native', 'device', 'chrome', 'plugin', 'cordova.echo', 'index.js')); - expect(s).toHaveBeenCalledWith(plugin.path, 'src/blackberry10/index.js', temp, path.join('native', 'simulator', 'chrome', 'plugin', 'cordova.echo', 'index.js')); - }); - it('defaults to plugin id when dest is not present', function() { - var source = copyArray(plugins.dummy.srcFiles); - var s = spyOn(common, 'copyFile'); - blackberry10['source-file'].install(source[0], plugins.dummy.path, temp, plugins.dummy.id); - expect(s).toHaveBeenCalledWith(plugins.dummy.path, 'src/blackberry10/index.js', temp, path.join('native', 'device', 'chrome', 'plugin', plugins.dummy.id, 'index.js')); - expect(s).toHaveBeenCalledWith(plugins.dummy.path, 'src/blackberry10/index.js', temp, path.join('native', 'simulator', 'chrome', 'plugin', plugins.dummy.id, 'index.js')); - }); - it('should throw if source file cannot be found', function() { - var source = copyArray(plugins.faulty.srcFiles); - expect(function() { - blackberry10['source-file'].install(source[0], plugins.faulty.path, temp, plugins.faulty.id); - }).toThrow('"' + path.resolve(plugins.faulty.path, 'src/blackberry10/index.js') + '" not found!'); - }); - it('should throw if target file already exists', function() { - // write out a file - var target = path.resolve(temp, 'native/device/chrome/plugin/com.phonegap.plugins.dummyplugin'); - shell.mkdir('-p', target); - target = path.join(target, 'index.js'); - fs.writeFileSync(target, 'some bs', 'utf-8'); - - var source = copyArray(plugins.dummy.srcFiles); - expect(function() { - blackberry10['source-file'].install(source[0], plugins.dummy.path, temp, plugins.dummy.id); - }).toThrow('"' + target + '" already exists!'); - }); - }); - }); - - describe('uninstallation', function() { - beforeEach(function() { - shell.mkdir('-p', temp); - shell.cp('-rf', blackberry10_project, temp); - }); - afterEach(function() { - shell.rm('-rf', temp); - }); - describe('of elements', function() { - it('should remove stuff by calling common.removeFile', function() { - var s = spyOn(common, 'removeFile'), - plugin = plugins.echo; - var source = copyArray(plugin.srcFiles); - blackberry10['source-file'].install(source[0], plugin.path, temp, plugin.id); - blackberry10['source-file'].uninstall(source[0], temp, plugin.id); - expect(s).toHaveBeenCalledWith(temp, path.join('native', 'device', 'chrome', 'plugin', 'cordova.echo', 'index.js')); - expect(s).toHaveBeenCalledWith(temp, path.join('native', 'simulator', 'chrome', 'plugin', 'cordova.echo', 'index.js')); - }); - it('should remove stuff by calling common.removeFile', function() { - var s = spyOn(common, 'removeFile'), - plugin = plugins.dummy; - var source = copyArray(plugin.srcFiles); - blackberry10['source-file'].install(source[0], plugin.path, temp, plugin.id); - blackberry10['source-file'].uninstall(source[0], temp, plugin.id); - expect(s).toHaveBeenCalledWith(temp, path.join('native', 'device', 'chrome', 'plugin', plugin.id, 'index.js')); - expect(s).toHaveBeenCalledWith(temp, path.join('native', 'simulator', 'chrome', 'plugin', plugin.id, 'index.js')); - }); - }); - describe('of elements', function(done) { - it("should remove so files from www/plugins", function () { - var s = spyOn(common, 'removeFile'), - plugin = plugins.echo; - var source = copyArray(plugin.libFiles); - blackberry10['lib-file'].install(source[0], plugin.path, temp, plugin.id); - blackberry10['lib-file'].uninstall(source[0], temp, plugin.id); - expect(s).toHaveBeenCalledWith(temp, path.join('native','device','plugins','jnext','echoJnext.so')); - }); - }); - }); -}); http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/0318d8cd/spec/platforms/common.spec.js ---------------------------------------------------------------------- diff --git a/spec/platforms/common.spec.js b/spec/platforms/common.spec.js deleted file mode 100644 index dcf5f2a..0000000 --- a/spec/platforms/common.spec.js +++ /dev/null @@ -1,130 +0,0 @@ -/* - * - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ -var common = require('../../src/platforms/common') - , path = require('path') - , fs = require('fs') - , osenv = require('osenv') - , shell = require('shelljs') - , test_dir = path.join(osenv.tmpdir(), 'test_plugman') - , project_dir = path.join(test_dir, 'project') - , src = path.join(project_dir, 'src') - , dest = path.join(project_dir, 'dest') - , java_dir = path.join(src, 'one', 'two', 'three') - , java_file = path.join(java_dir, 'test.java'); - -describe('common platform handler', function() { - describe('resolveSrcPath', function() { - it('should not throw if path exists', function(){ - shell.mkdir('-p', test_dir); - var target = path.join(test_dir, 'somefile'); - fs.writeFileSync(target, '80085', 'utf-8'); - expect(function(){common.resolveSrcPath(test_dir, 'somefile')}).not.toThrow(); - shell.rm('-rf', test_dir); - }); - }); - - describe('resolveTargetPath', function() { - it('should throw if path exists', function(){ - shell.mkdir('-p', test_dir); - expect(function(){common.resolveTargetPath(test_dir)}).toThrow(); - shell.rm('-rf', test_dir); - }); - - it('should not throw if path cannot be resolved', function(){ - expect(function(){common.resolveTargetPath(test_dir, 'somefile')}).not.toThrow(); - }); - }); - - describe('copyFile', function() { - it('should throw if source path cannot be resolved', function(){ - expect(function(){common.copyFile(test_dir, src, project_dir, dest)}).toThrow(); - }); - - it('should throw if target path exists', function(){ - shell.mkdir('-p', dest); - expect(function(){common.copyFile(test_dir, src, project_dir, dest)}).toThrow(); - shell.rm('-rf', dest); - }); - - it('should call mkdir -p on target path', function(){ - shell.mkdir('-p', java_dir); - fs.writeFileSync(java_file, 'contents', 'utf-8'); - - var s = spyOn(shell, 'mkdir').andCallThrough(); - var resolvedDest = common.resolveTargetPath(project_dir, dest); - - common.copyFile(test_dir, java_file, project_dir, dest); - - expect(s).toHaveBeenCalled(); - expect(s).toHaveBeenCalledWith('-p', path.dirname(resolvedDest)); - shell.rm('-rf', project_dir); - }); - - it('should call cp source/dest paths', function(){ - shell.mkdir('-p', java_dir); - fs.writeFileSync(java_file, 'contents', 'utf-8'); - - var s = spyOn(shell, 'cp').andCallThrough(); - var resolvedDest = common.resolveTargetPath(project_dir, dest); - - common.copyFile(test_dir, java_file, project_dir, dest); - - expect(s).toHaveBeenCalled(); - expect(s).toHaveBeenCalledWith('-f', java_file, resolvedDest); - - shell.rm('-rf', project_dir); - }); - - }); - - describe('deleteJava', function() { - it('should call fs.unlinkSync on the provided paths', function(){ - shell.mkdir('-p', java_dir); - fs.writeFileSync(java_file, 'contents', 'utf-8'); - - var s = spyOn(fs, 'unlinkSync').andCallThrough(); - common.deleteJava(project_dir, java_file); - expect(s).toHaveBeenCalled(); - expect(s).toHaveBeenCalledWith(path.resolve(project_dir, java_file)); - - shell.rm('-rf', java_dir); - }); - - it('should delete empty directories after removing source code in a java src path hierarchy', function(){ - shell.mkdir('-p', java_dir); - fs.writeFileSync(java_file, 'contents', 'utf-8'); - - common.deleteJava(project_dir, java_file); - expect(fs.existsSync(java_file)).not.toBe(true); - expect(fs.existsSync(java_dir)).not.toBe(true); - expect(fs.existsSync(path.join(src,'one'))).not.toBe(true); - - shell.rm('-rf', java_dir); - }); - - it('should never delete the top-level src directory, even if all plugins added were removed', function(){ - shell.mkdir('-p', java_dir); - fs.writeFileSync(java_file, 'contents', 'utf-8'); - - common.deleteJava(project_dir, java_file); - expect(fs.existsSync(src)).toBe(true); - - shell.rm('-rf', java_dir); - }); - }); -});