Updated Branches:
  refs/heads/future 1f8b525b7 -> 7d9574b25

removing unused <library-file> element code. android handler install specs done.


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/7d9574b2
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/7d9574b2
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/7d9574b2

Branch: refs/heads/future
Commit: 7d9574b256dd920265b5396f8bacdac70eaf2a93
Parents: 1f8b525
Author: Fil Maj <[email protected]>
Authored: Tue Apr 23 13:56:01 2013 -0700
Committer: Fil Maj <[email protected]>
Committed: Tue Apr 23 13:56:01 2013 -0700

----------------------------------------------------------------------
 spec/platforms/android.spec.js |   65 +++++++++++++++++++++++++++-------
 src/install.js                 |    3 +-
 src/platforms/android.js       |   22 +++--------
 src/util/plugins.js            |    1 +
 src/util/search-and-replace.js |   24 ++++++------
 5 files changed, 71 insertions(+), 44 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/7d9574b2/spec/platforms/android.spec.js
----------------------------------------------------------------------
diff --git a/spec/platforms/android.spec.js b/spec/platforms/android.spec.js
index 4cc1724..0dd06b9 100644
--- a/spec/platforms/android.spec.js
+++ b/spec/platforms/android.spec.js
@@ -6,9 +6,13 @@ var android = require('../../src/platforms/android'),
     et      = require('elementtree'),
     os      = require('osenv'),
     temp    = path.join(os.tmpdir(), 'plugman'),
+    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'),
-    android_one_project = path.join(__dirname, '..', 'projects', 
'android_one', '*');
+    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')
@@ -29,6 +33,14 @@ 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);
 }
@@ -47,12 +59,15 @@ describe('android project handler', function() {
     describe('installation', function() {
         beforeEach(function() {
             shell.mkdir('-p', temp);
-            shell.cp('-rf', android_one_project, temp);
         });
         afterEach(function() {
             shell.rm('-rf', temp);
         });
         describe('of <source-file> elements', function() {
+            beforeEach(function() {
+                shell.cp('-rf', android_one_project, temp);
+            });
+
             it('should copy stuff from one location to another by calling 
common.straightCopy', function() {
                 var source = copyArray(valid_source);
                 var s = spyOn(common, 'straightCopy');
@@ -78,17 +93,42 @@ describe('android project handler', function() {
                 }).toThrow('"' + target + '" already exists!');
             });
         });
-        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');
-        });
         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 graftXML');
+            it('should only target config.xml if that is applicable', 
function() {
+                var config = copyArray(configChanges);
+                shell.cp('-rf', android_two_project, temp);
+                var s = spyOn(xml_helpers, 
'parseElementtreeSync').andCallThrough();
+                android.install(config, dummy_id, temp, dummyplugin, {});
+                expect(s).toHaveBeenCalledWith(path.join(temp, 'res', 'xml', 
'config.xml'));
+                expect(s).not.toHaveBeenCalledWith(path.join(temp, 'res', 
'xml', 'plugins.xml'));
+            });
+            it('should only target plugins.xml if that is applicable', 
function() {
+                shell.cp('-rf', android_one_project, temp);
+                var config = copyArray(configChanges);
+                var s = spyOn(xml_helpers, 
'parseElementtreeSync').andCallThrough();
+                android.install(config, dummy_id, temp, dummyplugin, {});
+                expect(s).not.toHaveBeenCalledWith(path.join(temp, 'res', 
'xml', 'config.xml'));
+                expect(s).toHaveBeenCalledWith(path.join(temp, 'res', 'xml', 
'plugins.xml'));
+            });
+            it('should call into xml helper\'s graftXML', function() {
+                shell.cp('-rf', android_one_project, temp);
+                var config = copyArray(configChanges);
+                var s = spyOn(xml_helpers, 'graftXML').andReturn(true);
+                android.install(config, dummy_id, temp, dummyplugin, {});
+                expect(s).toHaveBeenCalled();
+            });
+        });
+        it('should call into plugins\'s searchAndReplace to interpolate 
variables properly', function() {
+            shell.cp('-rf', android_one_project, temp);
+            var config = copyArray(variable_configs);
+            var s = spyOn(plugins_module, 'searchAndReplace');
+            var vars = {
+                'API_KEY':'batcountry'
+            };
+            android.install(config, variable_id, temp, variableplugin, vars);
+            expect(s).toHaveBeenCalledWith(path.resolve(temp, 
'AndroidManifest.xml'), vars);
+            expect(s).toHaveBeenCalledWith(path.resolve(temp, 'res', 'xml', 
'plugins.xml'), vars);
         });
-        it('should interpolate variables properly');
     });
 
     describe('uninstallation', function() {
@@ -96,9 +136,6 @@ describe('android project handler', function() {
             it('should remove stuff by calling common.deleteJava');
             it('should remove empty dirs from java src dir heirarchy');
         });
-        describe('of <library-file> elements', function() {
-            it('should remove stuff using fs.unlinkSync');
-        });
         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');

http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/7d9574b2/src/install.js
----------------------------------------------------------------------
diff --git a/src/install.js b/src/install.js
index 3fcd2e4..def44b8 100644
--- a/src/install.js
+++ b/src/install.js
@@ -73,7 +73,6 @@ function runInstall(platform, project_dir, plugin_dir, 
plugins_dir, cli_variable
     // parse plugin.xml into transactions
     var txs = [];
     var sourceFiles = platformTag.findall('./source-file'),
-        libFiles = platformTag.findall('./library-file'),
         headerFiles = platformTag.findall('./header-file'),
         resourceFiles = platformTag.findall('./resource-file'),
         assets = platformTag.findall('./asset'),
@@ -83,7 +82,7 @@ function runInstall(platform, project_dir, plugin_dir, 
plugins_dir, cli_variable
 
     assets = assets.concat(plugin_et.findall('./asset'));
 
-    txs = txs.concat(sourceFiles, libFiles, headerFiles, resourceFiles, 
frameworks, configChanges, assets, pluginsPlist);
+    txs = txs.concat(sourceFiles, headerFiles, resourceFiles, frameworks, 
configChanges, assets, pluginsPlist);
 
     // pass platform-specific transactions into install
     handler.install(txs, plugin_id, project_dir, plugin_dir, 
filtered_variables, function(err) {

http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/7d9574b2/src/platforms/android.js
----------------------------------------------------------------------
diff --git a/src/platforms/android.js b/src/platforms/android.js
index 6b0ef46..e476021 100644
--- a/src/platforms/android.js
+++ b/src/platforms/android.js
@@ -22,7 +22,7 @@ var fs = require('fs')  // use existsSync in 0.6.x
    , shell = require('shelljs')
    , common = require('./common')
    , getConfigChanges = require(path.join(__dirname, '..', 'util', 
'config-changes'))
-   , searchAndReplace = require(path.join(__dirname, '..', 'util', 
'search-and-replace'))
+   , plugins_module = require(path.join(__dirname, '..', 'util', 'plugins'))
    , xml_helpers = require(path.join(__dirname, '..', 'util', 'xml-helpers'));
 
 module.exports = {
@@ -64,15 +64,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']);
@@ -83,11 +74,11 @@ function handlePlugin(action, plugin_id, txs, project_dir, 
plugin_dir, variables
 
                         if (action == 'install') {
                             if (!xml_helpers.graftXML(xmlDoc, children, 
selector)) {
-                                throw new Error('failed to add config-file 
children to "' + selector + '" to "'+ filename + '"');
+                                throw new Error('failed to add config-file 
children to "' + selector + '" to "'+ config_file + '"');
                             }
                         } else {
                             if (!xml_helpers.pruneXML(xmlDoc, children, 
selector)) {
-                                throw new Error('failed to remove config-file 
children from "' + selector + '" from "' + filename + '"');
+                                throw new Error('failed to remove config-file 
children from "' + selector + '" from "' + config_file + '"');
                             }
                         }
 
@@ -123,8 +114,8 @@ function handlePlugin(action, plugin_id, txs, project_dir, 
plugin_dir, variables
         variables['PACKAGE_NAME'] = androidPackageName(project_dir);
         var config_filename = path.resolve(project_dir, 'res', 'xml', 
'config.xml');
         if (!fs.existsSync(config_filename)) config_filename = 
path.resolve(project_dir, 'res', 'xml', 'plugins.xml');
-        searchAndReplace(config_filename, variables);
-        searchAndReplace(path.resolve(project_dir, 'AndroidManifest.xml'), 
variables);
+        plugins_module.searchAndReplace(config_filename, variables);
+        plugins_module.searchAndReplace(path.resolve(project_dir, 
'AndroidManifest.xml'), variables);
     }
 
     if (callback) callback();
@@ -134,8 +125,7 @@ function handlePlugin(action, plugin_id, txs, project_dir, 
plugin_dir, variables
 // @param string project_dir the absolute path to the directory containing the 
project
 // @return string the name of the package
 function androidPackageName(project_dir) {
-    var mDoc = xml_helpers.parseElementtreeSync(
-            path.resolve(project_dir, 'AndroidManifest.xml'));
+    var mDoc = xml_helpers.parseElementtreeSync(path.resolve(project_dir, 
'AndroidManifest.xml'));
 
     return mDoc._root.attrib['package'];
 }

http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/7d9574b2/src/util/plugins.js
----------------------------------------------------------------------
diff --git a/src/util/plugins.js b/src/util/plugins.js
index 242cb1c..045f48c 100644
--- a/src/util/plugins.js
+++ b/src/util/plugins.js
@@ -27,6 +27,7 @@ var http = require('http'),
     remote = require(path.join(__dirname, '..', '..', 'config', 'remote'));
 
 module.exports = {
+    searchAndReplace:require('./search-and-replace'),
     // Fetches plugin information from remote server
     getPluginInfo:function(plugin_name, callback) {
         var responded = false;

http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/7d9574b2/src/util/search-and-replace.js
----------------------------------------------------------------------
diff --git a/src/util/search-and-replace.js b/src/util/search-and-replace.js
index dc1f931..39bd9c3 100644
--- a/src/util/search-and-replace.js
+++ b/src/util/search-and-replace.js
@@ -22,16 +22,16 @@ var glob = require('glob'),
     fs = require('fs');
 
 module.exports = function searchAndReplace(srcGlob, variables) {
-  var files = glob.sync(srcGlob);
-  for (var i in files) {
-    var file = files[i];
-    if (fs.lstatSync(file).isFile()) {
-      var contents = fs.readFileSync(file, "utf-8");
-      for (var key in variables) {
-          var regExp = new RegExp("\\$" + key, "g");
-          contents = contents.replace(regExp, variables[key]);
-      }
-      fs.writeFileSync(file, contents);
+    var files = glob.sync(srcGlob);
+    for (var i in files) {
+        var file = files[i];
+        if (fs.lstatSync(file).isFile()) {
+            var contents = fs.readFileSync(file, "utf-8");
+            for (var key in variables) {
+                var regExp = new RegExp("\\$" + key, "g");
+                contents = contents.replace(regExp, variables[key]);
+            }
+            fs.writeFileSync(file, contents);
+        }
     }
-  }
-}
\ No newline at end of file
+}

Reply via email to