6
var Suite = require('../suite')
7
, Test = require('../test')
8
, utils = require('../utils');
11
* QUnit-style interface:
15
* test('#length', function(){
17
* ok(arr.length == 3);
20
* test('#indexOf()', function(){
22
* ok(arr.indexOf(1) == 0);
23
* ok(arr.indexOf(2) == 1);
24
* ok(arr.indexOf(3) == 2);
29
* test('#length', function(){
30
* ok('foo'.length == 3);
35
module.exports = function(suite){
38
suite.on('pre-require', function(context, file, mocha){
41
* Execute before running tests.
44
context.before = function(name, fn){
45
suites[0].beforeAll(name, fn);
49
* Execute after running tests.
52
context.after = function(name, fn){
53
suites[0].afterAll(name, fn);
57
* Execute before each test case.
60
context.beforeEach = function(name, fn){
61
suites[0].beforeEach(name, fn);
65
* Execute after each test case.
68
context.afterEach = function(name, fn){
69
suites[0].afterEach(name, fn);
73
* Describe a "suite" with the given `title`.
76
context.suite = function(title){
77
if (suites.length > 1) suites.shift();
78
var suite = Suite.create(suites[0], title);
80
suites.unshift(suite);
85
* Exclusive test-case.
88
context.suite.only = function(title, fn){
89
var suite = context.suite(title, fn);
90
mocha.grep(suite.fullTitle());
94
* Describe a specification or test-case
95
* with the given `title` and callback `fn`
99
context.test = function(title, fn){
100
var test = new Test(title, fn);
102
suites[0].addTest(test);
107
* Exclusive test-case.
110
context.test.only = function(title, fn){
111
var test = context.test(title, fn);
112
var reString = '^' + utils.escapeRegexp(test.fullTitle()) + '$';
113
mocha.grep(new RegExp(reString));
120
context.test.skip = function(title){