Hi everyone. I just merged pull request https://github.com/sympy/sympy/pull/1379, which enables hash randomization by default in the test runner. What this means is that if you are running Python 2.6.8, 2.7.3, 3.2.3, or 3.3, then you are going to start seeing a lot of test failures. Hash randomization randomizes the hash values of strings, which results in random hash values of all SymPy objects. Because we still rely on hash values for ordering in a lot of places, this means that there are a lot of failures when it is enabled.
In order to facilitate sane testing with this, hash randomization is seeded. However, the only way to seed it is to set the environment variable PYTHONHASHSEED before starting Python. Therefore, when the tests are run in one of the above Python versions, they are not run in a separate subprocess. If this is a problem for anyone, or if you desire to disable hash randomization, you can run the tests with ./bin/test --no-subprocess or ./bin/doctest --no-subprocess. Note that in all Python versions after 3.3 it will be enabled by default. So here are some important things to remember: - The test and doctest headers now looks like this: ============================= test process starts ============================== executable: /usr/bin/python3 (3.2.3-candidate-2) architecture: 64-bit cache: yes ground types: python random seed: 45250937 hash randomization: on (PYTHONHASHSEED=61944319) Notice the new item at the bottom, "hash randomization". The seed is given there too. If hash randomization is not supported (e.g., in Python 2.5), it will say "hash randomization: off". - To run the tests with a specific seed, set the environment variable, like $ PYTHONHASHSEED=61944319 python bin/test - Note that the tests and doctests are run in separate subprocesses with separate seeds with setup.py test. - To reproduce failures, you need both the same seed *and* the same architecture (32-bit or 64-bit), because both are used to compute hash values. - Finally, there is a pretty bad bug with some seeds where test_expand hangs. We should put priority on this, but until then, you may want to run the tests with --timeout=60 to timeout any test that runs for longer than a minute. Let's keep a log of all failures and seeds that can reproduce them at http://code.google.com/p/sympy/issues/detail?id=3272 (or if it would be easier, we could start a wiki page for them). Any help fixing any of these problems would be greatly appreciated. We cannot release until they are all fixed (and conversely, once they are all fixed, we should be able to get a release candidate out almost right away). Hopefully we won't have to resort to any XFAILing. And lastly, if anyone has any thoughts on how we could canonically order the arguments of Add and Mul independent of hash values, but is still just as fast as hash values, I would love to hear it. If we could do that, it would make fixing these errors a lot easier (on the other hand, maybe we would be better off design-wise if we made everything .arg ordering agnostic). Aaron Meurer -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to sympy@googlegroups.com. To unsubscribe from this group, send email to sympy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.