[Python-checkins] cpython (3.4): Fix test_cmd_line not to fail if PYTHONHASHSEED is set to a fixed seed
gregory.p.smith
python-checkins at python.org
Sun Dec 13 23:15:37 EST 2015
https://hg.python.org/cpython/rev/cefcbe1b934f
changeset: 99565:cefcbe1b934f
branch: 3.4
user: Gregory P. Smith <greg at krypto.org>
date: Sun Dec 13 20:01:44 2015 -0800
summary:
Fix test_cmd_line not to fail if PYTHONHASHSEED is set to a fixed seed
due to test_hash_randomization expecting a different seed per process.
files:
Lib/test/test_cmd_line.py | 18 +++++++++++++++---
1 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py
--- a/Lib/test/test_cmd_line.py
+++ b/Lib/test/test_cmd_line.py
@@ -402,12 +402,24 @@
# Verify that -R enables hash randomization:
self.verify_valid_flag('-R')
hashes = []
- for i in range(2):
+ if os.environ.get('PYTHONHASHSEED', 'random') != 'random':
+ env = dict(os.environ) # copy
+ # We need to test that it is enabled by default without
+ # the environment variable enabling it for us.
+ del env['PYTHONHASHSEED']
+ env['__cleanenv'] = '1' # consumed by assert_python_ok()
+ else:
+ env = {}
+ for i in range(3):
code = 'print(hash("spam"))'
- rc, out, err = assert_python_ok('-c', code)
+ rc, out, err = assert_python_ok('-c', code, **env)
self.assertEqual(rc, 0)
hashes.append(out)
- self.assertNotEqual(hashes[0], hashes[1])
+ hashes = sorted(set(hashes)) # uniq
+ # Rare chance of failure due to 3 random seeds honestly being equal.
+ self.assertGreater(len(hashes), 1,
+ msg='3 runs produced an identical random hash '
+ ' for "spam": {}'.format(hashes))
# Verify that sys.flags contains hash_randomization
code = 'import sys; print("random is", sys.flags.hash_randomization)'
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list