90 lines
2.3 KiB
JavaScript
90 lines
2.3 KiB
JavaScript
/**
|
|
* @fileoverview NodeUnit test
|
|
* @copyright Bertrand Chevrier 2012
|
|
* @author Bertrand Chevrier <chevrier.bertrand@gmail.com>
|
|
* @license MIT
|
|
*
|
|
* @module test/jsdoc-plugin_test
|
|
*/
|
|
|
|
|
|
/**
|
|
* @requires grunt
|
|
*/
|
|
var grunt = require('grunt');
|
|
|
|
|
|
/**
|
|
* This function enables you to extract
|
|
* the declared arguments from a function.
|
|
* @param {Function} fn - the function to extract the arguments for
|
|
* @returns {Array} the list of arguments
|
|
* @throw {Error} in case of wrong argument given
|
|
*/
|
|
var extractArgs = function(fn){
|
|
'use strict';
|
|
|
|
if(typeof fn !== 'function'){
|
|
throw new Error('TypeError : The extractArgs function requires the fn argument to be a function!');
|
|
}
|
|
return fn.toString ().match (/function\s+\w*\s*\((.*?)\)/)[1].split (/\s*,\s*/);
|
|
};
|
|
|
|
/**
|
|
* NodeUnit group of test that check the jsdoc Grunt task.
|
|
*
|
|
* @see https://github.com/caolan/nodeunit/
|
|
*
|
|
* @class JsdocTest
|
|
*/
|
|
exports.JsdocTest = {
|
|
|
|
/**
|
|
* Set up the test by load the tasks/jsdoc-plugin module
|
|
* @memberOf JsdocTest
|
|
* @param {Function} done - to call once the setup is done.
|
|
*/
|
|
setUp: function(done) {
|
|
'use strict';
|
|
|
|
this.jsdocTask = require('../tasks/jsdoc-plugin');
|
|
done();
|
|
},
|
|
|
|
/**
|
|
* Check the task is loaded and complies with the grunt requirements.
|
|
* @memberOf JsdocTest
|
|
* @param {Object} test - the node unit test context
|
|
*/
|
|
'taskCheck' : function(test){
|
|
'use strict';
|
|
|
|
test.notStrictEqual(this.jsdocTask, undefined, 'the jsdoc task should be set up');
|
|
test.equal(typeof this.jsdocTask, 'function', 'the task must be a function');
|
|
|
|
var taskArgs = extractArgs(this.jsdocTask);
|
|
test.ok(taskArgs.length > 0 && taskArgs[0] === 'grunt', 'the task must declare the grunt context as 1st parameter');
|
|
|
|
test.done();
|
|
},
|
|
|
|
/**
|
|
* Do some check on the exec library
|
|
* @memberOf JsdocTest
|
|
* @param {Object} test - the node unit test context
|
|
*/
|
|
'execCheck' : function(test){
|
|
'use strict';
|
|
|
|
var exec = require('../tasks/lib/exec');
|
|
|
|
test.notStrictEqual(exec, undefined, 'the exec lib should be required');
|
|
test.equal(typeof exec, 'object', 'exec is an object');
|
|
|
|
test.equal(typeof exec.buildSpawned, 'function', 'exec must have a buildSpawned method');
|
|
test.equal(typeof exec.lookup, 'function', 'exec must have a lookup method');
|
|
|
|
test.done();
|
|
}
|
|
};
|