diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2014-01-09 21:14:27 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2014-01-09 21:14:27 (GMT) |
commit | f451112413b9ea8940c8c3a902cddf701c62d17f (patch) | |
tree | 385735b78ad865fde1d615d27041c356acefbf00 /Lib/test | |
parent | 32c4915b239f435fd6c063b7f507b289a7a55f75 (diff) | |
download | cpython-f451112413b9ea8940c8c3a902cddf701c62d17f.zip cpython-f451112413b9ea8940c8c3a902cddf701c62d17f.tar.gz cpython-f451112413b9ea8940c8c3a902cddf701c62d17f.tar.bz2 |
Issue #13107: argparse and optparse no longer raises an exception when output
a help on environment with too small COLUMNS. Based on patch by
Elazar Gershuni.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_argparse.py | 54 | ||||
-rw-r--r-- | Lib/test/test_optparse.py | 35 |
2 files changed, 89 insertions, 0 deletions
diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py index c06c940..9cb15c7 100644 --- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -2973,6 +2973,60 @@ class TestHelpBiggerOptionals(HelpTestCase): 0.1 ''' +class TestShortColumns(HelpTestCase): + '''Test extremely small number of columns. + + TestCase prevents "COLUMNS" from being too small in the tests themselves, + but we don't want any exceptions thrown in such case. Only ugly representation. + ''' + def setUp(self): + env = support.EnvironmentVarGuard() + env.set("COLUMNS", '15') + self.addCleanup(env.__exit__) + + parser_signature = TestHelpBiggerOptionals.parser_signature + argument_signatures = TestHelpBiggerOptionals.argument_signatures + argument_group_signatures = TestHelpBiggerOptionals.argument_group_signatures + usage = '''\ + usage: PROG + [-h] + [-v] + [-x] + [--y Y] + foo + bar + ''' + help = usage + '''\ + + DESCRIPTION + + positional arguments: + foo + FOO HELP + bar + BAR HELP + + optional arguments: + -h, --help + show this + help + message and + exit + -v, --version + show + program's + version + number and + exit + -x + X HELP + --y Y + Y HELP + + EPILOG + ''' + version = TestHelpBiggerOptionals.version + class TestHelpBiggerOptionalGroups(HelpTestCase): """Make sure that argument help aligns when options are longer""" diff --git a/Lib/test/test_optparse.py b/Lib/test/test_optparse.py index 78de278..eaee504 100644 --- a/Lib/test/test_optparse.py +++ b/Lib/test/test_optparse.py @@ -1443,6 +1443,39 @@ Options: -h, --help show this help message and exit """ +_expected_very_help_short_lines = """\ +Usage: bar.py [options] + +Options: + -a APPLE + throw + APPLEs at + basket + -b NUM, --boo=NUM + shout + "boo!" NUM + times (in + order to + frighten + away all + the evil + spirits + that cause + trouble and + mayhem) + --foo=FOO + store FOO + in the foo + list for + later + fooing + -h, --help + show this + help + message and + exit +""" + class TestHelp(BaseTest): def setUp(self): self.parser = self.make_parser(80) @@ -1500,6 +1533,8 @@ class TestHelp(BaseTest): # we look at $COLUMNS. self.parser = self.make_parser(60) self.assertHelpEquals(_expected_help_short_lines) + self.parser = self.make_parser(0) + self.assertHelpEquals(_expected_very_help_short_lines) def test_help_unicode(self): self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE) |