The unreadable directory is added only in the compute_size test, and error
[pysize.git] / tests / pysize_tests.py
blob00b4e82f6514e6539acc1e8a9e8f87f4db9c0ab0
1 #!/usr/bin/env python
3 import imp
4 import os
5 import tarfile
6 import unittest
7 import shutil
8 import sys
9 import optparse
11 import coverage
13 PYSIZE_EXAMPLE_PATH = '/tmp/pysize_example_dir'
14 ALL_TESTS = unittest.TestSuite()
16 def setup():
17 if not os.path.exists('/tmp/pysize_example_dir'):
18 tar = tarfile.open('pysize_example_dir.tar.bz2', 'r:bz2')
19 print 'Extracting pysize_example_dir.tar.bz2'
20 for tarinfo in tar:
21 tar.extract(tarinfo, '/tmp')
22 tar.close()
24 def cleanup():
25 print 'Removing', PYSIZE_EXAMPLE_PATH
26 shutil.rmtree(PYSIZE_EXAMPLE_PATH)
28 def import_tests():
29 py_files = [p for p in os.listdir('tests') if p.endswith('.py')]
30 tests = list(set([p[:p.index('.')] for p in py_files]))
31 for name in tests:
32 module = getattr(__import__('tests.' + name), name)
33 for test in module.TESTS:
34 suite = unittest.defaultTestLoader.loadTestsFromTestCase(test)
35 ALL_TESTS.addTest(suite)
37 def parse_cmdline():
38 parser = optparse.OptionParser()
39 parser.add_option('--keep', '-k', action='store_true', dest='keep',
40 default=False, help='keep /tmp/pysize_example_dir')
41 parser.add_option('--coverage', '-c', action='store_true', dest='coverage',
42 default=False, help='include coverage tests')
43 (options, args) = parser.parse_args()
44 if args:
45 parser.error()
46 return options
48 def start_coverage():
49 coverage.erase()
50 coverage.start()
52 def end_coverage():
53 coverage.stop()
54 modules = []
55 for (name, module) in sys.modules.iteritems():
56 if name.startswith('pysize.') and module:
57 path = '../' + name.replace('.', '/') + '.py'
58 if os.path.exists(path):
59 modules.append(module)
60 coverage.report(modules)
61 coverage.erase()
63 def main():
64 options = parse_cmdline()
65 sys.path.insert(0, '..')
66 if options.coverage:
67 start_coverage()
68 import_tests()
69 try:
70 setup()
71 unittest.main(argv=[sys.argv[0], '-v'], defaultTest='ALL_TESTS')
72 finally:
73 if options.coverage:
74 end_coverage()
75 if not options.keep:
76 cleanup()
78 if __name__ == '__main__':
79 main()