[Tim] > FWIW, this is a minimal failing set of tests to run: > > test___all__ > test_site > test_strptime More, if you comment out the self.check_all("_strptime") line in test__all__, the test passes. If you comment out every self.check_all line except for that one, the test fails. If you add this line after that one, the test passes: del sys.modules["_strptime"] The regrtest framework itself tries to "unload" modules imported by tests, but it only does so for modules from the test *package*. So _strptime remains loaded after test___all__, with the time module it had at that time. I really don't grok what test_site is doing, so am at a loss to explain how it manages to create a distinct time module. Ah! It doesn't! It's because PthFile.cleanup does del sys.modules[self.imported] That destroys the time module that was in sys.modules before test_site began running. That's the problem. Then every module that previously imported time via test___all__ has a time module distinct from any time module imported after test_site. Get rid of that line. Or if, you want to be anally correct, nuke self.imported in cleanup() if and only if self.imported not in sys.modules before PthFile imported self.imported Note that the assert self.imported in sys.modules in test() doesn't do anything useful right now, because time was in sys.modules before the test ran, so it's not testing that the .pth actually imported time. Note too that unittests should not use assert -- they don't test anything then in an -O run. You can use self.assert_(self.imported in sys.modules) instead, and that works fine with -O.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4