# call dtest.run
tests = []
for f in os.listdir(testdir):
+ if f == 'dtest.py': # special case
+ continue
r = re.search("^(.*)\\.py$", f)
if r is not None:
isTest = False
for test in tests:
print "Test '%s'" % test
- m = __import__(test)
- dtest.run(getattr(m, "test"),
- setup=getattr(m, "setup", None),
- report=False,
- name=test)
+ dtest.run(test, report=False)
print "%d tests" % dtest.tests
if dtest.failures:
def notracks():
pass
-def start(test):
- """start(TEST)
+def start():
+ """start()
-Start the daemon for test called TEST."""
+Start the daemon."""
global daemon
assert daemon == None
- if test == None:
- errs = sys.stderr
- else:
- errs = open("%s/%s.log" % (testroot, test), "w")
- server = None
print " starting daemon"
daemon = subprocess.Popen(["disorderd",
"--foreground",
Stop the daemon if it has not stopped already"""
global daemon
+ if daemon == None:
+ return
rc = daemon.poll()
if rc == None:
print " stopping daemon"
print " daemon has stopped"
daemon = None
-def run(test, setup=None, report=True, name=None):
+def run(module=None, report=True):
+ """dtest.run(MODULE)
+
+ Run the test in MODULE. This can be a string (in which case the module
+ will be imported) or a module object."""
global tests
tests += 1
- if setup == None:
- setup = stdtracks
+ if module is None:
+ # We're running a test stand-alone
+ import __main__
+ module = __main__
+ name = os.path.splitext(os.path.basename(sys.argv[0]))[0]
+ else:
+ # We've been passed a module or a module name
+ if type(module) == str:
+ module = __import__(module)
+ name = module.__name__
+ global errs
+ errs = open("%s.log" % name, "w")
+ setup = stdtracks
setup()
- start(name)
try:
try:
- test()
+ module.test()
except AssertionError, e:
global failures
failures += 1
def test():
"""Ask the server its version number"""
+ dtest.start()
time.sleep(2) # give the daemon a chance to start up
c = disorder.client()
v = c.version()
print "Server version: %s" % v
+ dtest.stop()
if __name__ == '__main__':
- dtest.run(test)
+ dtest.run()