diff -r 0e70bf1f32a3 Lib/argparse.py --- a/Lib/argparse.py Wed Sep 11 01:15:40 2013 -0500 +++ b/Lib/argparse.py Wed Sep 11 21:35:55 2013 +0300 @@ -610,10 +610,14 @@ self._dedent() def _split_lines(self, text, width): + if width < 30: + return [text] text = self._whitespace_matcher.sub(' ', text).strip() return _textwrap.wrap(text, width) def _fill_text(self, text, width, indent): + if width < 30: + return text text = self._whitespace_matcher.sub(' ', text).strip() return _textwrap.fill(text, width, initial_indent=indent, subsequent_indent=indent) diff -r 0e70bf1f32a3 Lib/test/test_argparse.py --- a/Lib/test/test_argparse.py Wed Sep 11 01:15:40 2013 -0500 +++ b/Lib/test/test_argparse.py Wed Sep 11 21:35:55 2013 +0300 @@ -2924,6 +2924,8 @@ return parser def _test(self, tester, parser_text): + if 'dry_run' in bodydict: + return expected_text = getattr(tester, self.func_suffix) expected_text = textwrap.dedent(expected_text) if expected_text != parser_text: @@ -3005,7 +3007,25 @@ 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. + ''' + dry_run = True + def setUp(self): + env = support.EnvironmentVarGuard() + env.set("COLUMNS", '1') + self.addCleanup(env.__exit__) + + parser_signature = TestHelpBiggerOptionals.parser_signature + argument_signatures = TestHelpBiggerOptionals.argument_signatures + argument_group_signatures = TestHelpBiggerOptionals.argument_group_signatures + usage = TestHelpBiggerOptionals.usage + help = TestHelpBiggerOptionals.help + version = TestHelpBiggerOptionals.version + class TestHelpBiggerOptionalGroups(HelpTestCase): """Make sure that argument help aligns when options are longer"""