Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

67 lines (54 sloc) 1.86 KB
import os
import sys
import unittest
# make sure we import from the right place
script_path = os.path.abspath(os.path.dirname(sys.argv[0]))
sys.path.insert(0, script_path)
test_base_path = os.path.join(script_path, 'src')
sys.path.insert(1, test_base_path)
import test
from DD import DD
cfg = test.Options()
cfg.verbosity = 0
cfg.basedir = test_base_path
cfg.unit_tests = True
def write(line, *args):
if args:
line = line % args
sys.stderr.write(line + '\n')
def find_tests():
test_files = test.get_test_files(cfg)
return test.get_test_cases(test_files, cfg)
class DDTester(DD):
def _test(self, test_cases):
if not test_cases:
return self.PASS
write('Running subset of %d tests %s',
len(test_cases), self.coerce(test_cases))
test_cases = [ item[-1] for item in test_cases ]
pid = os.fork()
if not pid:
# child executes tests
runner = test.CustomTestRunner(cfg, None)
suite = unittest.TestSuite()
os._exit( not )
cid, retval = os.waitpid(pid, 0)
if retval:
write('exit status: %d, signal: %d', retval >> 8, retval % 0xFF)
if (retval % 0xFF) > 2: # signal received?
return self.FAIL
return self.PASS
def coerce(self, test_cases):
if not test_cases:
return '[]'
test_cases = [ item[-1] for item in test_cases ]
return '[%s .. %s]' % (test_cases[0].id(), test_cases[-1].id())
def dd_tests():
tests = find_tests()
write('Found %d tests', len(tests))
dd = DDTester()
min_tests = dd.ddmin( list(enumerate(tests)) )
return [ item[-1] for item in min_tests ]
if __name__ == '__main__':
write('Failing tests:\n%s', '\n'.join([ for test in dd_tests()]))
Jump to Line
Something went wrong with that request. Please try again.