TestHelp.make_parser(): This was making a permanent change to
os.environ (setting envar COLUMNS), which at least caused test_float_default() to fail if the tests were run more than once. This repairs the test_optparse -R failures Neal reported on python-dev. It also explains some seemingly bizarre test_optparse failures we saw a couple weeks ago on the buildbots, when test_optparse failed due to test_file failing to clean up after itself, and then test_optparse failed in an entirely different way when regrtest's -w option ran test_optparse a second time. It's now obvious that make_parser() permanently changing os.environ was responsible for the second half of that.
This commit is contained in:
parent
c314ac5492
commit
e7d7caa17a
|
@ -1460,8 +1460,19 @@ class TestHelp(BaseTest):
|
|||
make_option("--foo", action="append", type="string", dest='foo',
|
||||
help="store FOO in the foo list for later fooing"),
|
||||
]
|
||||
# The parser constructor looks at the COLUMNS envar. We need to
|
||||
# restore the original value after the parser is constructed, else
|
||||
# that's a permanent change possibly affecting other tests, and
|
||||
# definitely affecting these tests when they're run multiple times.
|
||||
orig_columns = os.environ.get('COLUMNS')
|
||||
os.environ['COLUMNS'] = str(columns)
|
||||
return InterceptingOptionParser(option_list=options)
|
||||
try:
|
||||
return InterceptingOptionParser(option_list=options)
|
||||
finally:
|
||||
if orig_columns is None:
|
||||
del os.environ['COLUMNS']
|
||||
else:
|
||||
os.environ['COLUMNS'] = orig_columns
|
||||
|
||||
def assertHelpEquals(self, expected_output):
|
||||
if type(expected_output) is types.UnicodeType:
|
||||
|
|
Loading…
Reference in New Issue