Files
taimed/node_modules/grunt-newer/test/integration/tasks/index.js
2025-07-24 17:21:45 +08:00

77 lines
1.8 KiB
JavaScript

var assert = require('assert');
var fs = require('fs');
/**
* Create a clone of the object with just src and dest properties.
* @param {Object} obj Source object.
* @return {Object} Pruned clone.
*/
function prune(obj) {
return {
src: obj.src,
dest: obj.dest
};
}
/**
* Remove files config objects with no src files.
* @param {Array} files Array of files config objects.
* @return {Array} Filtered array of files config objects.
*/
function filter(files) {
return files.map(prune).filter(function(obj) {
return obj.src && obj.src.length > 0;
});
}
/** @param {Object} grunt Grunt. */
module.exports = function(grunt) {
grunt.registerMultiTask('assert', function(name, target) {
var config = grunt.config([name, target]);
var expected = filter(grunt.task.normalizeMultiTaskFiles(config, target));
var log = this.data.getLog();
if (expected.length === 0) {
assert.equal(log.length, 0, 'Expected no log entries, got ' + log.length);
} else {
assert.equal(log.length, 1, 'Expected one log entry, got ' + log.length);
var actual = log[0];
assert.deepEqual(actual, expected);
log.length = 0;
}
});
grunt.registerMultiTask('log', function() {
var files = filter(this.files);
if (files.length > 0) {
this.data.getLog().push(files);
}
// create all dest files
files.forEach(function(obj) {
if (obj.dest) {
grunt.file.write(obj.dest, '');
}
});
});
grunt.registerTask('wait', function(delay) {
setTimeout(this.async(), delay);
});
grunt.registerMultiTask('modified', function() {
this.filesSrc.forEach(function(filepath) {
var now = new Date();
fs.utimesSync(filepath, now, now);
grunt.verbose.writeln('Updating mtime for file: ' + filepath, now);
});
});
};