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 2013/03/04 20:32:51 UTC
[71/91] [abbrv] git commit: Adding tests for BlackBerry 10 and fixed
some errors up
Adding tests for BlackBerry 10 and fixed some errors up
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/b45b3dd3
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/b45b3dd3
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/b45b3dd3
Branch: refs/heads/master
Commit: b45b3dd3d7e9f8c1dab2344d67f6d055b32d2e96
Parents: 396989a
Author: Tim Kim <ti...@adobe.com>
Authored: Thu Jan 31 12:47:27 2013 -0800
Committer: Tim Kim <ti...@adobe.com>
Committed: Thu Jan 31 12:47:27 2013 -0800
----------------------------------------------------------------------
platforms/bb10.js | 14 +++
test/android-one-install.js | 1 -
test/bb10-install.js | 80 +++++++++++++++++++
test/projects/BlackBerry10/www/config.xml | 97 +++++++++++++++++++++++
test/projects/BlackBerry10/www/plugins.xml | 35 ++++++++
5 files changed, 226 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/b45b3dd3/platforms/bb10.js
----------------------------------------------------------------------
diff --git a/platforms/bb10.js b/platforms/bb10.js
index 8d32bbc..81cc551 100644
--- a/platforms/bb10.js
+++ b/platforms/bb10.js
@@ -20,6 +20,7 @@ exports.handlePlugin = function (action, project_dir, plugin_dir, plugin_et) {
, sourceFiles = platformTag.findall('./source-file')
, libFiles = platformTag.findall('./library-file')
, configChanges = getConfigChanges(platformTag);
+
// find which config-files we're interested in
Object.keys(configChanges).forEach(function (configFile) {
if (!fs.existsSync(path.resolve(project_dir, configFile))) {
@@ -27,6 +28,13 @@ exports.handlePlugin = function (action, project_dir, plugin_dir, plugin_et) {
}
});
+ // collision detection
+ if(action == "install" && pluginInstalled(plugin_et, project_dir)) {
+ throw "Plugin "+plugin_id+" already installed"
+ } else if(action == "uninstall" && !pluginInstalled(plugin_et, project_dir)) {
+ throw "Plugin "+plugin_id+" not installed"
+ }
+
// move asset files
assets.forEach(function (asset) {
var srcPath = path.resolve(
@@ -141,3 +149,9 @@ function srcPath(pluginPath, filename) {
}
}
+function pluginInstalled(plugin_et, project_dir) {
+ var config_tag = plugin_et.find('./platform[@name="BlackBerry10"]/config-file[@target="config.xml"]/feature')
+ var plugin_name = config_tag.attrib.id;
+ return (fs.readFileSync(path.resolve(project_dir, 'config.xml'), 'utf8')
+ .match(new RegExp(plugin_name, "g")) != null);
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/b45b3dd3/test/android-one-install.js
----------------------------------------------------------------------
diff --git a/test/android-one-install.js b/test/android-one-install.js
index 59bee17..ed417c0 100644
--- a/test/android-one-install.js
+++ b/test/android-one-install.js
@@ -52,7 +52,6 @@ exports['should install webless plugin'] = function (test) {
exports['should move the js file'] = function (test) {
var jsPath = path.join(test_dir, 'projects', 'android_one', 'assets', 'www', 'childbrowser.js');
-
android.handlePlugin('install', test_project_dir, test_plugin_dir, plugin_et);
fs.stat(jsPath, function(err, stats) {
test.ok(!err);
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/b45b3dd3/test/bb10-install.js
----------------------------------------------------------------------
diff --git a/test/bb10-install.js b/test/bb10-install.js
new file mode 100644
index 0000000..cf48fe9
--- /dev/null
+++ b/test/bb10-install.js
@@ -0,0 +1,80 @@
+var fs = require('fs')
+ , path = require('path')
+ , shell = require('shelljs')
+ , et = require('elementtree')
+ , osenv = require('osenv')
+ , bb10 = require(path.join(__dirname, '..', 'platforms', 'bb10'))
+ , test_dir = path.join(osenv.tmpdir(), 'test_plugman')
+ , test_project_dir = path.join(test_dir, 'projects', 'BlackBerry10', 'www')
+ , test_plugin_dir = path.join(test_dir, 'plugins', 'cordova.echo')
+ , xml_path = path.join(test_dir, 'plugins', 'cordova.echo', 'plugin.xml')
+ , xml_text, plugin_et
+ , srcDir = path.resolve(test_project_dir, 'ext-qnx/cordova.echo');
+
+exports.setUp = function(callback) {
+ shell.mkdir('-p', test_dir);
+
+ // copy the bb10 test project to a temp directory
+ shell.cp('-r', path.join(__dirname, 'projects'), test_dir);
+
+ // copy the bb10 test plugin to a temp directory
+ shell.cp('-r', path.join(__dirname, 'plugins'), test_dir);
+
+ // parse the plugin.xml into an elementtree object
+ xml_text = fs.readFileSync(xml_path, 'utf-8')
+ plugin_et = new et.ElementTree(et.XML(xml_text));
+
+ callback();
+}
+
+exports.tearDown = function(callback) {
+ // remove the temp files (projects and plugins)
+ console.log(fs.readdirSync(test_dir));
+ shell.rm('-rf', test_dir);
+ //console.log(fs.readdirSync(test_dir));
+ callback();
+}
+
+exports['should move the source files'] = function (test) {
+ // run the platform-specific function
+ bb10.handlePlugin('install', test_project_dir, test_plugin_dir, plugin_et);
+
+ test.ok(fs.existsSync(srcDir + '/client.js'));
+ test.ok(fs.existsSync(srcDir + '/index.js'));
+ test.ok(fs.existsSync(srcDir + '/manifest.json'));
+ test.ok(fs.existsSync(srcDir + '/device/echoJnext.so'));
+ test.ok(fs.existsSync(srcDir + '/simulator/echoJnext.so'));
+ test.done();
+}
+/*
+exports['should edit config.xml'] = function (test) {
+ // setting up WebNotification (with config.xml)
+ var dummy_plugin_dir = path.join(test_dir, 'plugins', 'WebNotifications')
+ var dummy_xml_path = path.join(test_dir, 'plugins', 'WebNotifications', 'plugin.xml')
+
+ // overriding some params
+ var project_dir = path.join(test_dir, 'projects', 'ios-config-xml')
+ var dummy_plugin_et = new et.ElementTree(et.XML(fs.readFileSync(dummy_xml_path, 'utf-8')));
+
+ // run the platform-specific function
+ ios.handlePlugin('install', project_dir, dummy_plugin_dir, dummy_plugin_et);
+
+ var configXmlPath = path.join(project_dir, 'SampleApp', 'config.xml');
+ var pluginsTxt = fs.readFileSync(configXmlPath, 'utf-8'),
+ pluginsDoc = new et.ElementTree(et.XML(pluginsTxt)),
+ expected = 'plugins/plugin[@name="WebNotifications"]' +
+ '[@value="WebNotifications"]';
+
+ test.ok(pluginsDoc.find(expected));
+
+ test.done();
+}
+*/
+exports['should not install a plugin that is already installed'] = function (test) {
+ bb10.handlePlugin('install', test_project_dir, test_plugin_dir, plugin_et);
+
+ test.throws(function(){bb10.handlePlugin('install', test_project_dir, test_plugin_dir, plugin_et); },
+ /already installed/
+ );
+ test.done();
+}
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/b45b3dd3/test/projects/BlackBerry10/www/config.xml
----------------------------------------------------------------------
diff --git a/test/projects/BlackBerry10/www/config.xml b/test/projects/BlackBerry10/www/config.xml
new file mode 100644
index 0000000..6b132c2
--- /dev/null
+++ b/test/projects/BlackBerry10/www/config.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+-->
+<!--
+ Widget Configuration Reference:
+ http://docs.blackberry.com/en/developers/deliverables/15274/
+-->
+
+<widget xmlns="http://www.w3.org/ns/widgets"
+ xmlns:rim="http://www.blackberry.com/ns/widgets"
+ version="1.0.0.0" id="cordovaExample">
+
+ <name>cordovaExample</name>
+
+ <author>Your Name Here</author>
+
+ <description>
+ A sample Apache Cordova application that responds to the deviceready event.
+ </description>
+
+ <license href="http://opensource.org/licenses/alphabetical">
+ </license>
+
+ <!-- Cordova API -->
+ <feature id="blackberry.system" required="true" version="1.0.0.0" />
+ <feature id="org.apache.cordova" required="true" version="1.0.0" />
+ <feature id="blackberry.find" required="true" version="1.0.0.0" />
+ <feature id="blackberry.identity" required="true" version="1.0.0.0" />
+ <feature id="blackberry.identity.phone" required="true" version="1.0.0.0" />
+ <feature id="blackberry.pim.Address" required="true" version="1.0.0.0" />
+ <feature id="blackberry.pim.Contact" required="true" version="1.0.0.0" />
+ <feature id="blackberry.io.file" required="true" version="1.0.0.0" />
+ <feature id="blackberry.utils" required="true" version="1.0.0.0" />
+ <feature id="blackberry.io.dir" required="true" version="1.0.0.0" />
+ <feature id="blackberry.app" required="true" version="1.0.0.0" />
+ <feature id="blackberry.app.event" required="true" version="1.0.0.0" />
+ <feature id="blackberry.system.event" required="true" version="1.0.0.0"/>
+ <feature id="blackberry.widgetcache" required="true" version="1.0.0.0"/>
+ <feature id="blackberry.media.camera" />
+ <feature id="blackberry.ui.dialog" />
+ <feature id="blackberry.connection" />
+ <feature id="blackberry.bbm.platform" />
+ <feature id="blackberry.invoke.card" />
+ <feature id="blackberry.pim.contacts" />
+ <feature id="blackberry.ui.contextmenu" />
+ <feature id="blackberry.io.filetransfer" />
+ <feature id="blackberry.io" />
+ <feature id="blackberry.invoke" />
+ <feature id="blackberry.invoked" />
+ <feature id="blackberry.push" />
+ <feature id="blackberry.media.microphone" required="true" version="1.0.0.0"/>
+
+ <!-- Cordova API -->
+ <access subdomains="true" uri="file:///store/home" />
+ <access subdomains="true" uri="file:///SDCard" />
+
+ <!-- Expose access to all URIs, including the file and http protocols -->
+ <access subdomains="true" uri="*" />
+
+
+ <icon rim:hover="false" src="res/icon/blackberry/icon-80.png" />
+ <icon rim:hover="true" src="res/icon/blackberry/icon-80.png" />
+
+ <rim:loadingScreen backgroundColor="#CFCFCF"
+ foregroundImage="res/screen/blackberry/screen-225.png"
+ onFirstLaunch="true">
+ <rim:transitionEffect type="fadeOut" />
+ </rim:loadingScreen>
+
+ <content src="index.html" />
+
+ <rim:permissions>
+ <rim:permit>use_camera</rim:permit>
+ <rim:permit>read_device_identifying_information</rim:permit>
+ <rim:permit>access_shared</rim:permit>
+ <rim:permit>read_geolocation</rim:permit>
+ <rim:permit>record_audio</rim:permit>
+ <rim:permit>access_pimdomain_contacts</rim:permit>
+ </rim:permissions>
+
+</widget>
http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/b45b3dd3/test/projects/BlackBerry10/www/plugins.xml
----------------------------------------------------------------------
diff --git a/test/projects/BlackBerry10/www/plugins.xml b/test/projects/BlackBerry10/www/plugins.xml
new file mode 100644
index 0000000..3d41236
--- /dev/null
+++ b/test/projects/BlackBerry10/www/plugins.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+-->
+<plugins>
+ <plugin name="App" value="org.apache.cordova.app.App"/>
+ <plugin name="Device" value="org.apache.cordova.device.Device"/>
+ <plugin name="Camera" value="org.apache.cordova.camera.Camera"/>
+ <plugin name="NetworkStatus" value="org.apache.cordova.network.Network"/>
+ <plugin name="Notification" value="org.apache.cordova.notification.Notification"/>
+ <plugin name="Accelerometer" value="org.apache.cordova.accelerometer.Accelerometer"/>
+ <plugin name="Geolocation" value="org.apache.cordova.geolocation.Geolocation"/>
+ <plugin name="File" value="org.apache.cordova.file.FileManager"/>
+ <plugin name="FileTransfer" value="org.apache.cordova.http.FileTransfer"/>
+ <plugin name="Contacts" value="org.apache.cordova.pim.Contact"/>
+ <plugin name="Capture" value="org.apache.cordova.capture.MediaCapture"/>
+ <plugin name="Battery" value="org.apache.cordova.battery.Battery"/>
+ <plugin name="Media" value="org.apache.cordova.media.Media"/>
+ <plugin name="Globalization" value="org.apache.cordova.globalization.Globalization"/>
+</plugins>