mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
|
#!/usr/bin/env python
|
||
|
|
||
|
"""
|
||
|
run mozbase tests
|
||
|
"""
|
||
|
|
||
|
import imp
|
||
|
import manifestparser
|
||
|
import os
|
||
|
import sys
|
||
|
import unittest
|
||
|
|
||
|
here = os.path.dirname(os.path.abspath(__file__))
|
||
|
|
||
|
def unittests(path):
|
||
|
"""return the unittests in a .py file"""
|
||
|
|
||
|
path = os.path.abspath(path)
|
||
|
unittests = []
|
||
|
assert os.path.exists(path)
|
||
|
directory = os.path.dirname(path)
|
||
|
sys.path.insert(0, directory) # insert directory into path for top-level imports
|
||
|
modname = os.path.splitext(os.path.basename(path))[0]
|
||
|
module = imp.load_source(modname, path)
|
||
|
sys.path.pop(0) # remove directory from global path
|
||
|
loader = unittest.TestLoader()
|
||
|
suite = loader.loadTestsFromModule(module)
|
||
|
for test in suite:
|
||
|
unittests.append(test)
|
||
|
return unittests
|
||
|
|
||
|
def main(args=sys.argv[1:]):
|
||
|
|
||
|
# read the manifest
|
||
|
if args:
|
||
|
manifests = args
|
||
|
else:
|
||
|
manifests = [os.path.join(here, 'test-manifest.ini')]
|
||
|
missing = []
|
||
|
for manifest in manifests:
|
||
|
# ensure manifests exist
|
||
|
if not os.path.exists(manifest):
|
||
|
missing.append(manifest)
|
||
|
assert not missing, 'manifest%s not found: %s' % ((len(manifests) == 1 and '' or 's'), ', '.join(missing))
|
||
|
manifest = manifestparser.TestManifest(manifests=manifests)
|
||
|
|
||
|
# gather the tests
|
||
|
tests = manifest.active_tests()
|
||
|
unittestlist = []
|
||
|
for test in tests:
|
||
|
unittestlist.extend(unittests(test['path']))
|
||
|
|
||
|
# run the tests
|
||
|
suite = unittest.TestSuite(unittestlist)
|
||
|
runner = unittest.TextTestRunner()
|
||
|
results = runner.run(suite)
|
||
|
|
||
|
# exit according to results
|
||
|
sys.exit((results.failures or results.errors) and 1 or 0)
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|