You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by lo...@apache.org on 2013/05/07 17:18:52 UTC
[15/30] git commit: blackberry handler specs.
blackberry handler specs.
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/09c2537d
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/09c2537d
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/09c2537d
Branch: refs/heads/future
Commit: 09c2537d27a194720efd4154bd9c1b82da3963dd
Parents: 202d49d
Author: Fil Maj <ma...@gmail.com>
Authored: Tue Apr 23 17:05:53 2013 -0700
Committer: Fil Maj <ma...@gmail.com>
Committed: Tue Apr 23 17:05:53 2013 -0700
----------------------------------------------------------------------
spec/platforms/android.spec.js | 1 -
spec/platforms/blackberry.spec.js | 163 +++++++++++++++++++++++++----
spec/plugins/DummyPlugin/plugin.xml | 2 +-
spec/plugins/FaultyPlugin/plugin.xml | 10 ++
src/platforms/blackberry.js | 15 +--
5 files changed, 155 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/09c2537d/spec/platforms/android.spec.js
----------------------------------------------------------------------
diff --git a/spec/platforms/android.spec.js b/spec/platforms/android.spec.js
index a009908..277147a 100644
--- a/spec/platforms/android.spec.js
+++ b/spec/platforms/android.spec.js
@@ -23,7 +23,6 @@ var xml_path = path.join(dummyplugin, 'plugin.xml')
var platformTag = plugin_et.find('./platform[@name="android"]');
var dummy_id = plugin_et._root.attrib['id'];
var valid_source = platformTag.findall('./source-file'),
- libFiles = platformTag.findall('./library-file'),
assets = plugin_et.findall('./asset'),
configChanges = platformTag.findall('./config-file');
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/09c2537d/spec/platforms/blackberry.spec.js
----------------------------------------------------------------------
diff --git a/spec/platforms/blackberry.spec.js b/spec/platforms/blackberry.spec.js
index defddda..a06c2b7 100644
--- a/spec/platforms/blackberry.spec.js
+++ b/spec/platforms/blackberry.spec.js
@@ -1,4 +1,40 @@
-var blackberry = require('../../src/platforms/blackberry');
+var blackberry = require('../../src/platforms/blackberry'),
+ 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'),
+ blackberry_project = path.join(__dirname, '..', 'projects', 'blackberry', '*');
+
+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="blackberry"]');
+var dummy_id = plugin_et._root.attrib['id'];
+var valid_source = platformTag.findall('./source-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="blackberry"]');
+var invalid_source = platformTag.findall('./source-file');
+var faulty_id = plugin_et._root.attrib['id'];
+
+function copyArray(arr) {
+ return Array.prototype.slice.call(arr, 0);
+}
describe('blackberry project handler', function() {
it('should have an install function', function() {
@@ -12,39 +48,122 @@ describe('blackberry project handler', function() {
});
describe('installation', function() {
- describe('of <source-file> elements', function() {
- it('should copy stuff from one location to another by calling common.straightCopy');
- it('should throw if source file cannot be found');
- it('should throw if target file already exists');
+ beforeEach(function() {
+ shell.mkdir('-p', temp);
+ shell.cp('-rf', blackberry_project, temp);
});
- describe('of <library-file> elements', function() {
- it('should copy stuff from one location to another by calling common.straightCopy');
- it('should throw if source file cannot be found');
- it('should throw if target file already exists');
+ afterEach(function() {
+ shell.rm('-rf', temp);
+ });
+ describe('of <source-file> elements', function() {
+ it('should copy stuff from one location to another by calling common.straightCopy', function() {
+ var source = copyArray(valid_source);
+ var s = spyOn(common, 'straightCopy');
+ blackberry.install(source, dummy_id, temp, dummyplugin, {});
+ expect(s).toHaveBeenCalledWith(dummyplugin, 'src/blackberry/client.js', temp, 'ext-qnx/cordova.echo/client.js');
+ expect(s).toHaveBeenCalledWith(dummyplugin, 'src/blackberry/index.js', temp, 'ext-qnx/cordova.echo/index.js');
+ expect(s).toHaveBeenCalledWith(dummyplugin, 'src/blackberry/manifest.json', temp, 'ext-qnx/cordova.echo/manifest.json');
+ });
+ it('should throw if source file cannot be found', function() {
+ var source = copyArray(invalid_source);
+ expect(function() {
+ blackberry.install(source, faulty_id, temp, faultyplugin, {});
+ }).toThrow('"' + path.resolve(faultyplugin, 'src/blackberry/device/echoJnext.so') + '" not found!');
+ });
+ it('should throw if target file already exists', function() {
+ // write out a file
+ var target = path.resolve(temp, 'ext-qnx/cordova.echo');
+ shell.mkdir('-p', target);
+ target = path.join(target, 'client.js');
+ fs.writeFileSync(target, 'some bs', 'utf-8');
+
+ var source = copyArray(valid_source);
+ expect(function() {
+ blackberry.install(source, dummy_id, temp, dummyplugin, {});
+ }).toThrow('"' + target + '" already exists!');
+ });
});
describe('of <config-file> elements', function() {
- it('should only target config.xml if that is applicable');
- it('should call into xml helper\'s graftXML');
+ it('should target config.xml', function() {
+ var config = copyArray(configChanges);
+ var s = spyOn(xml_helpers, 'parseElementtreeSync').andCallThrough();
+ blackberry.install(config, dummy_id, temp, dummyplugin, {});
+ expect(s).toHaveBeenCalledWith(path.join(temp, 'www', 'config.xml'));
+ });
+ it('should call into xml helper\'s graftXML', function() {
+ shell.cp('-rf', blackberry_project, temp);
+ var config = copyArray(configChanges);
+ var s = spyOn(xml_helpers, 'graftXML').andReturn(true);
+ blackberry.install(config, dummy_id, temp, dummyplugin, {});
+ expect(s).toHaveBeenCalled();
+ });
});
- it('should interpolate variables properly');
});
describe('uninstallation', function() {
- describe('of <source-file> elements', function() {
- it('should remove stuff by calling common.deleteJava');
- it('should remove empty dirs from java src dir heirarchy');
+ beforeEach(function() {
+ shell.mkdir('-p', temp);
+ shell.mkdir('-p', plugins_dir);
+ shell.cp('-rf', blackberry_project, temp);
+ shell.cp('-rf', dummyplugin, plugins_dir);
+ });
+ afterEach(function() {
+ shell.rm('-rf', temp);
});
- describe('of <library-file> elements', function() {
- it('should remove stuff using fs.unlinkSync');
+ describe('of <source-file> elements', function() {
+ it('should remove stuff by calling common.deleteJava', function(done) {
+ var s = spyOn(common, 'deleteJava');
+ install('blackberry', temp, 'DummyPlugin', plugins_dir, {}, function() {
+ var source = copyArray(valid_source);
+ blackberry.uninstall(source, dummy_id, temp, path.join(plugins_dir, 'DummyPlugin'));
+ expect(s).toHaveBeenCalledWith(temp, 'ext-qnx/cordova.echo/client.js');
+ expect(s).toHaveBeenCalledWith(temp, 'ext-qnx/cordova.echo/index.js');
+ expect(s).toHaveBeenCalledWith(temp, 'ext-qnx/cordova.echo/manifest.json');
+ done();
+ });
+ });
});
describe('of <config-file> elements', function() {
- it('should only target config.xml if that is applicable');
- it('should only target plugins.xml if that is applicable');
- it('should call into xml helper\'s pruneXML');
+ it('should target config.xml', function(done) {
+ var config = copyArray(configChanges);
+ var s = spyOn(xml_helpers, 'parseElementtreeSync').andCallThrough();
+ install('blackberry', temp, 'DummyPlugin', plugins_dir, {}, function() {
+ var config = copyArray(configChanges);
+ blackberry.uninstall(config, dummy_id, temp, path.join(plugins_dir, 'DummyPlugin'));
+ expect(s).toHaveBeenCalledWith(path.join(temp, 'www', 'config.xml'));
+ done();
+ });
+ });
+ it('should call into xml helper\'s pruneXML', function(done) {
+ var config = copyArray(configChanges);
+ install('blackberry', temp, 'DummyPlugin', plugins_dir, {}, function() {
+ var s = spyOn(xml_helpers, 'pruneXML').andReturn(true);
+ blackberry.uninstall(config, dummy_id, temp, path.join(plugins_dir, 'DummyPlugin'));
+ expect(s).toHaveBeenCalled();
+ done();
+ });
+ });
});
describe('of <asset> elements', function() {
- it('should remove www\'s plugins <plugin-id> directory');
- it('should remove stuff specified by the element');
+ it('should remove www\'s plugins/<plugin-id> directory', function(done) {
+ var as = copyArray(assets);
+ install('blackberry', temp, 'DummyPlugin', plugins_dir, {}, function() {
+ var s = spyOn(shell, 'rm');
+ blackberry.uninstall(as, dummy_id, temp, path.join(plugins_dir, 'DummyPlugin'));
+ expect(s).toHaveBeenCalledWith('-rf', path.join(temp, 'www', 'plugins', dummy_id));
+ done();
+ });
+ });
+ it('should remove stuff specified by the element', function(done) {
+ var as = copyArray(assets);
+ install('blackberry', temp, 'DummyPlugin', plugins_dir, {}, function() {
+ var s = spyOn(shell, 'rm');
+ blackberry.uninstall(as, dummy_id, temp, path.join(plugins_dir, 'DummyPlugin'));
+ expect(s).toHaveBeenCalledWith('-rf', path.join(temp, 'www', 'dummyplugin.js'));
+ expect(s).toHaveBeenCalledWith('-rf', path.join(temp, 'www', 'dummyplugin'));
+ done();
+ });
+ });
});
});
});
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/09c2537d/spec/plugins/DummyPlugin/plugin.xml
----------------------------------------------------------------------
diff --git a/spec/plugins/DummyPlugin/plugin.xml b/spec/plugins/DummyPlugin/plugin.xml
index ddb1113..e21ed40 100644
--- a/spec/plugins/DummyPlugin/plugin.xml
+++ b/spec/plugins/DummyPlugin/plugin.xml
@@ -59,7 +59,7 @@
<!-- blackberry -->
<platform name="blackberry">
- <config-file target="config.xml" parent="/widget">
+ <config-file target="www/config.xml" parent="/widget">
<feature id="dummyPlugin" required="true" version="1.0.0.0"/>
</config-file>
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/09c2537d/spec/plugins/FaultyPlugin/plugin.xml
----------------------------------------------------------------------
diff --git a/spec/plugins/FaultyPlugin/plugin.xml b/spec/plugins/FaultyPlugin/plugin.xml
index d7e21e9..278c89d 100644
--- a/spec/plugins/FaultyPlugin/plugin.xml
+++ b/spec/plugins/FaultyPlugin/plugin.xml
@@ -71,4 +71,14 @@
<source-file src="src/ios/FaultyPluginCommand.m" />
</platform>
+ <platform name="blackberry">
+ <config-file target="config.xml" parent="/widget">
+ <feature id="cordova.echo" required="true" version="1.0.0.0"/>
+ </config-file>
+
+ <source-file src="src/blackberry/client.js" target-dir="ext-qnx/cordova.echo" />
+ <!-- these dont exist -->
+ <source-file src="src/blackberry/device/echoJnext.so" target-dir="ext-qnx/cordova.echo/device" />
+ <source-file src="src/blackberry/simulator/echoJnext.so" target-dir="ext-qnx/cordova.echo/simulator" />
+ </platform>
</plugin>
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/09c2537d/spec/plugins/FaultyPlugin/src/blackberry/client.js
----------------------------------------------------------------------
diff --git a/spec/plugins/FaultyPlugin/src/blackberry/client.js b/spec/plugins/FaultyPlugin/src/blackberry/client.js
new file mode 100644
index 0000000..e69de29
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/09c2537d/src/platforms/blackberry.js
----------------------------------------------------------------------
diff --git a/src/platforms/blackberry.js b/src/platforms/blackberry.js
index c558190..029378a 100644
--- a/src/platforms/blackberry.js
+++ b/src/platforms/blackberry.js
@@ -22,7 +22,7 @@ var fs = require('fs') // use existsSync in 0.6.x
, shell = require('shelljs')
, et = require('elementtree')
, getConfigChanges = require('../util/config-changes')
- , sourceDir = 'src'
+ , common = require('./common')
, xml_helpers = require(path.join(__dirname, '..', 'util', 'xml-helpers'));
module.exports = {
@@ -52,15 +52,6 @@ function handlePlugin(action, plugin_id, txs, project_dir, plugin_dir, variables
common.deleteJava(project_dir, destFile);
}
break;
- case 'library-file':
- var destFile = path.join(mod.attrib['target-dir'], path.basename(mod.attrib['src']));
-
- if (action == 'install') {
- common.straightCopy(plugin_dir, mod.attrib['src'], project_dir, destFile);
- } else {
- fs.unlinkSync(path.resolve(project_dir, destFile));
- }
- break;
case 'config-file':
// Only modify config files that exist.
var config_file = path.resolve(project_dir, mod.attrib['target']);
@@ -86,8 +77,8 @@ function handlePlugin(action, plugin_id, txs, project_dir, plugin_dir, variables
case 'asset':
if (action == 'uninstall') {
var target = mod.attrib.target;
- shell.rm('-rf', path.resolve(module.exports.www_dir(), target));
- shell.rm('-rf', path.resolve(module.exports.www_dir(), 'plugins', plugin_id));
+ shell.rm('-rf', path.resolve(module.exports.www_dir(project_dir), target));
+ shell.rm('-rf', path.resolve(module.exports.www_dir(project_dir), 'plugins', plugin_id));
}
break;
default: