Updated Branches: refs/heads/master 09c2537d2 -> ee696a804
ios handler spec stubs. removed library-file handling from ios handler. Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/ee696a80 Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/ee696a80 Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/ee696a80 Branch: refs/heads/master Commit: ee696a804052be43d68c8aa93b6959f7356252a3 Parents: 09c2537 Author: Fil Maj <[email protected]> Authored: Tue Apr 23 23:45:19 2013 -0700 Committer: Fil Maj <[email protected]> Committed: Tue Apr 23 23:45:19 2013 -0700 ---------------------------------------------------------------------- spec/platforms/ios.spec.js | 101 +++++++++++++++++++++++++++++++++++++++ src/platforms/ios.js | 11 +---- 2 files changed, 103 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/ee696a80/spec/platforms/ios.spec.js ---------------------------------------------------------------------- diff --git a/spec/platforms/ios.spec.js b/spec/platforms/ios.spec.js index e69de29..08c2103 100644 --- a/spec/platforms/ios.spec.js +++ b/spec/platforms/ios.spec.js @@ -0,0 +1,101 @@ +var ios = require('../../src/platforms/ios'); + +describe('ios project handler', function() { + it('should have an install function', function() { + expect(typeof ios.install).toEqual('function'); + }); + it('should have an uninstall function', function() { + expect(typeof ios.uninstall).toEqual('function'); + }); + it('should return cordova-ios project www location using www_dir', function() { + expect(ios.www_dir('/')).toEqual('/www'); + }); + + describe('installation', function() { + it('should throw if project is not an xcode project'); + it('should throw if project does not contain an appropriate PhoneGap/Cordova.plist file or config.xml file'); + it('should interpolate any variables correctly into pbx, plist and config files'); + + describe('of <source-file> elements', function() { + it('should throw if source-file src cannot be found'); + it('should throw if source-file target already exists'); + it('should use appropriate paths based on preserve-dirs attribute'); + it('should call into xcodeproj\'s addSourceFile'); + it('should cp the file to the right target location'); + }); + + describe('of <plugins-plist> elements', function() { + it('should only be used in an applicably old cordova-ios projects'); + }); + + describe('of <config-file> elements', function() { + it('should only be used in applicably new cordova-ios projects'); + it('should add a <plugin> element in applicably new cordova-ios projects with old-style plugins using only <plugins-plist> elements'); + it('should call xml_helpers\' graftXML'); + it('should write the new config file out after successfully grafting'); + }); + + describe('of <header-file> elements', function() { + it('should throw if header-file src cannot be found'); + it('should throw if header-file target already exists'); + it('should use appropriate paths based on preserve-dirs attribute'); + it('should call into xcodeproj\'s addHeaderFile'); + it('should cp the file to the right target location'); + }); + + describe('of <resource-file> elements', function() { + it('should throw if resource-file src cannot be found'); + it('should throw if resource-file target already exists'); + it('should call into xcodeproj\'s addResourceFile'); + it('should cp the file to the right target location'); + }); + + describe('of <framework> elements', function() { + it('should throw if framework src cannot be found'); + it('should call into xcodeproj\'s addFramework'); + it('should pass in whether the framework is weak or not into xcodeproj'); + }); + }); + + describe('uninstallation', function() { + it('should throw if project is not an xcode project'); + it('should throw if project does not contain an appropriate PhoneGap/Cordova.plist file or config.xml file'); + + describe('of <source-file> elements', function() { + it('should use appropriate paths based on preserve-dirs attribute'); + it('should call into xcodeproj\'s removeSourceFile'); + it('should rm the file from the right target location'); + }); + + describe('of <plugins-plist> elements', function() { + it('should only be used in an applicably old cordova-ios project'); + }); + + describe('of <config-file> elements', function() { + it('should only be used in applicably new cordova-ios projects'); + it('should remove any applicable <plugin> elements in applicably new cordova-ios projects with old-style plugins using only <plugins-plist> elements'); + it('should call xml_helpers\' pruneXML'); + it('should write the new config file out after successfully pruning'); + }); + + describe('of <asset> elements', function() { + it('should call rm on specified asset'); + it('should call rm on the www/plugins/<plugin_id> folder'); + }); + + describe('of <header-file> elements', function() { + it('should use appropriate paths based on preserve-dirs attribute'); + it('should call into xcodeproj\'s removeHeaderFile'); + it('should rm the file from the right target location'); + }); + + describe('of <resource-file> elements', function() { + it('should call into xcodeproj\'s removeResourceFile'); + it('should rm the file from the right target location'); + }); + + describe('of <framework> elements', function() { + it('should call into xcodeproj\'s removeFramework'); + }); + }); +}); http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/ee696a80/src/platforms/ios.js ---------------------------------------------------------------------- diff --git a/src/platforms/ios.js b/src/platforms/ios.js index 62de7d0..9268fb1 100644 --- a/src/platforms/ios.js +++ b/src/platforms/ios.js @@ -106,21 +106,13 @@ function handlePlugin(action, plugin_id, txs, project_dir, plugin_dir, variables shell.mkdir('-p', targetDir); shell.cp(srcFile, destFile); } else { + // TODO: doesnt preserve-dirs affect what the originally-added path to xcodeproj (see above) affect how we should call remove too? xcodeproj.removeSourceFile(path.join('Plugins', path.basename(src))); shell.rm('-rf', destFile); // TODO: is this right, should we check if dir is empty? shell.rm('-rf', targetDir); } 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 'plugins-plist': // Only handle this if the config file is cordova/phonegap plist. if (path.extname(config_file) == '.plist') { @@ -208,6 +200,7 @@ function handlePlugin(action, plugin_id, txs, project_dir, plugin_dir, variables shell.mkdir('-p', targetDir); shell.cp(srcFile, destFile); } else { + // TODO: doesnt preserve-dirs affect what the originally-added path to xcodeproj (see above) affect how we should call remove too? xcodeproj.removeHeaderFile(path.join('Plugins', path.basename(src))); shell.rm('-rf', destFile); // TODO: again.. is this right? same as source-file
