Ejemplo n.º 1
0
 def get_migrations(self, reverse=False):
     finder = ModuleFinder()
     submodules_names = [
         name for name in finder.find_all_submodules(migrations)
         if self._submodule_name_valid(name)
     ]
     submodules = [
         import_module("migrations.%s" % name) for name in submodules_names
     ]
     submodules = sorted(submodules,
                         key=lambda s: s.version,
                         reverse=reverse)
     return submodules
Ejemplo n.º 2
0
def get_submodules(package):
    """Find names of all modules in `package`

    Parameters
    ----------
    package : imported Python package


    Returns
    -------
    list
        Sorted list of fully-qualified module names
    """
    mf = ModuleFinder()
    modules = sorted(["%s.%s" % (package.__name__,X) for X in mf.find_all_submodules(package) if X != "__init__"])
    return modules
Ejemplo n.º 3
0
def get_submodules(package):
    """Find names of all modules in `package`

    Parameters
    ----------
    package : imported Python package


    Returns
    -------
    list
        Sorted list of fully-qualified module names
    """
    mf = ModuleFinder()
    modules = sorted([
        "%s.%s" % (package.__name__, X)
        for X in mf.find_all_submodules(package) if X != "__init__"
    ])
    return modules
Ejemplo n.º 4
0
 def migrations_files(self, reverse=False):
     finder = ModuleFinder()
     submodules_names = [name for name in finder.find_all_submodules(pymigrations) if self._submodule_name_valid(name)]
     submodules = [import_module("pymigrations.%s" % name) for name in submodules_names]
     submodules = sorted(submodules, key=lambda s: s.version, reverse=reverse)
     return submodules
Ejemplo n.º 5
0
    def setUpClass(cls):
        # retain record indicating whether builder has been run,
        # so we run it a maximum of once, and only if we decide to do 
        # the expensive tests
        cls.built = False

        # options for sphinx-build runs
        cls.optdict = { "sourcedir" : resource_filename("sphinxcontrib.argdoc","test/testdocroot"),
                        "conf"      : resource_filename("sphinxcontrib.argdoc","test/testdocroot/conf.py"),
                        "outdir"    : tempfile.mkdtemp(prefix="argdoc"),
                       }

        cls.sphinxopts = "-Q -N -b html %(sourcedir)s %(outdir)s" % cls.optdict

        # test cases for patterns
        cls.pattern_tests = {}
        cls.pattern_tests["positional_arg"] = [("  arg1",{"arg1":"arg1","desc":None}),
                                               ("  some_arg         some_description with lots of words",
                                                { "arg1" : "some_arg",
                                                  "desc" : "some_description with lots of words"
                                                }
                                               ),
                                               ("optional arguments:",None),
                                               ("  --kwarg M",None),
                                               ("  -k M",None),
                                               ("  -k",None),
                                               ("  --kwarg",None),
                                               ("  -k, --kwarg",None),
                                               ("  -k M, --kwarg M",None),
                                               ("  -k             some_description with lots of words",None),
                                               ("  --kwarg        some_description with lots of words",None),
                                               ("  -k, --kwarg    some_description with lots of words",None),
                                               ("  -k M           some_description with lots of words",None),
                                               ("  --kwarg M      some_description with lots of words",None),
                                               ("  -k M, --kwarg M   some_description with lots of words",None),
                ]
        cls.pattern_tests["section_title"] = [("optional arguments:", ("optional arguments",)),
                                           ("optional arguments: ",None),
                                           (" optional arguments:",None),
                                           ("optional: arguments:",("optional: arguments",)),
                                           ("positional arguments:",("positional arguments",)),
                                           ("some long string (with parentheses):",("some long string (with parentheses)",)),
                                           ]
        cls.pattern_tests["arg_only"] = [
                                      ("  positional1",None),
                                      ("  po3413134",None),
                                      ("  reallyreallyreallyreallyreallyreallyreallyreallylongpositional",None),
                                      ("  --help",    ('--help', None)),
                                      ("  -h",        ('-h', None)),
                                      ("  -h, --help",('-h', '--help')),
                                      # arg + vals + desc
                                      ("  -n M, --ne M            some description", None),
                                      ("  -n M M, --ne M M        some description", None),
                                      ("  -n M M M, --ne M M M    some description", None),
                                      ("  -n M                    some description", None),
                                      ("  -n M M                  some description", None),
                                      ("  -n M M M                some description", None),
                                      ("  --ne M                  some description", None),
                                      ("  --ne M M                some description", None),
                                      ("  --ne M M M              some description", None),
                                      # arg + desc
                                      ("  -n, --ne                some description", None),
                                      ("  -n                      some description", None),
                                      ("  --ne                    some description", None),
                                      # arg + vals
                                      ("-n M, --ne M", None),
                                      ("-n M M, --ne M M", None),
                                      ("-n M M M, --ne M M M", None),
                                      ("-n M", None),
                                      ("-n M M", None),
                                      ("-n M M M", None),
                                      ("--ne M", None),
                                      ("--ne M M", None),
                                      ("--ne M M M", None),
                                      ]
        cls.pattern_tests["arg_plus_val"] = [("  -o FILENAME, --out FILENAME",('-o', ' FILENAME', '--out', ' FILENAME')),
                                           ("  -o FILENAME",('-o', ' FILENAME', None, None)),
                                           ("  --out FILENAME",('--out', ' FILENAME', None, None)),
                                           ("-o FILENAME, --out FILENAME",None),
                                           ("-o FILENAME",None),
                                           ("--out FILENAME",None),                               
                                           ("  -n M M, --num M M",('-n', ' M M', '--num', ' M M')),
                                           ("  -n M M",('-n', ' M M', None,None)),
                                           ("  --num M M",('--num', ' M M',None,None)),
                                           ("-n M M, --num M M",None),
                                           ("-n M M",None),
                                           ("--num M M",None),
                                           # arg + vals + desc
                                           ("  -n M, --ne M            some description", None),
                                           ("  -n M M, --ne M M        some description", None),
                                           ("  -n M M M, --ne M M M    some description", None),
                                           ("  -n M                    some description", None),
                                           ("  -n M M                  some description", None),
                                           ("  -n M M M                some description", None),
                                           ("  --ne M                  some description", None),
                                           ("  --ne M M                some description", None),
                                           ("  --ne M M M              some description", None),
                                           # arg + desc
                                           ("  -n, --ne                some description", None),
                                           ("  -n                      some description", None),
                                           ("  --ne                    some description", None),
                                           # arg only
                                           ("  --help", None),    
                                           ("  -h",     None),
                                           ("  -h, --help", None),
                                            ]
        cls.pattern_tests["arg_plus_desc"] = [("  -h, --help            show this help message and exit",('-h','--help','show this help message and exit')),
                                           ("  -h                    show this help message and exit",('-h',None, 'show this help message and exit')),
                                           ("  --help                show this help message and exit",('--help',None, 'show this help message and exit')),
                                           ("  -h, --help     show this help message and exit",('-h','--help','show this help message and exit')),
                                           ("  -h             show this help message and exit",('-h',None, 'show this help message and exit')),
                                           ("  --help         show this help message and exit",('--help',None, 'show this help message and exit')),
                                           ("-h, --help     show this help message and exit",None),
                                           ("-h             show this help message and exit",None),
                                           ("--help         show this help message and exit",None),
                                           # arg only
                                           ("  --help",    None),
                                           ("  -h",        None),
                                           ("  -h, --help",None),
                                           # arg + vals + desc
                                           ("  -n M, --ne M            some description", None),
                                           ("  -n M M, --ne M M        some description", None),
                                           ("  -n M M M, --ne M M M    some description", None),
                                           ("  -n M                    some description", None),
                                           ("  -n M M                  some description", None),
                                           ("  -n M M M                some description", None),
                                           ("  --ne M                  some description", None),
                                           ("  --ne M M                some description", None),
                                           ("  --ne M M M              some description", None),
                                           # arg + vals
                                           ("-n M, --ne M", None),
                                           ("-n M M, --ne M M", None),
                                           ("-n M M M, --ne M M M", None),
                                           ("-n M", None),
                                           ("-n M M", None),
                                           ("-n M M M", None),
                                           ("--ne M", None),
                                           ("--ne M M", None),
                                           ("--ne M M M", None),
                                           ]
        cls.pattern_tests["arg_plus_val_desc"] = [
             ("  -n M, --ne M            some description", {"arg1" : "-n", "val1" : " M",    "arg2" : "--ne", "val2" : " M",     "desc" : "some description"}),
             ("  -n M M, --ne M M        some description", {"arg1" : "-n", "val1" : " M M",  "arg2" : "--ne", "val2" : " M M",   "desc" : "some description"}),
             ("  -n M M M, --ne M M M    some description", {"arg1" : "-n", "val1" : " M M M","arg2" : "--ne", "val2" : " M M M", "desc" : "some description"}),
             ("  -n M                    some description", {"arg1" : "-n", "val1" : " M",    "arg2" : None,   "val2" : None,     "desc" : "some description"}),
             ("  -n M M                  some description", {"arg1" : "-n", "val1" : " M M",  "arg2" : None,   "val2" : None,     "desc" : "some description"}),
             ("  -n M M M                some description", {"arg1" : "-n", "val1" : " M M M","arg2" : None,   "val2" : None,     "desc" : "some description"}),
             ("  --ne M                  some description", {"arg1" : "--ne", "val1" : " M",     "arg2" : None,   "val2" : None, "desc" : "some description"}),
             ("  --ne M M                some description", {"arg1" : "--ne", "val1" : " M M",   "arg2" : None,   "val2" : None, "desc" : "some description"}),
             ("  --ne M M M              some description", {"arg1" : "--ne", "val1" : " M M M", "arg2" : None,   "val2" : None, "desc" : "some description"}),
             # arg + vals
             ("  -n M, --ne M            ", None),
             ("  -n M M, --ne M M        ", None),
             ("  -n M M M, --ne M M M    ", None),
             ("  -n M                    ", None),
             ("  -n M M                  ", None),
             ("  -n M M M                ", None),
             ("  --ne M                  ", None),
             ("  --ne M M                ", None),
             ("  --ne M M M              ", None),
             # arg only
             ("  --help", None),    
             ("  -h",     None),
             ("  -h, --help", None),
             # arg + desc
             ("  -n, --ne                some description", None),
             ("  -n                      some description", None),
             ("  --ne                    some description", None),
             # positional
             ("  positional1",None),
             ("  po3413134",None),
             ("  reallyreallyreallyreallyreallyreallyreallyreallylongpositional",None),
                          
                                                ]
        cls.pattern_tests["subcommand_names"] = {("  {one,another,four,five}",("one,another,four,five",)),
                                              ("  {one,another,four}",("one,another,four",)),
                                              ("  {one,another}",("one,another",)),
                                              ("  {just_one}",("just_one",)),
                                              ("{one,another,four,five}",None),
                                              ("{one,another,four}",None),
                                              ("{one,another}",None),
                                              ("{just_one}",None),                                              
                                              }
        cls.pattern_tests["continue_desc"] = []
        cls.pattern_tests["section_desc"] = [
            ("  choose one of the following:",("choose one of the following:",)),
            ("  Sometimes it is useful to group arguments that relate to each other in an",
             ("Sometimes it is useful to group arguments that relate to each other in an",)),
            ("  Description of second argument group",("Description of second argument group",)),
            ("  A special group of arguments in the `bar` subparser",("A special group of arguments in the `bar` subparser",)),
            ("  Oneworddescription",None),

             # arg + vals
             ("  -n M, --ne M            ", None),
             ("  -n M M, --ne M M        ", None),
             ("  -n M M M, --ne M M M    ", None),
             ("  -n M                    ", None),
             ("  -n M M                  ", None),
             ("  -n M M M                ", None),
             ("  --ne M                  ", None),
             ("  --ne M M                ", None),
             ("  --ne M M M              ", None),
             # arg + vals + desc
             ("  -n , --ne             some description", None),
             ("  -n  , --ne          some description", None),
             ("  -n   , --ne       some description", None),
             ("  -n                     some description", None),
             ("  -n                    some description", None),
             ("  -n                   some description", None),
             ("  --ne                   some description", None),
             ("  --ne                  some description", None),
             ("  --ne                 some description", None),
             # arg only
             ("  --help", None),    
             ("  -h",     None),
             ("  -h, --help", None),
             ("  arg1",None),
             ("  some_arg         some_description with lots of words",None),
        ]

        # test cases for test_get_col1_text, test_get_col2_text
        cls.match_dicts = [
                { "arg1" : "ARG",
                  "col1" : "``ARG``",
                  "col2" : "",
                },
                { "arg1" : "ARG",
                  "desc" : "some description",
                  "col1" : "``ARG``",
                  "col2" : "some description",
                },
                { "arg1" : "-v",
                  "val1" : "ARG",
                  "col1" : "``-v ARG``",
                  "col2" : "",
                },
                { "arg1" : "--val",
                  "val1" : "ARG",
                  "col1" : "``--val ARG``",
                  "col2" : ""
                },
                { "arg1" : "-v",
                  "val1" : "ARG",
                  "arg2" : "--val",
                  "val2" : "ARG",
                  "desc" : "some description",
                  "col1" : "``-v ARG``, ``--val ARG``",
                  "col2" : "some description",
                },
                { "arg1" : "-v",
                  "val1" : "ARG",
                  "desc" : "some description",
                  "col1" : "``-v ARG``",
                  "col2" : "some description",
                },
                { "arg1" : "--val",
                  "val1" : "ARG",
                  "desc" : "some description",
                  "col1" : "``--val ARG``",
                  "col2" : "some description",
                },
                { "arg1" : "-v",
                  "val1" : "ARG",
                  "arg2" : "--val",
                  "val2" : "ARG",
                  "desc" : "some description",
                  "col1" : "``-v ARG``, ``--val ARG``",
                  "col2" : "some description",
                },
                { "arg1" : "-v",
                  "arg2" : "--val",
                  "col1" : "``-v``, ``--val``",
                  "col2" : ""
                },
                { "arg1" : "-v",
                  "arg2" : "--val",
                  "desc" : "some description",
                  "col1" : "``-v``, ``--val``",
                  "col2" : "some description",
                },

                ]

        # automatically load module test cases for functional tests
        # testcase names mapped to (module, expected rst output, built rst output)
        cls.test_cases = {}
        mf = ModuleFinder()
        for modname in mf.find_all_submodules(sphinxcontrib.argdoc.test.cases):
            if modname not in (__name__,"__init__"):
                mod = importlib.import_module("sphinxcontrib.argdoc.test.cases.%s" % modname)
                basename = "sphinxcontrib.argdoc.test.cases.%s_postargdoc.rst" % modname
                tup = (mod,
                       resource_filename("sphinxcontrib.argdoc","test/testbuild/%s" % basename),
                       os.path.join(cls.optdict["outdir"],basename))
                cls.test_cases[modname] = tup
Ejemplo n.º 6
0
    def setUpClass(cls):
        # retain record indicating whether builder has been run,
        # so we run it a maximum of once, and only if we decide to do
        # the expensive tests
        cls.built = False

        # options for sphinx-build runs
        cls.optdict = {
            "sourcedir":
            resource_filename("sphinxcontrib.argdoc", "test/testdocroot"),
            "conf":
            resource_filename("sphinxcontrib.argdoc",
                              "test/testdocroot/conf.py"),
            "outdir":
            tempfile.mkdtemp(prefix="argdoc"),
        }

        cls.sphinxopts = "-Q -N -b html %(sourcedir)s %(outdir)s" % cls.optdict

        # test cases for patterns
        cls.pattern_tests = {}
        cls.pattern_tests["positional_arg"] = [
            ("  arg1", {
                "arg1": "arg1",
                "desc": None
            }),
            ("  some_arg         some_description with lots of words", {
                "arg1": "some_arg",
                "desc": "some_description with lots of words"
            }),
            ("optional arguments:", None),
            ("  --kwarg M", None),
            ("  -k M", None),
            ("  -k", None),
            ("  --kwarg", None),
            ("  -k, --kwarg", None),
            ("  -k M, --kwarg M", None),
            ("  -k             some_description with lots of words", None),
            ("  --kwarg        some_description with lots of words", None),
            ("  -k, --kwarg    some_description with lots of words", None),
            ("  -k M           some_description with lots of words", None),
            ("  --kwarg M      some_description with lots of words", None),
            ("  -k M, --kwarg M   some_description with lots of words", None),
        ]
        cls.pattern_tests["section_title"] = [
            ("optional arguments:", ("optional arguments", )),
            ("optional arguments: ", None),
            (" optional arguments:", None),
            ("optional: arguments:", ("optional: arguments", )),
            ("positional arguments:", ("positional arguments", )),
            ("some long string (with parentheses):",
             ("some long string (with parentheses)", )),
        ]
        cls.pattern_tests["arg_only"] = [
            ("  positional1", None),
            ("  po3413134", None),
            ("  reallyreallyreallyreallyreallyreallyreallyreallylongpositional",
             None),
            ("  --help", ('--help', None)),
            ("  -h", ('-h', None)),
            ("  -h, --help", ('-h', '--help')),
            # arg + vals + desc
            ("  -n M, --ne M            some description", None),
            ("  -n M M, --ne M M        some description", None),
            ("  -n M M M, --ne M M M    some description", None),
            ("  -n M                    some description", None),
            ("  -n M M                  some description", None),
            ("  -n M M M                some description", None),
            ("  --ne M                  some description", None),
            ("  --ne M M                some description", None),
            ("  --ne M M M              some description", None),
            # arg + desc
            ("  -n, --ne                some description", None),
            ("  -n                      some description", None),
            ("  --ne                    some description", None),
            # arg + vals
            ("-n M, --ne M", None),
            ("-n M M, --ne M M", None),
            ("-n M M M, --ne M M M", None),
            ("-n M", None),
            ("-n M M", None),
            ("-n M M M", None),
            ("--ne M", None),
            ("--ne M M", None),
            ("--ne M M M", None),
        ]
        cls.pattern_tests["arg_plus_val"] = [
            ("  -o FILENAME, --out FILENAME", ('-o', ' FILENAME', '--out',
                                               ' FILENAME')),
            ("  -o FILENAME", ('-o', ' FILENAME', None, None)),
            ("  --out FILENAME", ('--out', ' FILENAME', None, None)),
            ("-o FILENAME, --out FILENAME", None),
            ("-o FILENAME", None),
            ("--out FILENAME", None),
            ("  -n M M, --num M M", ('-n', ' M M', '--num', ' M M')),
            ("  -n M M", ('-n', ' M M', None, None)),
            ("  --num M M", ('--num', ' M M', None, None)),
            ("-n M M, --num M M", None),
            ("-n M M", None),
            ("--num M M", None),
            # arg + vals + desc
            ("  -n M, --ne M            some description", None),
            ("  -n M M, --ne M M        some description", None),
            ("  -n M M M, --ne M M M    some description", None),
            ("  -n M                    some description", None),
            ("  -n M M                  some description", None),
            ("  -n M M M                some description", None),
            ("  --ne M                  some description", None),
            ("  --ne M M                some description", None),
            ("  --ne M M M              some description", None),
            # arg + desc
            ("  -n, --ne                some description", None),
            ("  -n                      some description", None),
            ("  --ne                    some description", None),
            # arg only
            ("  --help", None),
            ("  -h", None),
            ("  -h, --help", None),
        ]
        cls.pattern_tests["arg_plus_desc"] = [
            ("  -h, --help            show this help message and exit",
             ('-h', '--help', 'show this help message and exit')),
            ("  -h                    show this help message and exit",
             ('-h', None, 'show this help message and exit')),
            ("  --help                show this help message and exit",
             ('--help', None, 'show this help message and exit')),
            ("  -h, --help     show this help message and exit",
             ('-h', '--help', 'show this help message and exit')),
            ("  -h             show this help message and exit",
             ('-h', None, 'show this help message and exit')),
            ("  --help         show this help message and exit",
             ('--help', None, 'show this help message and exit')),
            ("-h, --help     show this help message and exit", None),
            ("-h             show this help message and exit", None),
            ("--help         show this help message and exit", None),
            # arg only
            ("  --help", None),
            ("  -h", None),
            ("  -h, --help", None),
            # arg + vals + desc
            ("  -n M, --ne M            some description", None),
            ("  -n M M, --ne M M        some description", None),
            ("  -n M M M, --ne M M M    some description", None),
            ("  -n M                    some description", None),
            ("  -n M M                  some description", None),
            ("  -n M M M                some description", None),
            ("  --ne M                  some description", None),
            ("  --ne M M                some description", None),
            ("  --ne M M M              some description", None),
            # arg + vals
            ("-n M, --ne M", None),
            ("-n M M, --ne M M", None),
            ("-n M M M, --ne M M M", None),
            ("-n M", None),
            ("-n M M", None),
            ("-n M M M", None),
            ("--ne M", None),
            ("--ne M M", None),
            ("--ne M M M", None),
        ]
        cls.pattern_tests["arg_plus_val_desc"] = [
            ("  -n M, --ne M            some description", {
                "arg1": "-n",
                "val1": " M",
                "arg2": "--ne",
                "val2": " M",
                "desc": "some description"
            }),
            ("  -n M M, --ne M M        some description", {
                "arg1": "-n",
                "val1": " M M",
                "arg2": "--ne",
                "val2": " M M",
                "desc": "some description"
            }),
            ("  -n M M M, --ne M M M    some description", {
                "arg1": "-n",
                "val1": " M M M",
                "arg2": "--ne",
                "val2": " M M M",
                "desc": "some description"
            }),
            ("  -n M                    some description", {
                "arg1": "-n",
                "val1": " M",
                "arg2": None,
                "val2": None,
                "desc": "some description"
            }),
            ("  -n M M                  some description", {
                "arg1": "-n",
                "val1": " M M",
                "arg2": None,
                "val2": None,
                "desc": "some description"
            }),
            ("  -n M M M                some description", {
                "arg1": "-n",
                "val1": " M M M",
                "arg2": None,
                "val2": None,
                "desc": "some description"
            }),
            ("  --ne M                  some description", {
                "arg1": "--ne",
                "val1": " M",
                "arg2": None,
                "val2": None,
                "desc": "some description"
            }),
            ("  --ne M M                some description", {
                "arg1": "--ne",
                "val1": " M M",
                "arg2": None,
                "val2": None,
                "desc": "some description"
            }),
            ("  --ne M M M              some description", {
                "arg1": "--ne",
                "val1": " M M M",
                "arg2": None,
                "val2": None,
                "desc": "some description"
            }),
            # arg + vals
            ("  -n M, --ne M            ", None),
            ("  -n M M, --ne M M        ", None),
            ("  -n M M M, --ne M M M    ", None),
            ("  -n M                    ", None),
            ("  -n M M                  ", None),
            ("  -n M M M                ", None),
            ("  --ne M                  ", None),
            ("  --ne M M                ", None),
            ("  --ne M M M              ", None),
            # arg only
            ("  --help", None),
            ("  -h", None),
            ("  -h, --help", None),
            # arg + desc
            ("  -n, --ne                some description", None),
            ("  -n                      some description", None),
            ("  --ne                    some description", None),
            # positional
            ("  positional1", None),
            ("  po3413134", None),
            ("  reallyreallyreallyreallyreallyreallyreallyreallylongpositional",
             None),
        ]
        cls.pattern_tests["subcommand_names"] = {
            ("  {one,another,four,five}", ("one,another,four,five", )),
            ("  {one,another,four}", ("one,another,four", )),
            ("  {one,another}", ("one,another", )),
            ("  {just_one}", ("just_one", )),
            ("{one,another,four,five}", None),
            ("{one,another,four}", None),
            ("{one,another}", None),
            ("{just_one}", None),
        }
        cls.pattern_tests["continue_desc"] = []
        cls.pattern_tests["section_desc"] = [
            ("  choose one of the following:",
             ("choose one of the following:", )),
            ("  Sometimes it is useful to group arguments that relate to each other in an",
             ("Sometimes it is useful to group arguments that relate to each other in an",
              )),
            ("  Description of second argument group",
             ("Description of second argument group", )),
            ("  A special group of arguments in the `bar` subparser",
             ("A special group of arguments in the `bar` subparser", )),
            ("  Oneworddescription", None),

            # arg + vals
            ("  -n M, --ne M            ", None),
            ("  -n M M, --ne M M        ", None),
            ("  -n M M M, --ne M M M    ", None),
            ("  -n M                    ", None),
            ("  -n M M                  ", None),
            ("  -n M M M                ", None),
            ("  --ne M                  ", None),
            ("  --ne M M                ", None),
            ("  --ne M M M              ", None),
            # arg + vals + desc
            ("  -n , --ne             some description", None),
            ("  -n  , --ne          some description", None),
            ("  -n   , --ne       some description", None),
            ("  -n                     some description", None),
            ("  -n                    some description", None),
            ("  -n                   some description", None),
            ("  --ne                   some description", None),
            ("  --ne                  some description", None),
            ("  --ne                 some description", None),
            # arg only
            ("  --help", None),
            ("  -h", None),
            ("  -h, --help", None),
            ("  arg1", None),
            ("  some_arg         some_description with lots of words", None),
        ]

        # test cases for test_get_col1_text, test_get_col2_text
        cls.match_dicts = [
            {
                "arg1": "ARG",
                "col1": "``ARG``",
                "col2": "",
            },
            {
                "arg1": "ARG",
                "desc": "some description",
                "col1": "``ARG``",
                "col2": "some description",
            },
            {
                "arg1": "-v",
                "val1": "ARG",
                "col1": "``-v ARG``",
                "col2": "",
            },
            {
                "arg1": "--val",
                "val1": "ARG",
                "col1": "``--val ARG``",
                "col2": ""
            },
            {
                "arg1": "-v",
                "val1": "ARG",
                "arg2": "--val",
                "val2": "ARG",
                "desc": "some description",
                "col1": "``-v ARG``, ``--val ARG``",
                "col2": "some description",
            },
            {
                "arg1": "-v",
                "val1": "ARG",
                "desc": "some description",
                "col1": "``-v ARG``",
                "col2": "some description",
            },
            {
                "arg1": "--val",
                "val1": "ARG",
                "desc": "some description",
                "col1": "``--val ARG``",
                "col2": "some description",
            },
            {
                "arg1": "-v",
                "val1": "ARG",
                "arg2": "--val",
                "val2": "ARG",
                "desc": "some description",
                "col1": "``-v ARG``, ``--val ARG``",
                "col2": "some description",
            },
            {
                "arg1": "-v",
                "arg2": "--val",
                "col1": "``-v``, ``--val``",
                "col2": ""
            },
            {
                "arg1": "-v",
                "arg2": "--val",
                "desc": "some description",
                "col1": "``-v``, ``--val``",
                "col2": "some description",
            },
        ]

        # automatically load module test cases for functional tests
        # testcase names mapped to (module, expected rst output, built rst output)
        cls.test_cases = {}
        mf = ModuleFinder()
        for modname in mf.find_all_submodules(sphinxcontrib.argdoc.test.cases):
            if modname not in (__name__, "__init__"):
                mod = importlib.import_module(
                    "sphinxcontrib.argdoc.test.cases.%s" % modname)
                basename = "sphinxcontrib.argdoc.test.cases.%s_postargdoc.rst" % modname
                tup = (mod,
                       resource_filename("sphinxcontrib.argdoc",
                                         "test/testbuild/%s" % basename),
                       os.path.join(cls.optdict["outdir"], basename))
                cls.test_cases[modname] = tup