kopia lustrzana https://github.com/micropython/micropython-lib
66 wiersze
1.4 KiB
Python
66 wiersze
1.4 KiB
Python
import sys
|
|
import io
|
|
import unittest
|
|
import gc
|
|
import contextlib
|
|
|
|
|
|
TESTFN = '@test'
|
|
|
|
def run_unittest(*classes):
|
|
suite = unittest.TestSuite()
|
|
for c in classes:
|
|
if isinstance(c, str):
|
|
c = __import__(c)
|
|
for name in dir(c):
|
|
obj = getattr(c, name)
|
|
if isinstance(obj, type) and issubclass(obj, unittest.TestCase):
|
|
suite.addTest(obj)
|
|
else:
|
|
suite.addTest(c)
|
|
runner = unittest.TestRunner()
|
|
result = runner.run(suite)
|
|
|
|
def can_symlink():
|
|
return False
|
|
|
|
def skip_unless_symlink(test):
|
|
"""Skip decorator for tests that require functional symlink"""
|
|
ok = can_symlink()
|
|
msg = "Requires functional symlink implementation"
|
|
return test if ok else unittest.skip(msg)(test)
|
|
|
|
def create_empty_file(name):
|
|
open(name, "w").close()
|
|
|
|
@contextlib.contextmanager
|
|
def disable_gc():
|
|
have_gc = gc.isenabled()
|
|
gc.disable()
|
|
try:
|
|
yield
|
|
finally:
|
|
if have_gc:
|
|
gc.enable()
|
|
|
|
def gc_collect():
|
|
gc.collect()
|
|
gc.collect()
|
|
gc.collect()
|
|
|
|
@contextlib.contextmanager
|
|
def captured_output(stream_name):
|
|
org = getattr(sys, stream_name)
|
|
buf = io.StringIO()
|
|
setattr(sys, stream_name, buf)
|
|
try:
|
|
yield buf
|
|
finally:
|
|
setattr(sys, stream_name, org)
|
|
|
|
def captured_stderr():
|
|
return captured_output("stderr")
|
|
|
|
def requires_IEEE_754(f):
|
|
return f
|