Some tests did not pass on repeated calls (regrtest -R::)
Perform additional cleanup, mostly deleting from sys.modules, or clearing the warnings registry.
This commit is contained in:
parent
6f34109384
commit
607bff1ebe
|
@ -683,6 +683,11 @@ def dash_R_cleanup(fs, ps, pic, abcs):
|
|||
import struct, filecmp
|
||||
from distutils.dir_util import _path_created
|
||||
|
||||
# Clear the warnings registry, so they can be displayed again
|
||||
for mod in sys.modules.values():
|
||||
if hasattr(mod, '__warningregistry__'):
|
||||
del mod.__warningregistry__
|
||||
|
||||
# Restore some original values.
|
||||
warnings.filters[:] = fs
|
||||
copy_reg.dispatch_table.clear()
|
||||
|
|
|
@ -35,6 +35,10 @@ class FrozenTests(unittest.TestCase):
|
|||
self.assertEquals(stdout.getvalue(),
|
||||
'Hello world...\nHello world...\nHello world...\n')
|
||||
|
||||
del sys.modules['__hello__']
|
||||
del sys.modules['__phello__']
|
||||
del sys.modules['__phello__.spam']
|
||||
|
||||
|
||||
def test_main():
|
||||
run_unittest(FrozenTests)
|
||||
|
|
|
@ -46,12 +46,20 @@ class Test(unittest.TestCase):
|
|||
|
||||
def setUp(self):
|
||||
self.root = None
|
||||
self.pkgname = None
|
||||
self.syspath = list(sys.path)
|
||||
|
||||
def tearDown(self):
|
||||
sys.path[:] = self.syspath
|
||||
cleanout(self.root)
|
||||
|
||||
# delete all modules concerning the tested hiearchy
|
||||
if self.pkgname:
|
||||
modules = [name for name in sys.modules
|
||||
if self.pkgname in name.split('.')]
|
||||
for name in modules:
|
||||
del sys.modules[name]
|
||||
|
||||
def run_code(self, code):
|
||||
exec(textwrap.dedent(code), globals(), {"self": self})
|
||||
|
||||
|
@ -74,6 +82,8 @@ class Test(unittest.TestCase):
|
|||
f.write('\n')
|
||||
f.close()
|
||||
self.root = root
|
||||
# package name is the name of the first item
|
||||
self.pkgname = descr[0][0]
|
||||
|
||||
def test_1(self):
|
||||
hier = [("t1", None), ("t1 __init__"+os.extsep+"py", "")]
|
||||
|
@ -223,8 +233,8 @@ class Test(unittest.TestCase):
|
|||
|
||||
def test_7(self):
|
||||
hier = [
|
||||
("t7"+os.extsep+"py", ""),
|
||||
("t7", None),
|
||||
("t7"+os.extsep+"py", ""),
|
||||
("t7 __init__"+os.extsep+"py", ""),
|
||||
("t7 sub"+os.extsep+"py",
|
||||
"raise RuntimeError('Shouldnt load sub.py')"),
|
||||
|
|
|
@ -48,6 +48,8 @@ class PkgutilTests(unittest.TestCase):
|
|||
res2 = pkgutil.get_data(pkg, 'sub/res.txt')
|
||||
self.assertEqual(res2, RESOURCE_DATA)
|
||||
|
||||
del sys.modules[pkg]
|
||||
|
||||
def test_getdata_zipfile(self):
|
||||
zip = 'test_getdata_zipfile.zip'
|
||||
pkg = 'test_getdata_zipfile'
|
||||
|
@ -74,6 +76,8 @@ class PkgutilTests(unittest.TestCase):
|
|||
self.assertEqual(res2, RESOURCE_DATA)
|
||||
del sys.path[0]
|
||||
|
||||
del sys.modules[pkg]
|
||||
|
||||
class PkgutilPEP302Tests(unittest.TestCase):
|
||||
|
||||
class MyTestLoader(object):
|
||||
|
|
|
@ -21,8 +21,9 @@ class ProfileTest(unittest.TestCase):
|
|||
def do_profiling(cls):
|
||||
results = []
|
||||
prof = cls.profilerclass(timer, 0.001)
|
||||
start_timer = timer()
|
||||
prof.runctx("testfunc()", globals(), locals())
|
||||
results.append(timer())
|
||||
results.append(timer() - start_timer)
|
||||
for methodname in cls.methodnames:
|
||||
s = StringIO()
|
||||
stats = pstats.Stats(prof, stream=s)
|
||||
|
@ -33,7 +34,7 @@ class ProfileTest(unittest.TestCase):
|
|||
|
||||
def test_cprofile(self):
|
||||
results = self.do_profiling()
|
||||
self.assertEqual(results[0], 43000)
|
||||
self.assertEqual(results[0], 1000)
|
||||
for i, method in enumerate(self.methodnames):
|
||||
self.assertEqual(results[i+1], self.expected_output[method],
|
||||
"Stats.%s output for %s doesn't fit expectation!" %
|
||||
|
|
|
@ -101,12 +101,6 @@ class TestWarnings(unittest.TestCase):
|
|||
|
||||
|
||||
def test_main(verbose=None):
|
||||
# Obscure hack so that this test passes after reloads or repeated calls
|
||||
# to test_main (regrtest -R).
|
||||
if '__warningregistry__' in globals():
|
||||
del globals()['__warningregistry__']
|
||||
if hasattr(sys, '__warningregistry__'):
|
||||
del sys.__warningregistry__
|
||||
test_support.run_unittest(__name__)
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -391,6 +391,8 @@ class PyWarningsDisplayTests(BaseTest, WarningsDisplayTests):
|
|||
|
||||
|
||||
def test_main():
|
||||
py_warnings.onceregistry.clear()
|
||||
c_warnings.onceregistry.clear()
|
||||
test_support.run_unittest(CFilterTests,
|
||||
PyFilterTests,
|
||||
CWarnTests,
|
||||
|
|
Loading…
Reference in New Issue