From caee1508d1bb7f9f9386aca95fa7e0690ce9c794 Mon Sep 17 00:00:00 2001 From: Greg Cobb and Tim Jarratt Date: Thu, 28 Aug 2014 15:37:18 -0700 Subject: [PATCH] Adds a fit function to Env [#73742944] --- spec/core/integration/EnvSpec.js | 29 +++++++++++++++++++++++++++-- src/core/Env.js | 12 +++++++++++- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/spec/core/integration/EnvSpec.js b/spec/core/integration/EnvSpec.js index f81678b6..383d9662 100644 --- a/spec/core/integration/EnvSpec.js +++ b/spec/core/integration/EnvSpec.js @@ -496,7 +496,7 @@ describe("Env integration", function() { env.execute([secondSuite.id, firstSpec.id]); }); - it('runs before and after all functions for focused specs', function(done) { + it('runs before and after all functions for runnables provided to .execute()', function(done) { var env = new j$.Env(), calls = [], first_spec, @@ -772,7 +772,32 @@ describe("Env integration", function() { }); }); - // TODO: something is wrong with this spec + describe('focused tests', function() { + it('should only run the focused tests', function(done) { + var env = new j$.Env(), + calls = []; + + var assertions = function() { + expect(calls).toEqual(['focused']); + done(); + }; + + env.addReporter({jasmineDone: assertions}); + + env.describe('a suite', function() { + env.fit('is focused', function() { + calls.push('focused'); + }); + + env.it('is not focused', function() { + calls.push('freakout'); + }) + }); + + env.execute(); + }); + }); + it("should report as expected", function(done) { var env = new j$.Env(), reporter = jasmine.createSpyObj('fakeReporter', [ diff --git a/src/core/Env.js b/src/core/Env.js index b57ce68b..db079a60 100644 --- a/src/core/Env.js +++ b/src/core/Env.js @@ -199,8 +199,11 @@ getJasmineRequireObj().Env = function(j$) { this.execute = function(runnablesToRun) { if(runnablesToRun) { runnablesExplictlySet = true; + } else if (focusedRunnables.length) { + runnablesToRun = focusedRunnables; + } else { + runnablesToRun = [topSuite.id]; } - runnablesToRun = runnablesToRun || [topSuite.id]; var allFns = []; for(var i = 0; i < runnablesToRun.length; i++) { @@ -348,6 +351,13 @@ getJasmineRequireObj().Env = function(j$) { return spec; }; + var focusedRunnables = []; + this.fit = function(description, fn ){ + var spec = this.it(description, fn); + focusedRunnables.push(spec.id); + return spec; + }; + this.expect = function(actual) { return currentRunnable().expect(actual); };