| /*! |
| * Simple util module to track tests. Adds a process.exit hook to print |
| * the undone tests. |
| */ |
| |
| |
| exports.createTracker = function (on_exit) { |
| var names = {}; |
| var tracker = { |
| names: function () { |
| var arr = []; |
| for (var k in names) { |
| if (names.hasOwnProperty(k)) { |
| arr.push(k); |
| } |
| } |
| return arr; |
| }, |
| unfinished: function () { |
| return tracker.names().length; |
| }, |
| put: function (testname) { |
| names[testname] = testname; |
| }, |
| remove: function (testname) { |
| delete names[testname]; |
| } |
| }; |
| |
| process.on('exit', function() { |
| on_exit = on_exit || exports.default_on_exit; |
| on_exit(tracker); |
| }); |
| |
| return tracker; |
| }; |
| |
| exports.default_on_exit = function (tracker) { |
| if (tracker.unfinished()) { |
| console.log(''); |
| console.log('Undone tests (or their setups/teardowns): '); |
| var names = tracker.names(); |
| for (var i = 0; i < names.length; i += 1) { |
| console.log(names[i]); |
| } |
| process.reallyExit(tracker.unfinished()); |
| } |
| }; |