Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
mhevery committed Mar 14, 2010
2 parents 15c1042 + f2ebe78 commit 76f25d0
Show file tree
Hide file tree
Showing 7 changed files with 108 additions and 56 deletions.
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.DS_Store
.idea
*.iml
*.ipr
*.iws
*.tmproj
.project
.settings
.externalToolBuilders
125 changes: 75 additions & 50 deletions lib/jasmine/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,82 +12,108 @@ var src = fs.readFileSync(filename);
var jasmine = process.compile(src + '\njasmine;', filename);
delete global.window;

function noop(){};
function now(){ return new Date().getTime(); }

jasmine.executeSpecsInFolder = function(folder, done){
var tests = {
start: now(),
count: 0,
failed: 0,
passed: 0
};
var specs = fs.readdirSync('spec');
for ( var i = 0; i < specs.length; i++) {
var filename = folder + '/' + specs[i];
process.compile(fs.readFileSync(filename), filename);
}
function noop(){}

jasmine.executeSpecsInFolder = function(folder, done, isVerbose){
var log = [];
var columnCounter = 0;
var start = 0;
var elapsed = 0;
var verbose = isVerbose || false;
var specs = jasmine.getAllSpecFiles(folder);

for (var i = 0, len = specs.length; i < len; ++i){
var filename = specs[i];
process.compile(fs.readFileSync(filename), filename);
}

var jasmineEnv = jasmine.getEnv();
jasmineEnv.reporter = {
log: function(str){
},


reportRunnerStarting: function(runner) {
sys.puts('Started');
start = Number(new Date);
},


reportSuiteResults: function(suite) {
var specResults = suite.results();
if (specResults.failedCount) {
var path = [];
while(suite) {
path.unshift(suite.description);
suite = suite.parentSuite;
}
log.push('Describe ' + path.join(' '));
specResults.items_.forEach(function(spec){
if (spec.failedCount > 0 && spec.description) {
log.push(' it ' + spec.description);
spec.items_.forEach(function(result){
log.push(' ' + result.message);
});
}
});
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) {
tests.count ++;
if (spec.results().failedCount) {
sys.print("F");
tests.failed++;
} else {
sys.print(".");
tests.passed++;
}
sys.print(spec.results().failedCount ? "F" : ".");
if (columnCounter++ < 50) return;
columnCounter = 0;
sys.print('\n');
},


reportRunnerResults: function(runner) {
tests.finished = now();
tests.duration = tests.finished - tests.start;
tests.durationPerTest = tests.duration / tests.count;
sys.puts('\n----------');
elapsed = (Number(new Date) - start) / 1000;
sys.puts('\n');
log.forEach(function(log){
sys.puts(log);
});
tests.description =
"Passed " + tests.passed + " of " + tests.count +
(tests.failed ? " (Failed " + tests.failed + " of " + tests.count + ")": "") +
" in " + tests.duration +
" ms (" + Math.round(tests.durationPerTest) + " ms per test).";
sys.puts(tests.description);
(done||noop)(tests);
sys.puts('Finished in ' + elapsed + ' seconds');
sys.puts(jasmine.printRunnerResults(runner));
(done||noop)(runner, log);
}
};
jasmineEnv.execute();
};

jasmine.getAllSpecFiles = function(dir){
var files = fs.readdirSync(dir);
var specs = [];

for (var i = 0, len = files.length; i < len; ++i){
var filename = dir + '/' + files[i];
if (fs.statSync(filename).isFile()){
specs.push(filename);
}else if (fs.statSync(filename).isDirectory()){
var subfiles = this.getAllSpecFiles(filename);
subfiles.forEach(function(result){
specs.push(result);
});
}
}
return specs;
};

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 now(){
return new Date().getTime();
}
Expand All @@ -114,5 +140,4 @@ jasmine.asyncSpecDone = function(){
jasmine.asyncSpecWait.done = true;
};


process.mixin(exports, jasmine);
3 changes: 0 additions & 3 deletions spec/SampleSpecs.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
describe('jasmine-node', function(){
it('should report failure (THIS IS EXPECTED)', function(){
expect('true').toBeFalsy();
});

it('should pass', function(){
expect(1+2).toEqual(3);
Expand Down
5 changes: 5 additions & 0 deletions spec/TestSpec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
describe('jasmine-node-flat', function(){
it('should pass', function(){
expect(1+2).toEqual(3);
});
});
5 changes: 5 additions & 0 deletions spec/nested/NestedSpec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
describe('jasmine-node-nested', function(){
it('should pass', function(){
expect(1+2).toEqual(3);
});
});
11 changes: 11 additions & 0 deletions spec/nested/uber-nested/UberNestedSpec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
describe('jasmine-node-uber-nested', function(){
it('should pass', function(){
expect(1+2).toEqual(3);
});

describe('failure', function(){
it('should report failure (THIS IS EXPECTED)', function(){
expect(true).toBeFalsy();
});
});
});
6 changes: 3 additions & 3 deletions specs.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ var sys = require('sys');

process.mixin(global, jasmine);

jasmine.executeSpecsInFolder('spec', function(tests){
process.exit(tests.failed);
});
jasmine.executeSpecsInFolder('spec', function(runner, log){
process.exit(runner.results().failedCount);
}, true);

0 comments on commit 76f25d0

Please sign in to comment.