1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
# -*- coding: utf-8 -*-
"""Unit tests for help formatter
Author: G.J.J. van den Burg
License: See the LICENSE file.
Copyright: 2021, G.J.J. van den Burg
This file is part of Wilderness.
"""
import sys
import unittest
from wilderness.argparse_wrappers import ArgumentParser
from wilderness.formatter import HelpFormatter
class HelpFormatterTestCase(unittest.TestCase):
maxDiff = None
def test__fill_text_1(self):
text = "Hello\nWorld"
formatter = HelpFormatter("test")
out = formatter._fill_text(text, 80, "")
exp = "Hello\nWorld"
self.assertEqual(out, exp)
def test__fill_text_2(self):
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
formatter = HelpFormatter("test")
out = formatter._fill_text(text, 65, "")
explines = [
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do",
"eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut",
"enim ad minim veniam, quis nostrud exercitation ullamco laboris",
"nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in",
"reprehenderit in voluptate velit esse cillum dolore eu fugiat",
"nulla pariatur. Excepteur sint occaecat cupidatat non proident,",
"sunt in culpa qui officia deserunt mollit anim id est laborum.",
]
exp = "\n".join(explines)
self.assertEqual(out, exp)
def test__fill_text_3(self):
text = (
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
"eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut "
"enim ad minim veniam, quis nostrud exercitation ullamco laboris "
"nisi ut aliquip ex ea commodo consequat.\n\nDuis aute irure "
"dolor in reprehenderit in voluptate velit esse cillum dolore eu "
"fugiat nulla pariatur. Excepteur sint occaecat cupidatat non "
"proident, sunt in culpa qui officia deserunt mollit anim id est "
"laborum."
)
formatter = HelpFormatter("test")
out = formatter._fill_text(text, 65, "")
explines = [
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do",
"eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut",
"enim ad minim veniam, quis nostrud exercitation ullamco laboris",
"nisi ut aliquip ex ea commodo consequat.",
"",
"Duis aute irure dolor in reprehenderit in voluptate velit esse",
"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat",
"cupidatat non proident, sunt in culpa qui officia deserunt mollit",
"anim id est laborum.",
]
exp = "\n".join(explines)
self.assertEqual(out, exp)
def test__format_actions_usage_1(self):
parser = ArgumentParser(prog="test", formatter_class=HelpFormatter)
grp = parser.add_mutually_exclusive_group()
grp.add_argument(
"-p", "--plain", action="store_true", help="plain help"
)
grp.add_argument("-j", "--json", action="store_true", help="json help")
thehelp = parser.format_help()
minor = sys.version_info.minor
optstr = "options" if minor >= 10 else "optional arguments"
exp = (
f"usage: test [-p | --plain | -j | --json]\n\n{optstr}:\n"
" -h, --help show this help message and exit\n"
" -p, --plain plain help\n"
" -j, --json json help\n"
)
self.assertEqual(thehelp, exp)
if __name__ == "__main__":
unittest.main()
|