UNPKG

nodeunit

Version:

Easy unit testing for node.js and the browser.

111 lines (101 loc) 3.53 kB
/*! * Nodeunit * Copyright (c) 2010 Caolan McMahon * MIT Licensed */ /** * Module dependencies */ var nodeunit = require('../nodeunit'), utils = require('../utils'), fs = require('fs'), path = require('path'), AssertionError = require('../assert').AssertionError; /** * Reporter info string */ exports.info = "Report tests result as HTML"; /** * Run all tests within each module, reporting the results to the command-line. * * @param {Array} files * @api public */ exports.run = function (files, options, callback) { var start = new Date().getTime(); var paths = files.map(function (p) { return path.resolve(p); }); console.log('<html>'); console.log('<head>'); console.log('<title></title>'); console.log('<style type="text/css">'); console.log('body { font: 12px Helvetica Neue }'); console.log('h2 { margin:0 ; padding:0 }'); console.log('pre { font: 11px Andale Mono; margin-left: 1em; padding-left: 1em; margin-top:0; font-size:smaller;}'); console.log('.assertion_message { margin-left: 1em; }'); console.log(' ol {' + ' list-style: none;' + ' margin-left: 1em;' + ' padding-left: 1em;' + ' text-indent: -1em;' + '}'); console.log(' ol li.pass:before { content: "\\2714 \\0020"; }'); console.log(' ol li.fail:before { content: "\\2716 \\0020"; }'); console.log('</style>'); console.log('</head>'); console.log('<body>'); nodeunit.runFiles(paths, { testspec: options.testspec, testFullSpec: options.testFullSpec, moduleStart: function (name) { console.log('<h2>' + name + '</h2>'); console.log('<ol>'); }, testDone: function (name, assertions) { if (!assertions.failures()) { console.log('<li class="pass">' + name + '</li>'); } else { console.log('<li class="fail">' + name); assertions.forEach(function (a) { if (a.failed()) { a = utils.betterErrors(a); if (a.error instanceof AssertionError && a.message) { console.log('<div class="assertion_message">' + 'Assertion Message: ' + a.message + '</div>'); } console.log('<pre>'); console.log(a.error.stack); console.log('</pre>'); } }); console.log('</li>'); } }, moduleDone: function () { console.log('</ol>'); }, done: function (assertions) { var end = new Date().getTime(); var duration = end - start; if (assertions.failures()) { console.log( '<h3>FAILURES: ' + assertions.failures() + '/' + assertions.length + ' assertions failed (' + assertions.duration + 'ms)</h3>' ); } else { console.log( '<h3>OK: ' + assertions.length + ' assertions (' + assertions.duration + 'ms)</h3>' ); } console.log('</body>'); console.log('</html>'); if (callback) callback(assertions.failures() ? new Error('We have got test failures.') : undefined); } }); };