mirror of
https://github.com/zaphar/test-tap.git
synced 2025-07-22 20:29:49 -04:00
cleanup: This base class is no longer desirable.
This commit is contained in:
parent
726dd2778f
commit
5af40106dd
212
src/Class.js
212
src/Class.js
@ -1,212 +0,0 @@
|
|||||||
if (typeof Test == 'undefined') {
|
|
||||||
Test = {};
|
|
||||||
}
|
|
||||||
if (typeof Test.TAP == 'undefined') {
|
|
||||||
if (typeof JSAN != 'undefined') {
|
|
||||||
JSAN.use('Test.TAP');
|
|
||||||
} else {
|
|
||||||
throw new ReferenceError('Test.TAP.Runner is dependent on Test.TAP');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
=head1 NAME
|
|
||||||
|
|
||||||
Test.TAP.Runner - A Simple Test Harness for Test.TAP
|
|
||||||
|
|
||||||
=head1 Synopsis
|
|
||||||
|
|
||||||
var r = new Test.TAP.Runner().
|
|
||||||
|
|
||||||
var testobj = {};
|
|
||||||
testobj.runtests = function() {
|
|
||||||
var t = new Test.TAP();
|
|
||||||
t.plan(2);
|
|
||||||
t.ok(true, 'true is true');
|
|
||||||
t.is(1, 1, 'one is one');
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
r.run_tests(obj);
|
|
||||||
=cut
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
Test.TAP.Class = function() {
|
|
||||||
var self = this;
|
|
||||||
// call our superclasses constructor as well
|
|
||||||
Test.TAP.apply(self, arguments);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
=head1 Methods
|
|
||||||
|
|
||||||
=head2 out()
|
|
||||||
|
|
||||||
internal method inherited from L<Test.TAP> see L<Test.TAP> for useage
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
||||||
=head2 diag()
|
|
||||||
|
|
||||||
internal method inherited from L<Test.TAP> see L<Test.TAP> for useage
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
||||||
=head2 run_it()
|
|
||||||
|
|
||||||
runs the tests in a test object and reports on the results
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
Test.TAP.Class.prototype = new Test.TAP();
|
|
||||||
|
|
||||||
Test.TAP.Class.prototype.run_it = function(method) {
|
|
||||||
var self = this;
|
|
||||||
var fun = self[method];
|
|
||||||
self.diag("trying to run "+method+" tests");
|
|
||||||
|
|
||||||
// remember the globals that existed before the test execution
|
|
||||||
var originalGlobal = {};
|
|
||||||
var top = self.top();
|
|
||||||
for(var name in top ) {
|
|
||||||
originalGlobal[name] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (typeof this.setup == 'function') {
|
|
||||||
self.setup();
|
|
||||||
}
|
|
||||||
fun.call(self);
|
|
||||||
if (typeof this.teardown == 'function') {
|
|
||||||
self.teardown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch(err) {
|
|
||||||
this.diag("Test Suite Crashed!!! (" + err + ")");
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
// Delete globals which were created during test execution
|
|
||||||
// THis avoid conflicts between tests when running multiple tests in a row
|
|
||||||
for(var name in top) {
|
|
||||||
if(!originalGlobal[name]) {
|
|
||||||
try {
|
|
||||||
delete top[name]
|
|
||||||
} catch (e) {
|
|
||||||
// Delete threw an error, so just assign undefined
|
|
||||||
top[name] = undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
=head2 run_tests()
|
|
||||||
|
|
||||||
r.run_tests(obj1, obj2);
|
|
||||||
|
|
||||||
runs the tests in a list of test objects and reports on the results
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
Test.TAP.Class.prototype.run_tests = function() {
|
|
||||||
var self = this;
|
|
||||||
var counter = 0;
|
|
||||||
|
|
||||||
var methods = [];
|
|
||||||
for (m in self) {
|
|
||||||
if (m.match(/^test.+/)) {
|
|
||||||
methods.push(m)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.finished = true;
|
|
||||||
|
|
||||||
var onFinish = function () {
|
|
||||||
if (self.planned > self.counter) {
|
|
||||||
self.diag('looks like you planned ' + self.planned + ' tests but only ran '
|
|
||||||
+ self.counter + ' tests');
|
|
||||||
} else if (self.planned < self.counter) {
|
|
||||||
self.diag('looks like you planned ' + self.planned + ' tests but ran '
|
|
||||||
+ (self.counter - self.planned) + ' tests extra');
|
|
||||||
}
|
|
||||||
self.diag('ran ' + self.counter + ' tests out of ' + self.planned);
|
|
||||||
self.diag('passed ' + self.passed + ' tests out of ' + self.planned)
|
|
||||||
self.diag('failed ' + self.failed + ' tests out of ' + self.planned)
|
|
||||||
}
|
|
||||||
|
|
||||||
var count = 0;
|
|
||||||
var testRunInterval
|
|
||||||
if (typeof setInterval == 'undefined') {
|
|
||||||
setInterval = function() {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (typeof clearInterval == 'undefined') {
|
|
||||||
clearInterval = function() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var run = function () {
|
|
||||||
if(self.finished) {
|
|
||||||
if(count > 0) {
|
|
||||||
if(self.on_finished) {
|
|
||||||
onFinish()
|
|
||||||
self.on_finished()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(methods.length == 0) {
|
|
||||||
clearInterval(testRunInterval)
|
|
||||||
if(self.on_finished_all) {
|
|
||||||
self.on_finished_all()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
self.finished = false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if(self.planned == "no_plan"
|
|
||||||
|| self.planned == 0
|
|
||||||
|| self.counter >= self.planned) {
|
|
||||||
self.finished = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
testRunInterval = setInterval(run, 50)
|
|
||||||
run();
|
|
||||||
var methodname;
|
|
||||||
while (methodname = methods.shift()) {
|
|
||||||
self.run_it(methodname);
|
|
||||||
count++
|
|
||||||
}
|
|
||||||
run();
|
|
||||||
|
|
||||||
return self;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
=head1 SEE ALSO
|
|
||||||
|
|
||||||
L<Test.Simple>
|
|
||||||
L<Test.AnotherWay>
|
|
||||||
|
|
||||||
=head1 AUTHOR
|
|
||||||
|
|
||||||
Jeremy Wall L<< jeremy@marzhillstudios.com >>
|
|
||||||
|
|
||||||
=head1 COPYRIGHT AND LICENSE
|
|
||||||
|
|
||||||
Copyright (C) 2007 Jeremy Wall
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or modify
|
|
||||||
it under the same terms as Perl itself, either Perl version 5.8.4 or,
|
|
||||||
at your option, any later version of Perl 5 you may have available.
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
||||||
*/
|
|
Loading…
x
Reference in New Issue
Block a user