| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- 'use strict';
- var Runnable = require('./runnable');
- var utils = require('./utils');
- var errors = require('./errors');
- var createInvalidArgumentTypeError = errors.createInvalidArgumentTypeError;
- var isString = utils.isString;
- const {MOCHA_ID_PROP_NAME} = utils.constants;
- module.exports = Test;
- /**
- * Initialize a new `Test` with the given `title` and callback `fn`.
- *
- * @public
- * @class
- * @extends Runnable
- * @param {String} title - Test title (required)
- * @param {Function} [fn] - Test callback. If omitted, the Test is considered "pending"
- */
- function Test(title, fn) {
- if (!isString(title)) {
- throw createInvalidArgumentTypeError(
- 'Test argument "title" should be a string. Received type "' +
- typeof title +
- '"',
- 'title',
- 'string'
- );
- }
- this.type = 'test';
- Runnable.call(this, title, fn);
- this.reset();
- }
- /**
- * Inherit from `Runnable.prototype`.
- */
- utils.inherits(Test, Runnable);
- /**
- * Resets the state initially or for a next run.
- */
- Test.prototype.reset = function () {
- Runnable.prototype.reset.call(this);
- this.pending = !this.fn;
- delete this.state;
- };
- /**
- * Set or get retried test
- *
- * @private
- */
- Test.prototype.retriedTest = function (n) {
- if (!arguments.length) {
- return this._retriedTest;
- }
- this._retriedTest = n;
- };
- /**
- * Add test to the list of tests marked `only`.
- *
- * @private
- */
- Test.prototype.markOnly = function () {
- this.parent.appendOnlyTest(this);
- };
- Test.prototype.clone = function () {
- var test = new Test(this.title, this.fn);
- test.timeout(this.timeout());
- test.slow(this.slow());
- test.retries(this.retries());
- test.currentRetry(this.currentRetry());
- test.retriedTest(this.retriedTest() || this);
- test.globals(this.globals());
- test.parent = this.parent;
- test.file = this.file;
- test.ctx = this.ctx;
- return test;
- };
- /**
- * Returns an minimal object suitable for transmission over IPC.
- * Functions are represented by keys beginning with `$$`.
- * @private
- * @returns {Object}
- */
- Test.prototype.serialize = function serialize() {
- return {
- $$currentRetry: this._currentRetry,
- $$fullTitle: this.fullTitle(),
- $$isPending: Boolean(this.pending),
- $$retriedTest: this._retriedTest || null,
- $$slow: this._slow,
- $$titlePath: this.titlePath(),
- body: this.body,
- duration: this.duration,
- err: this.err,
- parent: {
- $$fullTitle: this.parent.fullTitle(),
- [MOCHA_ID_PROP_NAME]: this.parent.id
- },
- speed: this.speed,
- state: this.state,
- title: this.title,
- type: this.type,
- file: this.file,
- [MOCHA_ID_PROP_NAME]: this.id
- };
- };
|