diff --git a/lib/main.js b/lib/main.js index 7580f95f..8c6235be 100644 --- a/lib/main.js +++ b/lib/main.js @@ -201,7 +201,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) { @@ -215,7 +217,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) { diff --git a/test/main.js b/test/main.js index 51a7c0a9..34e27d78 100644 --- a/test/main.js +++ b/test/main.js @@ -182,30 +182,30 @@ 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(); }); }); 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(); }); 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(); }); }); @@ -213,11 +213,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(); }); }); @@ -226,9 +226,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(); }); }); @@ -247,10 +245,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(); }); });