[Python-Dev] test___all__ polluting sys.modules?

Eli Bendersky eliben at gmail.com
Sun Dec 30 15:06:30 CET 2012

On Sun, Dec 30, 2012 at 5:54 AM, Stefan Krah <stefan at bytereef.org> wrote:

> Eli Bendersky <eliben at 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()
> test_decimal ruthlessly switches sys.modules['decimal'] many times. At the
> end of all tests there is a sanity check that asserts that the number of
> changes were in fact balanced.

Thank you, I'll try this. I'm also experimenting with other approaches.

By the way, from clean default checkout:

$ ./python -mtest test___all__ test_int
[1/2] test___all__
[2/2] test_int
test test_int failed -- Traceback (most recent call last):
  File "/home/eliben/python-src/default/Lib/test/test_int.py", line 236, in
    self.assertRaises(TypeError, int, base=10)
AssertionError: TypeError not raised by int

1 test OK.
1 test failed:

Should this really fail? [I haven't investigated the root cause yet]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20121230/276d90fa/attachment.html>

More information about the Python-Dev mailing list