Skip to content

Commit d5cccf6

Browse files
committed
Updating file.expandMapping to return a more explicit array of file objects.
* Instead of {dest1: src1, dest2: src2, …} it returns [{dest: dest1, src: src1}, {dest: dest2, src: src2}, …] which is the format the files object is normalized to inside multi tasks
1 parent e573e99 commit d5cccf6

File tree

2 files changed

+25
-22
lines changed

2 files changed

+25
-22
lines changed

lib/grunt/file.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ file.expandMapping = function(patterns, destBase, options) {
172172
return path.join(destBase, destPath);
173173
}
174174
});
175-
var files = {};
175+
var files = [];
176176
// Find all files matching pattern, using passed-in options.
177177
file.expand(options, patterns).forEach(function(src) {
178178
// Flatten if specified.
@@ -185,7 +185,10 @@ file.expandMapping = function(patterns, destBase, options) {
185185
dest = dest.replace(pathSeparatorRe, '/');
186186
src = src.replace(pathSeparatorRe, '/');
187187
// Map correct src path to dest path.
188-
files[dest] = src;
188+
files.push({
189+
src: src,
190+
dest: dest,
191+
});
189192
});
190193
return files;
191194
};

test/grunt/file_test.js

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -243,11 +243,11 @@ exports['file.expandMapping'] = {
243243
test.expect(2);
244244

245245
var actual = grunt.file.expandMapping(['expand/**/*.txt'], 'dest');
246-
var expected = {
247-
'dest/expand/deep/deep.txt': 'expand/deep/deep.txt',
248-
'dest/expand/deep/deeper/deeper.txt': 'expand/deep/deeper/deeper.txt',
249-
'dest/expand/deep/deeper/deepest/deepest.txt': 'expand/deep/deeper/deepest/deepest.txt',
250-
};
246+
var expected = [
247+
{dest: 'dest/expand/deep/deep.txt', src: 'expand/deep/deep.txt'},
248+
{dest: 'dest/expand/deep/deeper/deeper.txt', src: 'expand/deep/deeper/deeper.txt'},
249+
{dest: 'dest/expand/deep/deeper/deepest/deepest.txt', src: 'expand/deep/deeper/deepest/deepest.txt'},
250+
];
251251
test.deepEqual(actual, expected, 'basic src-dest options');
252252

253253
actual = grunt.file.expandMapping(['expand/**/*.txt'], 'dest/');
@@ -258,22 +258,22 @@ exports['file.expandMapping'] = {
258258
'flatten': function(test) {
259259
test.expect(1);
260260
var actual = grunt.file.expandMapping(['expand/**/*.txt'], 'dest', {flatten: true});
261-
var expected = {
262-
'dest/deep.txt': 'expand/deep/deep.txt',
263-
'dest/deeper.txt': 'expand/deep/deeper/deeper.txt',
264-
'dest/deepest.txt': 'expand/deep/deeper/deepest/deepest.txt',
265-
};
261+
var expected = [
262+
{dest: 'dest/deep.txt', src: 'expand/deep/deep.txt'},
263+
{dest: 'dest/deeper.txt', src: 'expand/deep/deeper/deeper.txt'},
264+
{dest: 'dest/deepest.txt', src: 'expand/deep/deeper/deepest/deepest.txt'},
265+
];
266266
test.deepEqual(actual, expected, 'dest paths should be flattened pre-destBase+destPath join');
267267
test.done();
268268
},
269269
'cwd': function(test) {
270270
test.expect(1);
271271
var actual = grunt.file.expandMapping(['**/*.txt'], 'dest', {cwd: 'expand'});
272-
var expected = {
273-
'dest/deep/deep.txt': 'expand/deep/deep.txt',
274-
'dest/deep/deeper/deeper.txt': 'expand/deep/deeper/deeper.txt',
275-
'dest/deep/deeper/deepest/deepest.txt': 'expand/deep/deeper/deepest/deepest.txt',
276-
};
272+
var expected = [
273+
{dest: 'dest/deep/deep.txt', src: 'expand/deep/deep.txt'},
274+
{dest: 'dest/deep/deeper/deeper.txt', src: 'expand/deep/deeper/deeper.txt'},
275+
{dest: 'dest/deep/deeper/deepest/deepest.txt', src: 'expand/deep/deeper/deepest/deepest.txt'},
276+
];
277277
test.deepEqual(actual, expected, 'cwd should be stripped from front of destPath, pre-destBase+destPath join');
278278
test.done();
279279
},
@@ -286,11 +286,11 @@ exports['file.expandMapping'] = {
286286
return path.join(destBase, options.cwd, 'o-m-g', destPath);
287287
}
288288
});
289-
var expected = {
290-
'dest/expand/o-m-g/deep.txt': 'expand/deep/deep.txt',
291-
'dest/expand/o-m-g/deeper.txt': 'expand/deep/deeper/deeper.txt',
292-
'dest/expand/o-m-g/deepest.txt': 'expand/deep/deeper/deepest/deepest.txt',
293-
};
289+
var expected = [
290+
{dest: 'dest/expand/o-m-g/deep.txt', src: 'expand/deep/deep.txt'},
291+
{dest: 'dest/expand/o-m-g/deeper.txt', src: 'expand/deep/deeper/deeper.txt'},
292+
{dest: 'dest/expand/o-m-g/deepest.txt', src: 'expand/deep/deeper/deepest/deepest.txt'},
293+
];
294294
test.deepEqual(actual, expected, 'custom rename function should be used to build dest, post-flatten');
295295
test.done();
296296
},

0 commit comments

Comments
 (0)