-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Closed
Description
The overall effect of this is that pytest <tab>
ends up using bash's default completer which completes just the files (no flags). This can be fixed by modifying the offending line to check if the prefix is non-empty, but I'm not sure if the current behavior (when _ARC_DEBUG is unset) actually desired.
To fix this and retain the current behavior, you could also modify try_argcomplete
to call argcomplete.autocomplete(parser, always_complete_options=False)
.
$ export _ARC_DEBUG=1
$ pytest <tab>
[Trimmed argcomplete debug output]
Traceback (most recent call last):
File "/usr/bin/pytest", line 11, in <module>
sys.exit(main())
File "/usr/lib/python2.7/site-packages/_pytest/config.py", line 49, in main
config = _prepareconfig(args, plugins)
File "/usr/lib/python2.7/site-packages/_pytest/config.py", line 168, in _prepareconfig
pluginmanager=pluginmanager, args=args)
File "/usr/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
File "/usr/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
File "/usr/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
_MultiCall(methods, kwargs, hook.spec_opts).execute()
File "/usr/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 613, in execute
return _wrapped_call(hook_impl.function(*args), self.execute)
File "/usr/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 250, in _wrapped_call
wrap_controller.send(call_outcome)
File "/usr/lib/python2.7/site-packages/_pytest/helpconfig.py", line 68, in pytest_cmdline_parse
config = outcome.get_result()
File "/usr/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 280, in get_result
_reraise(*ex) # noqa
File "/usr/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 265, in __init__
self.result = func()
File "/usr/lib/python2.7/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
res = hook_impl.function(*args)
File "/usr/lib/python2.7/site-packages/_pytest/config.py", line 957, in pytest_cmdline_parse
self.parse(args)
File "/usr/lib/python2.7/site-packages/_pytest/config.py", line 1126, in parse
args = self._parser.parse_setoption(args, self.option, namespace=self.option)
File "/usr/lib/python2.7/site-packages/_pytest/config.py", line 562, in parse_setoption
parsedoption = self.parse(args, namespace=namespace)
File "/usr/lib/python2.7/site-packages/_pytest/config.py", line 542, in parse
try_argcomplete(self.optparser)
File "/usr/lib/python2.7/site-packages/_pytest/_argcomplete.py", line 101, in try_argcomplete
argcomplete.autocomplete(parser)
File "/usr/lib/python2.7/site-packages/argcomplete/__init__.py", line 218, in __call__
completions = self._get_completions(comp_words, cword_prefix, cword_prequote, last_wordbreak_pos)
File "/usr/lib/python2.7/site-packages/argcomplete/__init__.py", line 248, in _get_completions
completions = self.collect_completions(active_parsers, parsed_args, cword_prefix, debug)
File "/usr/lib/python2.7/site-packages/argcomplete/__init__.py", line 461, in collect_completions
completions)
File "/usr/lib/python2.7/site-packages/argcomplete/__init__.py", line 415, in _complete_active_option
prefix=cword_prefix, action=active_action, parser=parser, parsed_args=parsed_args)
File "/usr/lib/python2.7/site-packages/_pytest/_argcomplete.py", line 81, in __call__
if prefix[-1] == os.path.sep: # we are on unix, otherwise no bash
IndexError: string index out of range
I'm using pytest 3.2.1.
(Be aware that kislyuk/argcomplete#225 may impact your ability to test this if you have installed pytest from a wheel.)
Metadata
Metadata
Assignees
Labels
No labels