mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-01-09 20:33:34 -08:00
135 lines
4.2 KiB
Bash
135 lines
4.2 KiB
Bash
# bash completion for pytest(1) -*- shell-script -*-
|
|
|
|
_pytest()
|
|
{
|
|
local cur prev words cword split
|
|
_init_completion -s -n : || return
|
|
|
|
case $prev in
|
|
--help | --maxfail | --report | --junit-prefix | --doctest-glob | -!(-*)[hkmorp])
|
|
return
|
|
;;
|
|
--import-mode)
|
|
COMPREPLY=($(compgen -W "prepend append" -- "$cur"))
|
|
return
|
|
;;
|
|
--capture)
|
|
COMPREPLY=($(compgen -W "fd sys no tee-sys" -- "$cur"))
|
|
return
|
|
;;
|
|
--lfnf | --last-failed-no-failures)
|
|
COMPREPLY=($(compgen -W "all none" -- "$cur"))
|
|
return
|
|
;;
|
|
--tb)
|
|
COMPREPLY=($(compgen -W "auto long short line native no" \
|
|
-- "$cur"))
|
|
return
|
|
;;
|
|
--show-capture)
|
|
COMPREPLY=($(compgen -W "no stdout stderr log all" -- "$cur"))
|
|
return
|
|
;;
|
|
--color)
|
|
COMPREPLY=($(compgen -W "yes no auto" -- "$cur"))
|
|
return
|
|
;;
|
|
--pastebin)
|
|
COMPREPLY=($(compgen -W "failed all" -- "$cur"))
|
|
return
|
|
;;
|
|
--junit-xml)
|
|
_filedir xml
|
|
return
|
|
;;
|
|
--result-log | --log-file)
|
|
_filedir log
|
|
return
|
|
;;
|
|
--ignore)
|
|
_filedir
|
|
return
|
|
;;
|
|
--confcutdir | --basetemp | --rsyncdir | --rootdir)
|
|
_filedir -d
|
|
return
|
|
;;
|
|
--doctest-report)
|
|
COMPREPLY=($(compgen -W "none cdiff ndiff udiff only_first_failure" -- "$cur"))
|
|
return
|
|
;;
|
|
--assert)
|
|
COMPREPLY=($(compgen -W "plain reinterp rewrite" -- "$cur"))
|
|
return
|
|
;;
|
|
--genscript)
|
|
_filedir py
|
|
return
|
|
;;
|
|
--pythonwarnings | -!(-*)W)
|
|
_xfunc python _python_warning_actions
|
|
return
|
|
;;
|
|
--numprocesses | -!(-*)n)
|
|
COMPREPLY=($(compgen -W "{1..$(_ncpus)} auto" -- "$cur"))
|
|
return
|
|
;;
|
|
--dist)
|
|
local modes=$("$1" --dist=nonexistent-distmode 2>&1 |
|
|
command sed -e 's/[^[:space:][:alnum:]-]\{1,\}//g' \
|
|
-ne 's/.*choose from //p')
|
|
COMPREPLY=($(compgen -W '$modes' -- "$cur"))
|
|
return
|
|
;;
|
|
esac
|
|
|
|
$split && return
|
|
|
|
if [[ $cur == -* ]]; then
|
|
COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
|
|
[[ ${COMPREPLY-} == *= ]] && compopt -o nospace
|
|
return
|
|
fi
|
|
|
|
if [[ $cur == *.py::*:* ]]; then
|
|
local file=${cur/.py:*/.py}
|
|
local class=${cur#*.py::} in_class=false
|
|
local line
|
|
class=${class%%:*}
|
|
while IFS= read -r line; do
|
|
if [[ $line =~ ^class[[:space:]]+${class}[[:space:]:\(] ]]; then
|
|
in_class=true
|
|
elif [[ $line =~ ^class[[:space:]] ]]; then
|
|
in_class=false
|
|
fi
|
|
if $in_class && [[ $line =~ ^[[:space:]]+(async[[:space:]]+)?def[[:space:]]+(test_[A-Za-z0-9_]+) ]]; then
|
|
COMPREPLY+=(${BASH_REMATCH[2]})
|
|
fi
|
|
done 2>/dev/null <"$file"
|
|
((!${#COMPREPLY[@]})) ||
|
|
COMPREPLY=($(compgen -P "$file::$class::" -W '${COMPREPLY[@]}' \
|
|
-- "${cur##*:?(:)}"))
|
|
__ltrim_colon_completions "$cur"
|
|
return
|
|
elif [[ $cur == *.py:* ]]; then
|
|
local file="${cur/.py:*/.py}" line
|
|
while IFS= read -r line; do
|
|
if [[ $line =~ ^class[[:space:]]+(Test[A-Za-z0-9_]+) ]]; then
|
|
COMPREPLY+=(${BASH_REMATCH[1]})
|
|
elif [[ $line =~ ^(async[[:space:]]+)?def[[:space:]]+(test_[A-Za-z0-9_]+) ]]; then
|
|
COMPREPLY+=(${BASH_REMATCH[2]})
|
|
fi
|
|
done 2>/dev/null <"$file"
|
|
((!${#COMPREPLY[@]})) ||
|
|
COMPREPLY=($(compgen -P "$file::" -W '${COMPREPLY[@]}' \
|
|
-- "${cur##*.py:?(:)}"))
|
|
__ltrim_colon_completions "$cur"
|
|
return
|
|
fi
|
|
|
|
_filedir py
|
|
} &&
|
|
complete -F _pytest pytest pytest-2 pytest-3 py.test py.test-2 py.test-3
|
|
|
|
# ex: filetype=sh
|