Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions lib/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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) {
Expand Down
44 changes: 20 additions & 24 deletions test/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,42 +182,42 @@ 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();
});
});

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();
});
});
Expand All @@ -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();
});
});
Expand All @@ -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();
});
});
Expand Down