Skip to content

Instantly share code, notes, and snippets.

@jrburke
Created August 22, 2011 21:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jrburke/1163685 to your computer and use it in GitHub Desktop.
Save jrburke/1163685 to your computer and use it in GitHub Desktop.
jasmine hacking for use in requirejs on node, not really usable
/*jslint strict: false, onevar: false, indent: 2 */
/*global require: false, process: false */
var requirejs = require('./jasmine/lib/r.js');
requirejs.config({
nodeRequire: require
});
//requirejs(['require', 'jasmine-node', 'jasmine-node/lib/jasmine-node/jasmine-1.0.1', 'sys'],
requirejs(['require', 'jasmine-node', './jasmine/lib/jasmine-1.1.0.rc1/jasmine', 'sys'],
function (require, jasmineNode, jasmineExport, sys) {
var specFolder = 'jasmine/spec',
specs = jasmineNode.getAllSpecFiles(specFolder),
//jasmine in commonjs is a property off of the jasmine export
jasmine = jasmineExport.jasmine;
jasmine.printRunnerResults = function(runner){
var results = runner.results();
var suites = runner.suites();
var msg = '';
msg += suites.length + ' test' + ((suites.length === 1) ? '' : 's') + ', ';
msg += results.totalCount + ' assertion' + ((results.totalCount === 1) ? '' : 's') + ', ';
msg += results.failedCount + ' failure' + ((results.failedCount === 1) ? '' : 's') + '\n';
return msg;
};
function done (runner, log){
sys.print('\n');
if (runner.results().failedCount == 0) {
process.exit(0);
} else {
process.exit(1);
}
}
require(specs, function () {
var log = [];
var columnCounter = 0;
var start = 0;
var elapsed = 0;
var verbose = true;
var colors = true
var ansi = {
green: '\033[32m',
red: '\033[31m',
yellow: '\033[33m',
none: '\033[0m'
};
var jasmineEnv = jasmine.getEnv();//.addReporter(new jasmine.TrivialReporter());
jasmineEnv.reporter = {
log: function (str) {
},
reportSpecStarting: function (runner) {
},
reportRunnerStarting: function (runner) {
sys.puts('Started');
start = Number(new Date);
},
reportSuiteResults: function (suite) {
var specResults = suite.results();
var path = [];
while(suite) {
path.unshift(suite.description);
suite = suite.parentSuite;
}
var description = path.join(' ');
if (verbose)
log.push('Spec ' + description);
specResults.items_.forEach(function (spec){
if (spec.failedCount > 0 && spec.description) {
if (!verbose)
log.push(description);
log.push(' it ' + spec.description);
spec.items_.forEach(function (result){
log.push(' ' + result.trace.stack + '\n');
});
}
});
},
reportSpecResults: function (spec) {
var result = spec.results();
var msg = '';
if (result.passed())
{
msg = (colors) ? (ansi.green + '.' + ansi.none) : '.';
// } else if (result.skipped) { TODO: Research why "result.skipped" returns false when "xit" is called on a spec?
// msg = (colors) ? (ansi.yellow + '*' + ansi.none) : '*';
} else {
msg = (colors) ? (ansi.red + 'F' + ansi.none) : 'F';
}
sys.print(msg);
if (columnCounter++ < 50) return;
columnCounter = 0;
sys.print('\n');
},
reportRunnerResults: function (runner) {
elapsed = (Number(new Date) - start) / 1000;
sys.puts('\n');
log.forEach(function(log){
sys.puts(log);
});
sys.puts('Finished in ' + elapsed + ' seconds');
var summary = jasmine.printRunnerResults(runner);
if(colors)
{
if(runner.results().failedCount === 0 )
sys.puts(ansi.green + summary + ansi.none);
else
sys.puts(ansi.red + summary + ansi.none);
} else {
sys.puts(summary);
}
(done||noop)(runner, log);
}
};
jasmine.getEnv().execute();
});
});
@jrburke
Copy link
Author

jrburke commented Aug 22, 2011

I also had to change the jasmine1.1.0rc1 file to register as an amd module for this to somewhat work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment