mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-01 15:57:48 +00:00
Add "output" and "stdout" build option unit tests.
Former-commit-id: 2adcdbff4cd1ef6319e33c69fd5ed3b07b205cfe
This commit is contained in:
19
build.js
19
build.js
@@ -15,6 +15,9 @@
|
||||
/** Shortcut used to convert array-like objects to arrays */
|
||||
var slice = [].slice;
|
||||
|
||||
/** Shorcut to the `stdout` object */
|
||||
var stdout = process.stdout;
|
||||
|
||||
/** Used to associate aliases with their real names */
|
||||
var aliasToRealMap = {
|
||||
'all': 'every',
|
||||
@@ -1282,7 +1285,7 @@
|
||||
if (!_.isEqual(exportsOptions, exportsAll) || filterType || isBackbone || isLegacy || isMobile || isStrict || isUnderscore) {
|
||||
// output debug build
|
||||
if (!outputPath && !isStdOut) {
|
||||
callback(path.join(cwd, 'lodash.custom.js'), debugSource);
|
||||
callback(debugSource, path.join(cwd, 'lodash.custom.js'));
|
||||
}
|
||||
minify(source, {
|
||||
'silent': isSilent,
|
||||
@@ -1294,9 +1297,10 @@
|
||||
}
|
||||
source = postMinify(source);
|
||||
if (isStdOut) {
|
||||
console.log(source);
|
||||
stdout.write(source);
|
||||
callback(source);
|
||||
} else {
|
||||
callback(outputPath || path.join(cwd, 'lodash.custom.min.js'), source);
|
||||
callback(source, outputPath || path.join(cwd, 'lodash.custom.min.js'));
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -1308,9 +1312,10 @@
|
||||
'onComplete': function(source) {
|
||||
source = postMinify(source);
|
||||
if (isStdOut) {
|
||||
console.log(source);
|
||||
stdout.write(source);
|
||||
callback(source);
|
||||
} else {
|
||||
callback(outputPath || path.join(cwd, 'lodash.min.js'), source);
|
||||
callback(source, outputPath || path.join(cwd, 'lodash.min.js'));
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -1325,8 +1330,8 @@
|
||||
}
|
||||
else {
|
||||
// or invoked directly
|
||||
build(process.argv, function(filepath, source) {
|
||||
fs.writeFileSync(filepath, source, 'utf8');
|
||||
build(process.argv, function(source, filepath) {
|
||||
filepath && fs.writeFileSync(filepath, source, 'utf8');
|
||||
});
|
||||
}
|
||||
}());
|
||||
|
||||
@@ -38,14 +38,14 @@
|
||||
source = source.replace(/("function")\s*==\s*(typeof define)\s*&&\s*\(?\s*("object")\s*==\s*(typeof define\.amd)\s*&&\s*(define\.amd)\s*\)?/, '$2==$1&&$4==$3&&$5');
|
||||
|
||||
// add trailing semicolon
|
||||
source = source.replace(/[\s;]*$/, ';');
|
||||
|
||||
if (source) {
|
||||
source = source.replace(/[\s;]*$/, ';');
|
||||
}
|
||||
// exit early if version snippet isn't found
|
||||
var snippet = /VERSION\s*[=:]\s*([\'"])(.*?)\1/.exec(source);
|
||||
if (!snippet) {
|
||||
return source;
|
||||
}
|
||||
|
||||
// add license
|
||||
return licenseTemplate[/call\(this\);?$/.test(source) ? 'underscore' : 'lodash']
|
||||
.replace('@VERSION', snippet[2]) + '\n;' + source;
|
||||
|
||||
@@ -454,7 +454,7 @@
|
||||
var start = _.after(2, _.once(QUnit.start));
|
||||
|
||||
asyncTest('`lodash ' + command +'`', function() {
|
||||
build(['--silent'].concat(command.split(' ')), function(filepath, source) {
|
||||
build(['--silent'].concat(command.split(' ')), function(source, filepath) {
|
||||
var basename = path.basename(filepath, '.js'),
|
||||
context = createContext(),
|
||||
methodNames = [];
|
||||
@@ -535,7 +535,7 @@
|
||||
commands.push('strict');
|
||||
}
|
||||
|
||||
build(commands, function(filepath, source) {
|
||||
build(commands, function(source, filepath) {
|
||||
var basename = path.basename(filepath, '.js'),
|
||||
context = createContext(),
|
||||
pass = !index;
|
||||
@@ -565,7 +565,7 @@
|
||||
var start = _.once(QUnit.start);
|
||||
|
||||
asyncTest('should not have deep clone', function() {
|
||||
build(['-s', 'underscore'], function(filepath, source) {
|
||||
build(['-s', 'underscore'], function(source, filepath) {
|
||||
var array = [{ 'a': 1 }],
|
||||
basename = path.basename(filepath, '.js'),
|
||||
context = createContext();
|
||||
@@ -582,12 +582,7 @@
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
QUnit.module('exports command');
|
||||
var exportsAll = [
|
||||
'amd',
|
||||
'commonjs',
|
||||
'global',
|
||||
'node'
|
||||
];
|
||||
|
||||
(function() {
|
||||
var commands = [
|
||||
'exports=amd',
|
||||
@@ -600,7 +595,7 @@
|
||||
var start = _.after(2, _.once(QUnit.start));
|
||||
|
||||
asyncTest('`lodash ' + command +'`', function() {
|
||||
build(['-s', command], function(filepath, source) {
|
||||
build(['-s', command], function(source, filepath) {
|
||||
var basename = path.basename(filepath, '.js'),
|
||||
context = createContext(),
|
||||
pass = false;
|
||||
@@ -641,4 +636,40 @@
|
||||
});
|
||||
}());
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
QUnit.module('output options');
|
||||
|
||||
(function() {
|
||||
['-o a.js', '--output a.js'].forEach(function(command, index) {
|
||||
var start = _.once(QUnit.start);
|
||||
|
||||
asyncTest('`lodash ' + command +'`', function() {
|
||||
build(['-s'].concat(command.split(' ')), function(source, filepath) {
|
||||
equal(filepath, 'a.js', command);
|
||||
start();
|
||||
});
|
||||
});
|
||||
});
|
||||
}());
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
QUnit.module('stdout options');
|
||||
|
||||
(function() {
|
||||
['-c', '--stdout'].forEach(function(command, index) {
|
||||
var descriptor = Object.getOwnPropertyDescriptor(global, 'console'),
|
||||
start = _.once(QUnit.start);
|
||||
|
||||
asyncTest('`lodash ' + command +'`', function() {
|
||||
build([command, 'exports=', 'include='], function(source, filepath) {
|
||||
equal(source, '');
|
||||
equal(arguments.length, 1);
|
||||
start();
|
||||
});
|
||||
});
|
||||
});
|
||||
}());
|
||||
|
||||
}());
|
||||
|
||||
Reference in New Issue
Block a user