|
1 | 1 | import argparse |
2 | 2 | from sphinxarg.parser import parse_parser, parser_navigate |
| 3 | +import six |
3 | 4 |
|
4 | 5 |
|
5 | 6 | def test_parse_options(): |
@@ -187,6 +188,84 @@ def test_parse_nested(): |
187 | 188 | ] |
188 | 189 |
|
189 | 190 |
|
| 191 | +if six.PY3: |
| 192 | + def test_parse_nested_with_alias(): |
| 193 | + parser = argparse.ArgumentParser() |
| 194 | + parser.add_argument('foo', default=False, help='foo help') |
| 195 | + parser.add_argument('bar', default=False) |
| 196 | + |
| 197 | + subparsers = parser.add_subparsers() |
| 198 | + |
| 199 | + subparser = subparsers.add_parser('install', aliases=['i'], help='install help') |
| 200 | + subparser.add_argument('ref', type=str, help='foo1 help') |
| 201 | + subparser.add_argument('--upgrade', action='store_true', default=False, help='foo2 help') |
| 202 | + |
| 203 | + data = parse_parser(parser) |
| 204 | + |
| 205 | + assert data['action_groups'][0]['options'] == [ |
| 206 | + { |
| 207 | + 'name': ['foo'], |
| 208 | + 'help': 'foo help', |
| 209 | + 'default': False |
| 210 | + }, { |
| 211 | + 'name': ['bar'], |
| 212 | + 'help': '', |
| 213 | + 'default': False |
| 214 | + } |
| 215 | + ] |
| 216 | + |
| 217 | + assert data['children'] == [ |
| 218 | + { |
| 219 | + 'name': 'install (i)', |
| 220 | + 'identifier': 'install', |
| 221 | + 'help': 'install help', |
| 222 | + 'usage': 'usage: py.test install [-h] [--upgrade] ref', |
| 223 | + 'bare_usage': 'py.test install [-h] [--upgrade] ref', |
| 224 | + 'action_groups': [ |
| 225 | + { |
| 226 | + 'title': 'Positional Arguments', |
| 227 | + 'description': None, |
| 228 | + 'options': [ |
| 229 | + { |
| 230 | + 'name': ['ref'], |
| 231 | + 'help': 'foo1 help', |
| 232 | + 'default': None |
| 233 | + } |
| 234 | + ] |
| 235 | + }, |
| 236 | + { |
| 237 | + 'description': None, |
| 238 | + 'title': 'Named Arguments', |
| 239 | + 'options': [ |
| 240 | + { |
| 241 | + 'name': ['--upgrade'], |
| 242 | + 'default': False, |
| 243 | + 'help': 'foo2 help' |
| 244 | + } |
| 245 | + ] |
| 246 | + } |
| 247 | + ] |
| 248 | + } |
| 249 | + ] |
| 250 | + |
| 251 | + def test_aliased_traversal(): |
| 252 | + parser = argparse.ArgumentParser() |
| 253 | + |
| 254 | + subparsers1 = parser.add_subparsers() |
| 255 | + subparsers1.add_parser('level1', aliases=['l1']) |
| 256 | + |
| 257 | + data = parse_parser(parser) |
| 258 | + |
| 259 | + data2 = parser_navigate(data, 'level1') |
| 260 | + |
| 261 | + assert(data2 == { |
| 262 | + 'bare_usage': 'py.test level1 [-h]', |
| 263 | + 'help': '', |
| 264 | + 'usage': 'usage: py.test level1 [-h]', |
| 265 | + 'name': 'level1 (l1)', |
| 266 | + 'identifier': 'level1'}) |
| 267 | + |
| 268 | + |
190 | 269 | def test_parse_nested_traversal(): |
191 | 270 | parser = argparse.ArgumentParser() |
192 | 271 |
|
|
0 commit comments