mirror of
https://github.com/jsdoc/jsdoc.git
synced 2025-12-08 19:46:11 +00:00
178 lines
5.6 KiB
JavaScript
178 lines
5.6 KiB
JavaScript
var assert = require('common/assert');
|
|
|
|
var passCount = 0,
|
|
failCount = 0,
|
|
errorLog = [],
|
|
currentTestFile = '';
|
|
|
|
function test(description, f) {
|
|
try {
|
|
f();
|
|
passCount++;
|
|
}
|
|
catch(e) {
|
|
errorLog.push(description + (currentTestFile? ' ['+currentTestFile+']':'') + '\n' + (e.message||'') + '\n - Expected: ' + e.expected + '\n - Actual: ' + e.actual);
|
|
failCount++;
|
|
}
|
|
}
|
|
|
|
function testFile(filepath) {
|
|
currentTestFile = filepath;
|
|
include(filepath);
|
|
currentTestFile = '';
|
|
}
|
|
|
|
function report() {
|
|
console.log('\033[032mPASSED: ' + passCount + ' test' + (passCount == 1? '' : 's') + '.\033[0m');
|
|
if (failCount) {
|
|
console.log('\033[031mFAILED: '+ failCount + ' test' + (passCount == 1? '' : 's') + '.\033[0m');
|
|
for (var i = 0, leni = errorLog.length; i < leni; i++) {
|
|
console.log(' ' + (i+1) + '. ' + (i+1 < 10? ' ' : '') + (errorLog[i]||'') + '\n');
|
|
}
|
|
}
|
|
}
|
|
|
|
// helpers
|
|
var testhelpers = {
|
|
getDocSetFromFile: function(filename) {
|
|
var sourceCode = readFile(__dirname + '/' + filename),
|
|
testParser,
|
|
doclets;
|
|
|
|
testParser = new (require('jsdoc/src/parser')).Parser();
|
|
require('jsdoc/src/handlers').attachTo(testParser);
|
|
|
|
doclets = testParser.parse('javascript:' + sourceCode);
|
|
testhelpers.indexAll(doclets);
|
|
|
|
require('jsdoc/augment').addInherited(doclets);
|
|
|
|
// test assume borrows have not yet been resolved
|
|
// require('jsdoc/borrow').resolveBorrows(doclets);
|
|
|
|
return {
|
|
doclets: doclets,
|
|
getByLongname: function(longname) {
|
|
return doclets.filter(function(doclet) {
|
|
return (doclet.longname || doclet.name) === longname;
|
|
});
|
|
}
|
|
};
|
|
},
|
|
indexAll: function(docs) {
|
|
var index = {};
|
|
docs.forEach(function(doc) {
|
|
if (!index[doc.longname]) index[doc.longname] = [];
|
|
index[doc.longname].push(doc);
|
|
});
|
|
docs.index = index;
|
|
}
|
|
};
|
|
|
|
testFile('test/t/common/util.js');
|
|
testFile('test/t/common/dumper.js');
|
|
testFile('test/t/common/events.js');
|
|
testFile('test/t/common/query.js');
|
|
testFile('test/t/common/scanner.js');
|
|
|
|
testFile('test/t/jsdoc/opts/parser.js');
|
|
testFile('test/t/jsdoc/src/parser.js');
|
|
testFile('test/t/jsdoc/src/handlers.js');
|
|
testFile('test/t/jsdoc/name.js');
|
|
testFile('test/t/jsdoc/util/templateHelper.js');
|
|
|
|
testFile('test/t/cases/file.js');
|
|
|
|
testFile('test/t/cases/virtual.js');
|
|
|
|
testFile('test/t/cases/objectlit.js');
|
|
testFile('test/t/cases/objectlit2.js');
|
|
|
|
testFile('test/t/cases/this.js');
|
|
testFile('test/t/cases/this2.js');
|
|
testFile('test/t/cases/this3.js');
|
|
|
|
testFile('test/t/cases/this-and-objectlit.js');
|
|
|
|
testFile('test/t/cases/var.js');
|
|
|
|
testFile('test/t/cases/inner.js');
|
|
testFile('test/t/cases/innerscope.js');
|
|
testFile('test/t/cases/innerscope2.js');
|
|
|
|
testFile('test/t/cases/modules/data/mod-1.js');
|
|
testFile('test/t/cases/modules/data/mod-2.js');
|
|
|
|
testFile('test/t/cases/accesstag.js');
|
|
testFile('test/t/cases/alias.js');
|
|
testFile('test/t/cases/alias2.js');
|
|
testFile('test/t/cases/alias3.js');
|
|
testFile('test/t/cases/aliasglobal.js');
|
|
testFile('test/t/cases/also.js');
|
|
testFile('test/t/cases/augmentstag.js');
|
|
testFile('test/t/cases/authortag.js');
|
|
testFile('test/t/cases/borrowstag.js');
|
|
testFile('test/t/cases/borrowstag2.js');
|
|
testFile('test/t/cases/classtag.js');
|
|
testFile('test/t/cases/constructstag.js');
|
|
testFile('test/t/cases/constructstag2.js');
|
|
testFile('test/t/cases/constructstag3.js');
|
|
testFile('test/t/cases/constructstag4.js');
|
|
testFile('test/t/cases/constructstag5.js');
|
|
testFile('test/t/cases/constructortag.js');
|
|
testFile('test/t/cases/copyrighttag.js');
|
|
testFile('test/t/cases/defaulttag.js');
|
|
testFile('test/t/cases/deprecatedtag.js');
|
|
testFile('test/t/cases/enumtag.js');
|
|
testFile('test/t/cases/eventfirestag.js');
|
|
testFile('test/t/cases/exports.js');
|
|
testFile('test/t/cases/exportstag.js');
|
|
testFile('test/t/cases/exportstag2.js');
|
|
testFile('test/t/cases/exportstag3.js');
|
|
testFile('test/t/cases/exportstag4.js');
|
|
testFile('test/t/cases/exceptiontag.js');
|
|
testFile('test/t/cases/globaltag.js');
|
|
testFile('test/t/cases/ignoretag.js');
|
|
testFile('test/t/cases/lends.js');
|
|
testFile('test/t/cases/lends2.js');
|
|
testFile('test/t/cases/lendsglobal.js');
|
|
testFile('test/t/cases/moduleinner.js');
|
|
testFile('test/t/cases/memberoftag.js');
|
|
testFile('test/t/cases/memberoftag2.js');
|
|
testFile('test/t/cases/moduletag.js');
|
|
testFile('test/t/cases/moduletag2.js');
|
|
testFile('test/t/cases/paramtag.js');
|
|
testFile('test/t/cases/privatetag.js');
|
|
testFile('test/t/cases/quotename.js');
|
|
testFile('test/t/cases/quotename2.js');
|
|
testFile('test/t/cases/readonlytag.js');
|
|
testFile('test/t/cases/requirestag.js');
|
|
testFile('test/t/cases/returnstag.js');
|
|
testFile('test/t/cases/seetag.js');
|
|
testFile('test/t/cases/sincetag.js');
|
|
testFile('test/t/cases/starbangstar.js');
|
|
testFile('test/t/cases/thistag.js');
|
|
testFile('test/t/cases/typekind.js');
|
|
testFile('test/t/cases/typetag.js');
|
|
testFile('test/t/cases/typedeftag.js');
|
|
testFile('test/t/cases/variations.js');
|
|
testFile('test/t/cases/versiontag.js');
|
|
|
|
|
|
var os = java.lang.System.getProperty('os.name'),
|
|
isWin = !!os.startsWith('Windows');
|
|
|
|
/** Add codes to display string in color (red) on the console (if OS supports). */
|
|
function red(str) {
|
|
if (isWin) { return str; }
|
|
else { return '\033[031m' + str + '\033[0m'; }
|
|
}
|
|
|
|
/** Add codes to display string in color (red) on the console (if OS supports). */
|
|
function green(str) {
|
|
if (isWin) { return str; }
|
|
else { return '\033[032m' + str + '\033[0m'; }
|
|
}
|
|
|
|
|
|
report(); |