Updated Branches: refs/heads/master 372b0a3a2 -> da57c83a1
merged changes to common tests and common.js Project: http://git-wip-us.apache.org/repos/asf/cordova-plugman/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugman/commit/da57c83a Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugman/tree/da57c83a Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugman/diff/da57c83a Branch: refs/heads/master Commit: da57c83a14871bd8a0ff546fe62e95f7aad20a9a Parents: 372b0a3 Author: Tim Kim <[email protected]> Authored: Wed Apr 24 15:18:16 2013 -0700 Committer: Tim Kim <[email protected]> Committed: Wed Apr 24 15:28:32 2013 -0700 ---------------------------------------------------------------------- spec/platforms/common.spec.js | 130 ++++++++++++++++++++++++++++++++---- src/platforms/common.js | 6 +- 2 files changed, 121 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/da57c83a/spec/platforms/common.spec.js ---------------------------------------------------------------------- diff --git a/spec/platforms/common.spec.js b/spec/platforms/common.spec.js index 65f8077..2f54458 100644 --- a/spec/platforms/common.spec.js +++ b/spec/platforms/common.spec.js @@ -1,26 +1,130 @@ -var common = require('../../src/platforms/common'); +/* + * + * + * 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 throw if path cannot be resolved'); - it('should not throw if path exists'); + it('should throw if path cannot be resolved', function(){ + expect(function(){common.resolveSrcPath(test_dir, 'I_dont_exist')}).toThrow(); + }); + it('should not throw if path exists', function(){ + shell.mkdir('-p', test_dir); + expect(function(){common.resolveSrcPath(test_dir)}).not.toThrow(); + shell.rm('-rf', test_dir); + }); }); describe('resolveTargetPath', function() { - it('should throw if path exists'); - it('should not throw if path cannot be resolved'); + 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)}).not.toThrow(); + }); }); - describe('copyFile', function() { - it('should throw if source path cannot be resolved'); - it('should throw if target path exists'); - it('should call mkdir -p on target path'); - it('should call cp with source/dest paths'); + 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 -f 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(java_file, resolvedDest); + + shell.rm('-rf', project_dir); + }); + }); describe('deleteJava', function() { - it('should call fs.unlinkSync on the provided paths'); - it('should delete empty directories after removing source code in a java src path heirarchy'); - it('should never delete the top-level src directory, even if all plugins added were removed'); + 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 heirarchy', 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); + }); }); }); http://git-wip-us.apache.org/repos/asf/cordova-plugman/blob/da57c83a/src/platforms/common.js ---------------------------------------------------------------------- diff --git a/src/platforms/common.js b/src/platforms/common.js index fe2bc4f..8c1897c 100644 --- a/src/platforms/common.js +++ b/src/platforms/common.js @@ -28,8 +28,10 @@ module.exports = { deleteJava:function(project_dir, destFile) { fs.unlinkSync(path.resolve(project_dir,destFile)); // check if directory is empty - var curDir = path.resolve(project_dir, path.basename(destFile)); + + var curDir = path.resolve(project_dir, path.dirname(destFile)); while(curDir !== path.resolve(project_dir, 'src')) { + //console.log('curDir ' + curDir); if(fs.readdirSync(curDir).length == 0) { fs.rmdirSync(curDir); curDir = path.resolve(curDir, '..'); @@ -37,6 +39,6 @@ module.exports = { // directory not empty...do nothing break; } - } + } } };
