
/**
 * Module dependencies.
 */

var Suite = require('../suite')
  , Test = require('../test');

/**
 * 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(){
 *
 *          });
 *        });
 *      });
 * 
 */

module.exports = function(suite){
  var suites = [suite];

  suite.on('pre-require', function(context){

    /**
     * Execute before running tests.
     */

    context.before = function(fn){
      suites[0].beforeAll(fn);
    };

    /**
     * Execute after running tests.
     */

    context.after = function(fn){
      suites[0].afterAll(fn);
    };

    /**
     * Execute before each test case.
     */

    context.beforeEach = function(fn){
      suites[0].beforeEach(fn);
    };

    /**
     * Execute after each test case.
     */

    context.afterEach = function(fn){
      suites[0].afterEach(fn);
    };

    /**
     * Pending describe.
     */

    context.xdescribe = function(title, fn){
      var suite = Suite.create(suites[0], title);
      suite.pending = true;
      suites.unshift(suite);
      fn();
      suites.shift();
    };

    /**
     * Describe a "suite" with the given `title`
     * and callback `fn` containing nested suites
     * and/or tests.
     */
  
    context.describe = function(title, fn){
      var suite = Suite.create(suites[0], title);
      suites.unshift(suite);
      fn();
      suites.shift();
    };

    /**
     * Describe a specification or test-case
     * with the given `title` and callback `fn`
     * acting as a thunk.
     */

    context.it = function(title, fn){
      var suite = suites[0];
      if (suite.pending) var fn = null;
      suite.addTest(new Test(title, fn));
    };

    /**
     * Pending test case.
     */

    context.xit = function(title){
      context.it(title);
    };
  });
};

@@ -1093,32 +1093,51 @@
 text.xdescribe =
+ context.xcontext =
  function(title,
@@ -1134,32 +1134,32 @@
 ion(title, fn)%7B%0A
-
       var suite 
@@ -1452,16 +1452,34 @@
 scribe =
+ context.context =
  functio
@@ -1761,24 +1761,42 @@
 context.it =
+ context.specify =
  function(ti
@@ -1959,32 +1959,32 @@
  case.%0A     */%0A%0A
-
     context.xit 
@@ -1984,16 +1984,35 @@
 xt.xit =
+ context.xspecify =
  functio

Revert "remove context() and specify()"