From 50aa17d9011669c82b54c8dcc734a38b756dcbb1 Mon Sep 17 00:00:00 2001 From: Ran Ding Date: Tue, 11 Nov 2014 11:35:25 +1100 Subject: [PATCH 1/2] Fix problem prefixBase option adds prefix to absolute paths incorrectly --- lib/globule.js | 4 +++- test/globule_test.js | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/globule.js b/lib/globule.js index 5a3eeac..6bbcafc 100644 --- a/lib/globule.js +++ b/lib/globule.js @@ -89,8 +89,10 @@ globule.find = function() { }); // If srcBase and prefixBase were specified, prefix srcBase to matched paths. if (srcBase && options.prefixBase) { + var srcBaseAbsolute = path.resolve(process.cwd(), srcBase); + matches = matches.map(function(filepath) { - return path.join(srcBase, filepath); + return (filepath.indexOf(srcBaseAbsolute) === -1) ? path.join(srcBase, filepath) : filepath; }); } // Filter result set? diff --git a/test/globule_test.js b/test/globule_test.js index 4b921ea..bb8e1a0 100644 --- a/test/globule_test.js +++ b/test/globule_test.js @@ -303,13 +303,21 @@ exports['find'] = { test.done(); }, 'options.prefixBase': function(test) { - test.expect(2); + test.expect(3); test.deepEqual(globule.find(['**/deep*.txt'], {srcBase: 'deep', prefixBase: false}), ['deep.txt', 'deeper/deeper.txt', 'deeper/deepest/deepest.txt'], 'should not prefix srcBase to returned paths.'); test.deepEqual(globule.find(['**/deep*.txt'], {srcBase: 'deep', prefixBase: true}), ['deep/deep.txt', 'deep/deeper/deeper.txt', 'deep/deeper/deepest/deepest.txt'], 'should prefix srcBase to returned paths.'); + var dir = path.resolve(process.cwd()); + test.deepEqual(globule.find([path.join(dir, '**/deep*.txt')], {srcBase: 'deep', prefixBase: true}), + [ + path.join(dir, 'deep/deep.txt'), + path.join(dir, 'deep/deeper/deeper.txt'), + path.join(dir, 'deep/deeper/deepest/deepest.txt') + ], + 'should not prefix srcBase to absolute paths.'); test.done(); }, 'options.nonull': function(test) { From 961ca24ffab12db1077c9f403c27db0a97132cec Mon Sep 17 00:00:00 2001 From: Ran Ding Date: Tue, 11 Nov 2014 11:57:39 +1100 Subject: [PATCH 2/2] Better test case for prefix base --- test/globule_test.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/globule_test.js b/test/globule_test.js index bb8e1a0..6955d8b 100644 --- a/test/globule_test.js +++ b/test/globule_test.js @@ -310,12 +310,12 @@ exports['find'] = { test.deepEqual(globule.find(['**/deep*.txt'], {srcBase: 'deep', prefixBase: true}), ['deep/deep.txt', 'deep/deeper/deeper.txt', 'deep/deeper/deepest/deepest.txt'], 'should prefix srcBase to returned paths.'); - var dir = path.resolve(process.cwd()); - test.deepEqual(globule.find([path.join(dir, '**/deep*.txt')], {srcBase: 'deep', prefixBase: true}), + var dir = path.resolve('deep'); + test.deepEqual(globule.find([path.join(dir, '**/deep*.txt')], {srcBase: dir, prefixBase: true}), [ - path.join(dir, 'deep/deep.txt'), - path.join(dir, 'deep/deeper/deeper.txt'), - path.join(dir, 'deep/deeper/deepest/deepest.txt') + path.join(dir, 'deep.txt'), + path.join(dir, 'deeper/deeper.txt'), + path.join(dir, 'deeper/deepest/deepest.txt') ], 'should not prefix srcBase to absolute paths.'); test.done();