From 1794fbd127f98bf353676471dfe4d1aceaa16f06 Mon Sep 17 00:00:00 2001 From: abetomo Date: Tue, 25 Apr 2017 13:26:04 +0900 Subject: [PATCH 1/3] Add options and changing patterns (minimatch) The rsync command `--exclude` can remove` lib/main.js` in `*main*`. _fileCopy did not satisfy the specification, so I modified it --- lib/main.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/main.js b/lib/main.js index 9dd517dd..eb327ff1 100644 --- a/lib/main.js +++ b/lib/main.js @@ -195,7 +195,9 @@ Lambda.prototype._fileCopy = function (program, src, dest, excludeNodeModules, c })(); const pattern = '{' + excludes.map(function (str) { - return path.join(srcAbsolutePath, str); + if (str.charAt(0) == '/') + return path.join(srcAbsolutePath, str); + return str; }).join(',') + '}' fs.mkdirs(dest, function (err) { @@ -209,7 +211,7 @@ Lambda.prototype._fileCopy = function (program, src, dest, excludeNodeModules, c // include package.json unless prebuiltDirectory is set return true; } - return !minimatch(src, pattern); + return !minimatch(src, pattern, { matchBase: true }); } }; fs.copy(src, dest, options, function (err) { From f99d06e6fda5a668f580cf8d62684b4bbe82c2fb Mon Sep 17 00:00:00 2001 From: abetomo Date: Tue, 25 Apr 2017 13:30:31 +0900 Subject: [PATCH 2/3] Add that test case The rsync command `--exclude` can remove` lib/main.js` in `*main*`. --- test/main.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/main.js b/test/main.js index c2371c24..f5ae0089 100644 --- a/test/main.js +++ b/test/main.js @@ -181,7 +181,9 @@ describe('node-lambda', function () { describe('when there are excluded files', function () { beforeEach(function (done) { - program.excludeGlobs = '*.png test'; + // *main* => lib/main.js + // In case of specifying files under the directory with wildcards + program.excludeGlobs = '*.png test *main*'; done(); }); From f249f2f0624c3b1ad2f14fbd392d38c1e626662e Mon Sep 17 00:00:00 2001 From: abetomo Date: Tue, 25 Apr 2017 13:33:08 +0900 Subject: [PATCH 3/3] Modify to test single file - To make it easy to understand what file failed - Using `assert.include` --- test/main.js | 40 +++++++++++++++++----------------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/test/main.js b/test/main.js index f5ae0089..a1649c17 100644 --- a/test/main.js +++ b/test/main.js @@ -169,12 +169,12 @@ describe('node-lambda', function () { it(funcName + ' an index.js as well as other files', function (done) { lambda[funcName](program, '.', codeDirectory, true, function (err, result) { var contents = fs.readdirSync(codeDirectory); - - result = _.includes(contents, 'index.js') && - _.includes(contents, 'package.json') && - !_.includes(contents, 'node_modules'); - assert.isTrue(result); - + ['index.js', 'package.json'].forEach(function (needle) { + assert.include(contents, needle, `Target: "${needle}"`); + }); + ['node_modules'].forEach(function (needle) { + assert.notInclude(contents, needle, `Target: "${needle}"`); + }); done(); }); }); @@ -190,11 +190,9 @@ describe('node-lambda', function () { it(funcName + ' an index.js as well as other files', function (done) { lambda[funcName](program, '.', codeDirectory, true, function (err, result) { var contents = fs.readdirSync(codeDirectory); - - result = _.includes(contents, 'index.js') && - _.includes(contents, 'package.json'); - assert.isTrue(result); - + ['index.js', 'package.json'].forEach(function (needle) { + assert.include(contents, needle, `Target: "${needle}"`); + }); done(); }); }); @@ -202,11 +200,11 @@ describe('node-lambda', function () { it(funcName + ' excludes files matching excludeGlobs', function (done) { lambda[funcName](program, '.', codeDirectory, true, function (err, result) { var contents = fs.readdirSync(codeDirectory); - - result = _.includes(contents, 'node-lambda.png') && - _.includes(contents, 'test'); - assert.isFalse(result); - + ['node-lambda.png', 'test'].forEach(function (needle) { + assert.notInclude(contents, needle, `Target: "${needle}"`); + }); + contents = fs.readdirSync(codeDirectory + '/lib'); + assert.notInclude(contents, 'main.js', 'Target: "lib/main.js"'); done(); }); }); @@ -215,9 +213,7 @@ describe('node-lambda', function () { program.excludeGlobs = '*.json'; lambda[funcName](program, '.', codeDirectory, true, function(err, result) { var contents = fs.readdirSync(codeDirectory); - result = _.includes(contents, 'package.json'); - assert.isTrue(result); - + assert.include(contents, 'package.json'); done(); }); }); @@ -236,10 +232,8 @@ describe('node-lambda', function () { program.prebuiltDirectory = path; lambda[funcName](program, path, codeDirectory, true, function(err, result) { var contents = fs.readdirSync(codeDirectory); - result = !_.includes(contents, 'package.json') && - _.includes(contents, 'testa'); - assert.isTrue(result); - + assert.notInclude(contents, 'package.json', 'Target: "packages.json"'); + assert.include(contents, 'testa', 'Target: "testa"'); done(); }); });