fdescribe / fit can be used to focus specs manually

This commit is contained in:
Nathan Sobo
2011-12-23 15:38:22 -06:00
parent deb088f1ed
commit 5b7a80f707
2 changed files with 40 additions and 2 deletions

View File

@@ -1,5 +1,6 @@
nakedLoad 'jasmine'
nakedLoad 'jasmine-html'
nakedLoad 'jasmine-focused'
$ = require 'jquery'
coffeekup = require 'coffeekup'
@@ -16,8 +17,7 @@ trivialReporter = new jasmine.TrivialReporter(document, 'jasmine_runner')
jasmineEnv.addReporter(trivialReporter)
jasmineEnv.specFilter = (spec) ->
return trivialReporter.specFilter(spec)
jasmineEnv.specFilter = (spec) -> trivialReporter.specFilter(spec)
require 'spec-suite'
jasmineEnv.execute()

38
vendor/jasmine-focused.js vendored Normal file
View File

@@ -0,0 +1,38 @@
var fdescribe = function(description, specDefinitions) {
jasmine.getEnv().focus = true
var suite = describe(description, specDefinitions);
suite.focus = true;
return suite;
};
var fit = function(description, definition) {
jasmine.getEnv().focus = true
var spec = it(description, definition);
spec.focus = true;
return spec;
};
var fSpecFilter = function(specOrSuite) {
if (!jasmine.getEnv().focus) return true;
if (specOrSuite.focus) return true;
var parent = specOrSuite.parentSuite || specOrSuite.suite;
if (!parent) return false;
return fSpecFilter(parent);
}
jasmine.TrivialReporter.prototype.specFilter = function(spec) {
var paramMap = {};
var params = this.getLocation().search.substring(1).split('&');
for (var i = 0; i < params.length; i++) {
var p = params[i].split('=');
paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
}
if (!paramMap.spec && !jasmine.getEnv().focus) {
return true;
}
return (spec.getFullName().indexOf(paramMap.spec) === 0) || fSpecFilter(spec);
};