1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 'use strict';
- /**
- * Provides a factory function for a {@link StatsCollector} object.
- * @module
- */
- var constants = require('./runner').constants;
- var EVENT_TEST_PASS = constants.EVENT_TEST_PASS;
- var EVENT_TEST_FAIL = constants.EVENT_TEST_FAIL;
- var EVENT_SUITE_BEGIN = constants.EVENT_SUITE_BEGIN;
- var EVENT_RUN_BEGIN = constants.EVENT_RUN_BEGIN;
- var EVENT_TEST_PENDING = constants.EVENT_TEST_PENDING;
- var EVENT_RUN_END = constants.EVENT_RUN_END;
- var EVENT_TEST_END = constants.EVENT_TEST_END;
- /**
- * Test statistics collector.
- *
- * @public
- * @typedef {Object} StatsCollector
- * @property {number} suites - integer count of suites run.
- * @property {number} tests - integer count of tests run.
- * @property {number} passes - integer count of passing tests.
- * @property {number} pending - integer count of pending tests.
- * @property {number} failures - integer count of failed tests.
- * @property {Date} start - time when testing began.
- * @property {Date} end - time when testing concluded.
- * @property {number} duration - number of msecs that testing took.
- */
- var Date = global.Date;
- /**
- * Provides stats such as test duration, number of tests passed / failed etc., by listening for events emitted by `runner`.
- *
- * @private
- * @param {Runner} runner - Runner instance
- * @throws {TypeError} If falsy `runner`
- */
- function createStatsCollector(runner) {
- /**
- * @type StatsCollector
- */
- var stats = {
- suites: 0,
- tests: 0,
- passes: 0,
- pending: 0,
- failures: 0
- };
- if (!runner) {
- throw new TypeError('Missing runner argument');
- }
- runner.stats = stats;
- runner.once(EVENT_RUN_BEGIN, function() {
- stats.start = new Date();
- });
- runner.on(EVENT_SUITE_BEGIN, function(suite) {
- suite.root || stats.suites++;
- });
- runner.on(EVENT_TEST_PASS, function() {
- stats.passes++;
- });
- runner.on(EVENT_TEST_FAIL, function() {
- stats.failures++;
- });
- runner.on(EVENT_TEST_PENDING, function() {
- stats.pending++;
- });
- runner.on(EVENT_TEST_END, function() {
- stats.tests++;
- });
- runner.once(EVENT_RUN_END, function() {
- stats.end = new Date();
- stats.duration = stats.end - stats.start;
- });
- }
- module.exports = createStatsCollector;
|