On Mon, 31 Dec 2012 00:38:47 +1000, Nick Coghlan <ncogh...@gmail.com> wrote: > On Mon, Dec 31, 2012 at 12:19 AM, Eli Bendersky <eli...@gmail.com> wrote: > > On Sun, Dec 30, 2012 at 5:54 AM, Stefan Krah <ste...@bytereef.org> wrote: > >> > >> Eli Bendersky <eli...@gmail.com> wrote: > >> > Yes, this is the solution currently used in test_xml_etree. However, > >> > once > >> > pickling tests are added things stop working. Pickle uses __import__ to > >> > import > >> > the module a class belongs to, bypassing all such trickery. So if > >> > test___all__ > >> > got _elementtree into sys.modules, pickle's __import__ finds it even if > >> > all the > >> > tests in test_xml_etree manage to ignore it for the Python version > >> > because they > >> > use import_fresh_module. > >> > >> I ran into the same problem for test_decimal. The only thing that appears > >> to work is to set sys.modules['decimal'] explicitly before calling > >> dumps()/loads(). See: > >> > >> PythonAPItests.test_pickle() > >> ContextAPItests.test_pickle() > > > > Yes, this seems to have done the trick. Thanks for the suggestion. > > It may be worth offering a context manager/decorator equivalent to > "import_fresh_module".
I suggested making import_fresh_module a context manager in the issue that Eli opened about test___all__. > > I'm still curious about the test-in-clean-env question though. > > As Stefan noted, the main advantage we get is that sometimes the > failure to clean up properly is in the standard lib code rather than > the tests, and with complete isolation we'd be less likely to notice > the problem. > > Once you combine that with the fact that rearchitecting regrtest to > work that way would be quite a bit of work, the motivation to make it > happen goes way down. > > However, specifically spinning out the "import the world" tests like > test_pydoc and test___all__ to a separate process might be worth the > effort. Adding something to regertest (or unittest?) so that certain nominated test modules are run in a subprocess has been discussed previously, but so far no one has stepped up to implement it :) (I think this came up originally for test_site, but I don't remember for sure.) --David _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com