You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
5 years ago
|
import unittest
|
||
|
import warnings
|
||
|
|
||
|
from gevent.testing import modules
|
||
|
from gevent.testing import main
|
||
|
from gevent.testing.sysinfo import NON_APPLICABLE_SUFFIXES
|
||
|
from gevent.testing import six
|
||
|
|
||
|
|
||
|
def make_exec_test(path, module):
|
||
|
|
||
|
def test(_):
|
||
|
with open(path, 'rb') as f:
|
||
|
src = f.read()
|
||
|
with warnings.catch_warnings():
|
||
|
warnings.simplefilter('ignore', DeprecationWarning)
|
||
|
try:
|
||
|
six.exec_(src, {'__file__': path})
|
||
|
except ImportError:
|
||
|
if module in modules.OPTIONAL_MODULES:
|
||
|
raise unittest.SkipTest("Unable to import optional module %s" % module)
|
||
|
raise
|
||
|
|
||
|
name = "test_" + module.replace(".", "_")
|
||
|
test.__name__ = name
|
||
|
return test
|
||
|
|
||
|
def make_all_tests(cls):
|
||
|
for path, module in modules.walk_modules(recursive=True, check_optional=False):
|
||
|
if module.endswith(NON_APPLICABLE_SUFFIXES):
|
||
|
continue
|
||
|
test = make_exec_test(path, module)
|
||
|
setattr(cls, test.__name__, test)
|
||
|
return cls
|
||
|
|
||
|
|
||
|
@make_all_tests
|
||
|
class Test(unittest.TestCase):
|
||
|
pass
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|