aboutsummaryrefslogtreecommitdiff
path: root/node_modules/mocha/lib/interfaces
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-10-10 03:43:44 +0200
committerFlorian Dold <florian.dold@gmail.com>2016-10-10 03:43:44 +0200
commitabd94a7f5a50f43c797a11b53549ae48fff667c3 (patch)
treeab8ed457f65cdd72e13e0571d2975729428f1551 /node_modules/mocha/lib/interfaces
parenta0247c6a3fd6a09a41a7e35a3441324c4dcb58be (diff)
add node_modules to address #4364
Diffstat (limited to 'node_modules/mocha/lib/interfaces')
-rw-r--r--node_modules/mocha/lib/interfaces/bdd.js117
-rw-r--r--node_modules/mocha/lib/interfaces/common.js85
-rw-r--r--node_modules/mocha/lib/interfaces/exports.js61
-rw-r--r--node_modules/mocha/lib/interfaces/index.js4
-rw-r--r--node_modules/mocha/lib/interfaces/qunit.js94
-rw-r--r--node_modules/mocha/lib/interfaces/tdd.js106
6 files changed, 467 insertions, 0 deletions
diff --git a/node_modules/mocha/lib/interfaces/bdd.js b/node_modules/mocha/lib/interfaces/bdd.js
new file mode 100644
index 000000000..8519a9a7b
--- /dev/null
+++ b/node_modules/mocha/lib/interfaces/bdd.js
@@ -0,0 +1,117 @@
+/**
+ * Module dependencies.
+ */
+
+var Suite = require('../suite');
+var Test = require('../test');
+var escapeRe = require('escape-string-regexp');
+
+/**
+ * BDD-style interface:
+ *
+ * describe('Array', function() {
+ * describe('#indexOf()', function() {
+ * it('should return -1 when not present', function() {
+ * // ...
+ * });
+ *
+ * it('should return the index when present', function() {
+ * // ...
+ * });
+ * });
+ * });
+ *
+ * @param {Suite} suite Root suite.
+ */
+module.exports = function(suite) {
+ var suites = [suite];
+
+ suite.on('pre-require', function(context, file, mocha) {
+ var common = require('./common')(suites, context);
+
+ context.before = common.before;
+ context.after = common.after;
+ context.beforeEach = common.beforeEach;
+ context.afterEach = common.afterEach;
+ context.run = mocha.options.delay && common.runWithSuite(suite);
+ /**
+ * Describe a "suite" with the given `title`
+ * and callback `fn` containing nested suites
+ * and/or tests.
+ */
+
+ context.describe = context.context = function(title, fn) {
+ var suite = Suite.create(suites[0], title);
+ suite.file = file;
+ suites.unshift(suite);
+ fn.call(suite);
+ suites.shift();
+ return suite;
+ };
+
+ /**
+ * Pending describe.
+ */
+
+ context.xdescribe = context.xcontext = context.describe.skip = function(title, fn) {
+ var suite = Suite.create(suites[0], title);
+ suite.pending = true;
+ suites.unshift(suite);
+ fn.call(suite);
+ suites.shift();
+ };
+
+ /**
+ * Exclusive suite.
+ */
+
+ context.describe.only = function(title, fn) {
+ var suite = context.describe(title, fn);
+ mocha.grep(suite.fullTitle());
+ return suite;
+ };
+
+ /**
+ * Describe a specification or test-case
+ * with the given `title` and callback `fn`
+ * acting as a thunk.
+ */
+
+ var it = context.it = context.specify = function(title, fn) {
+ var suite = suites[0];
+ if (suite.isPending()) {
+ fn = null;
+ }
+ var test = new Test(title, fn);
+ test.file = file;
+ suite.addTest(test);
+ return test;
+ };
+
+ /**
+ * Exclusive test-case.
+ */
+
+ context.it.only = function(title, fn) {
+ var test = it(title, fn);
+ var reString = '^' + escapeRe(test.fullTitle()) + '$';
+ mocha.grep(new RegExp(reString));
+ return test;
+ };
+
+ /**
+ * Pending test case.
+ */
+
+ context.xit = context.xspecify = context.it.skip = function(title) {
+ context.it(title);
+ };
+
+ /**
+ * Number of attempts to retry.
+ */
+ context.it.retries = function(n) {
+ context.retries(n);
+ };
+ });
+};
diff --git a/node_modules/mocha/lib/interfaces/common.js b/node_modules/mocha/lib/interfaces/common.js
new file mode 100644
index 000000000..db939085c
--- /dev/null
+++ b/node_modules/mocha/lib/interfaces/common.js
@@ -0,0 +1,85 @@
+'use strict';
+
+/**
+ * Functions common to more than one interface.
+ *
+ * @param {Suite[]} suites
+ * @param {Context} context
+ * @return {Object} An object containing common functions.
+ */
+module.exports = function(suites, context) {
+ return {
+ /**
+ * This is only present if flag --delay is passed into Mocha. It triggers
+ * root suite execution.
+ *
+ * @param {Suite} suite The root wuite.
+ * @return {Function} A function which runs the root suite
+ */
+ runWithSuite: function runWithSuite(suite) {
+ return function run() {
+ suite.run();
+ };
+ },
+
+ /**
+ * Execute before running tests.
+ *
+ * @param {string} name
+ * @param {Function} fn
+ */
+ before: function(name, fn) {
+ suites[0].beforeAll(name, fn);
+ },
+
+ /**
+ * Execute after running tests.
+ *
+ * @param {string} name
+ * @param {Function} fn
+ */
+ after: function(name, fn) {
+ suites[0].afterAll(name, fn);
+ },
+
+ /**
+ * Execute before each test case.
+ *
+ * @param {string} name
+ * @param {Function} fn
+ */
+ beforeEach: function(name, fn) {
+ suites[0].beforeEach(name, fn);
+ },
+
+ /**
+ * Execute after each test case.
+ *
+ * @param {string} name
+ * @param {Function} fn
+ */
+ afterEach: function(name, fn) {
+ suites[0].afterEach(name, fn);
+ },
+
+ test: {
+ /**
+ * Pending test case.
+ *
+ * @param {string} title
+ */
+ skip: function(title) {
+ context.test(title);
+ },
+
+ /**
+ * Number of retry attempts
+ *
+ * @param {number} n
+ */
+ retries: function(n) {
+ context.retries(n);
+ }
+ }
+ };
+};
diff --git a/node_modules/mocha/lib/interfaces/exports.js b/node_modules/mocha/lib/interfaces/exports.js
new file mode 100644
index 000000000..7db6e47c9
--- /dev/null
+++ b/node_modules/mocha/lib/interfaces/exports.js
@@ -0,0 +1,61 @@
+/**
+ * Module dependencies.
+ */
+
+var Suite = require('../suite');
+var Test = require('../test');
+
+/**
+ * Exports-style (as Node.js module) interface:
+ *
+ * exports.Array = {
+ * '#indexOf()': {
+ * 'should return -1 when the value is not present': function() {
+ *
+ * },
+ *
+ * 'should return the correct index when the value is present': function() {
+ *
+ * }
+ * }
+ * };
+ *
+ * @param {Suite} suite Root suite.
+ */
+module.exports = function(suite) {
+ var suites = [suite];
+
+ suite.on('require', visit);
+
+ function visit(obj, file) {
+ var suite;
+ for (var key in obj) {
+ if (typeof obj[key] === 'function') {
+ var fn = obj[key];
+ switch (key) {
+ case 'before':
+ suites[0].beforeAll(fn);
+ break;
+ case 'after':
+ suites[0].afterAll(fn);
+ break;
+ case 'beforeEach':
+ suites[0].beforeEach(fn);
+ break;
+ case 'afterEach':
+ suites[0].afterEach(fn);
+ break;
+ default:
+ var test = new Test(key, fn);
+ test.file = file;
+ suites[0].addTest(test);
+ }
+ } else {
+ suite = Suite.create(suites[0], key);
+ suites.unshift(suite);
+ visit(obj[key], file);
+ suites.shift();
+ }
+ }
+ }
+};
diff --git a/node_modules/mocha/lib/interfaces/index.js b/node_modules/mocha/lib/interfaces/index.js
new file mode 100644
index 000000000..4f825d15b
--- /dev/null
+++ b/node_modules/mocha/lib/interfaces/index.js
@@ -0,0 +1,4 @@
+exports.bdd = require('./bdd');
+exports.tdd = require('./tdd');
+exports.qunit = require('./qunit');
+exports.exports = require('./exports');
diff --git a/node_modules/mocha/lib/interfaces/qunit.js b/node_modules/mocha/lib/interfaces/qunit.js
new file mode 100644
index 000000000..b79dcc68c
--- /dev/null
+++ b/node_modules/mocha/lib/interfaces/qunit.js
@@ -0,0 +1,94 @@
+/**
+ * Module dependencies.
+ */
+
+var Suite = require('../suite');
+var Test = require('../test');
+var escapeRe = require('escape-string-regexp');
+
+/**
+ * QUnit-style interface:
+ *
+ * suite('Array');
+ *
+ * test('#length', function() {
+ * var arr = [1,2,3];
+ * ok(arr.length == 3);
+ * });
+ *
+ * test('#indexOf()', function() {
+ * var arr = [1,2,3];
+ * ok(arr.indexOf(1) == 0);
+ * ok(arr.indexOf(2) == 1);
+ * ok(arr.indexOf(3) == 2);
+ * });
+ *
+ * suite('String');
+ *
+ * test('#length', function() {
+ * ok('foo'.length == 3);
+ * });
+ *
+ * @param {Suite} suite Root suite.
+ */
+module.exports = function(suite) {
+ var suites = [suite];
+
+ suite.on('pre-require', function(context, file, mocha) {
+ var common = require('./common')(suites, context);
+
+ context.before = common.before;
+ context.after = common.after;
+ context.beforeEach = common.beforeEach;
+ context.afterEach = common.afterEach;
+ context.run = mocha.options.delay && common.runWithSuite(suite);
+ /**
+ * Describe a "suite" with the given `title`.
+ */
+
+ context.suite = function(title) {
+ if (suites.length > 1) {
+ suites.shift();
+ }
+ var suite = Suite.create(suites[0], title);
+ suite.file = file;
+ suites.unshift(suite);
+ return suite;
+ };
+
+ /**
+ * Exclusive test-case.
+ */
+
+ context.suite.only = function(title, fn) {
+ var suite = context.suite(title, fn);
+ mocha.grep(suite.fullTitle());
+ };
+
+ /**
+ * Describe a specification or test-case
+ * with the given `title` and callback `fn`
+ * acting as a thunk.
+ */
+
+ context.test = function(title, fn) {
+ var test = new Test(title, fn);
+ test.file = file;
+ suites[0].addTest(test);
+ return test;
+ };
+
+ /**
+ * Exclusive test-case.
+ */
+
+ context.test.only = function(title, fn) {
+ var test = context.test(title, fn);
+ var reString = '^' + escapeRe(test.fullTitle()) + '$';
+ mocha.grep(new RegExp(reString));
+ };
+
+ context.test.skip = common.test.skip;
+ context.test.retries = common.test.retries;
+ });
+};
diff --git a/node_modules/mocha/lib/interfaces/tdd.js b/node_modules/mocha/lib/interfaces/tdd.js
new file mode 100644
index 000000000..d37936ae4
--- /dev/null
+++ b/node_modules/mocha/lib/interfaces/tdd.js
@@ -0,0 +1,106 @@
+/**
+ * Module dependencies.
+ */
+
+var Suite = require('../suite');
+var Test = require('../test');
+var escapeRe = require('escape-string-regexp');
+
+/**
+ * TDD-style interface:
+ *
+ * suite('Array', function() {
+ * suite('#indexOf()', function() {
+ * suiteSetup(function() {
+ *
+ * });
+ *
+ * test('should return -1 when not present', function() {
+ *
+ * });
+ *
+ * test('should return the index when present', function() {
+ *
+ * });
+ *
+ * suiteTeardown(function() {
+ *
+ * });
+ * });
+ * });
+ *
+ * @param {Suite} suite Root suite.
+ */
+module.exports = function(suite) {
+ var suites = [suite];
+
+ suite.on('pre-require', function(context, file, mocha) {
+ var common = require('./common')(suites, context);
+
+ context.setup = common.beforeEach;
+ context.teardown = common.afterEach;
+ context.suiteSetup = common.before;
+ context.suiteTeardown = common.after;
+ context.run = mocha.options.delay && common.runWithSuite(suite);
+
+ /**
+ * Describe a "suite" with the given `title` and callback `fn` containing
+ * nested suites and/or tests.
+ */
+ context.suite = function(title, fn) {
+ var suite = Suite.create(suites[0], title);
+ suite.file = file;
+ suites.unshift(suite);
+ fn.call(suite);
+ suites.shift();
+ return suite;
+ };
+
+ /**
+ * Pending suite.
+ */
+ context.suite.skip = function(title, fn) {
+ var suite = Suite.create(suites[0], title);
+ suite.pending = true;
+ suites.unshift(suite);
+ fn.call(suite);
+ suites.shift();
+ };
+
+ /**
+ * Exclusive test-case.
+ */
+ context.suite.only = function(title, fn) {
+ var suite = context.suite(title, fn);
+ mocha.grep(suite.fullTitle());
+ };
+
+ /**
+ * Describe a specification or test-case with the given `title` and
+ * callback `fn` acting as a thunk.
+ */
+ context.test = function(title, fn) {
+ var suite = suites[0];
+ if (suite.isPending()) {
+ fn = null;
+ }
+ var test = new Test(title, fn);
+ test.file = file;
+ suite.addTest(test);
+ return test;
+ };
+
+ /**
+ * Exclusive test-case.
+ */
+
+ context.test.only = function(title, fn) {
+ var test = context.test(title, fn);
+ var reString = '^' + escapeRe(test.fullTitle()) + '$';
+ mocha.grep(new RegExp(reString));
+ };
+
+ context.test.skip = common.test.skip;
+ context.test.retries = common.test.retries;
+ });
+};