Skip to content

Commit

Permalink
add unit test for testsuite.
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewjstone authored and tj committed Mar 3, 2011
1 parent b923e82 commit 2cd2684
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 3 deletions.
3 changes: 3 additions & 0 deletions Makefile
Expand Up @@ -8,6 +8,9 @@ HTMLDOCS = $(DOCS:.md=.html)
test: $(BIN)
@./$(BIN) -I lib --growl $(TEST_FLAGS) test/*.test.js

test-testsuite:
@./$(BIN) -I lib --growl $(TEST_FLAGS) test/testsuite/*.js

test-cov:
@./$(BIN) -I lib --cov $(TEST_FLAGS) test/*.test.js

Expand Down
10 changes: 7 additions & 3 deletions bin/expresso
Expand Up @@ -658,11 +658,15 @@ function run(files) {
process.exit(1);
}
}
var suite = 'test/testsuite.js';
var suite = null;
var testfiles = files.filter(function(val, index, array) {
return (val != suite);
if (val.match(/testsuite\.js/)) {
suite = val;
return false;
}
return true;
});
if (files.length != testfiles.length) {
if (suite) {
testsuite = require(suite);
testsuite.setup(function(){ runFiles(testfiles); });
} else {
Expand Down
20 changes: 20 additions & 0 deletions lib/testserver.js
@@ -0,0 +1,20 @@
var http = require('http');

var server = http.createServer(function(req, res) {
if (req.url === '/a' || req.url === '/b') {
res.writeHead(200, {'Content-Type': 'application/json'});
res.end(JSON.stringify({id: 1}));
} else if (req.url == '/b/1') {
res.writeHead(200);
res.end();
}
});

exports.init = function(id) {
server.uniqueid = id;
exports.server = server;
};

exports.fini = function() {
exports.server = null;
};
9 changes: 9 additions & 0 deletions test/testsuite/a.test.js
@@ -0,0 +1,9 @@
var print = require('util').debug;
var assert = require('assert');
var testserver = require('testserver');

exports['GET /a'] = function(beforeExit) {
assert.response(testserver.server,
{url: '/a'},
{status: 200, headers: {'Content-Type': 'application/json'}});
};
16 changes: 16 additions & 0 deletions test/testsuite/b.test.js
@@ -0,0 +1,16 @@
var print = require('util').debug;
var assert = require('assert');
var testserver = require('testserver');

exports['GET first page'] = function(beforeExit) {
assert.response(testserver.server,
{url: '/b'},
{status: 200, headers: {'Content-Type': 'application/json'}},
function(res) {
var b = JSON.parse(res.body);
assert.ok('id' in b);
assert.response(testserver.server,
{url: '/b/'+b.id},
{status: 200});
});
};
11 changes: 11 additions & 0 deletions test/testsuite/testsuite.js
@@ -0,0 +1,11 @@
var http = require('http');
var testserver = require('testserver');

exports.setup = function(fn) {
testserver.init('unique_id_1');
fn();
};

exports.teardown = function() {
testserver.fini();
};

0 comments on commit 2cd2684

Please sign in to comment.