Inline setup and cleanup functions in completion script test (#1352)

This commit is contained in:
Casey Rodarmor 2022-09-23 20:54:18 -07:00 committed by GitHub
parent 7f7275550d
commit 7680b19979
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 47 deletions

View File

@ -170,6 +170,9 @@ watch-readme:
generate-completions: generate-completions:
./bin/generate-completions ./bin/generate-completions
test-completions:
./tests/completions/just.bash
build-book: build-book:
cargo run --package generate-book cargo run --package generate-book
mdbook build book/en mdbook build book/en

View File

@ -1,30 +1,14 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# --- Shared functions --- # --- Shared functions ---
cdroot() {
cd "$(git rev-parse --show-toplevel)" > /dev/null
}
setup() {
cdroot
cd tests/completions > /dev/null
}
cleanup() {
unset COMP_WORDS
unset COMP_CWORD
unset COMPREPLY
}
reply_equals() { reply_equals() {
local reply=$(declare -p COMPREPLY) local reply=$(declare -p COMPREPLY)
local expected="$1" local expected=$1
if [ "$reply" = "$expected" ]; then if [ "$reply" = "$expected" ]; then
echo "${FUNCNAME[1]}: ok" echo "${FUNCNAME[1]}: ok"
else else
exit_code='1' exit_code=1
echo >&2 "${FUNCNAME[1]}: failed! Completion for \`${COMP_WORDS[*]}\` does not match." echo >&2 "${FUNCNAME[1]}: failed! Completion for \`${COMP_WORDS[*]}\` does not match."
echo echo
@ -34,33 +18,18 @@ reply_equals() {
} }
# --- Initial Setup --- # --- Initial Setup ---
cdroot
source ./completions/just.bash source ./completions/just.bash
cd tests/completions
cargo build
PATH="$(git rev-parse --show-toplevel)/target/debug:$PATH" PATH="$(git rev-parse --show-toplevel)/target/debug:$PATH"
exit_code='0' exit_code=0
# --- Tests --- # --- Tests ---
test_just_is_accessible() {
if just --version > /dev/null; then
echo "${FUNCNAME[0]}: ok"
else
echo "${FUNCNAME[0]}: failed! Can't find just binary."
echo " PATH=$PATH"
echo
exit_code='1'
fi
}
setup
test_just_is_accessible
test_complete_all_recipes() { test_complete_all_recipes() {
COMP_WORDS=(just) COMP_WORDS=(just)
COMP_CWORD=1 _just just COMP_CWORD=1 _just just
reply_equals 'declare -a COMPREPLY=([0]="deploy" [1]="install" [2]="publish" [3]="push" [4]="test")' reply_equals 'declare -a COMPREPLY=([0]="deploy" [1]="install" [2]="publish" [3]="push" [4]="test")'
} }
cleanup
setup
test_complete_all_recipes test_complete_all_recipes
test_complete_recipes_starting_with_i() { test_complete_recipes_starting_with_i() {
@ -68,18 +37,13 @@ test_complete_recipes_starting_with_i() {
COMP_CWORD=1 _just just COMP_CWORD=1 _just just
reply_equals 'declare -a COMPREPLY=([0]="install")' reply_equals 'declare -a COMPREPLY=([0]="install")'
} }
cleanup
setup
test_complete_recipes_starting_with_i test_complete_recipes_starting_with_i
test_complete_recipes_starting_with_p() { test_complete_recipes_starting_with_p() {
setup
COMP_WORDS=(just p) COMP_WORDS=(just p)
COMP_CWORD=1 _just just COMP_CWORD=1 _just just
reply_equals 'declare -a COMPREPLY=([0]="publish" [1]="push")' reply_equals 'declare -a COMPREPLY=([0]="publish" [1]="push")'
} }
cleanup
setup
test_complete_recipes_starting_with_p test_complete_recipes_starting_with_p
test_complete_recipes_from_subdirs() { test_complete_recipes_from_subdirs() {
@ -87,16 +51,13 @@ test_complete_recipes_from_subdirs() {
COMP_CWORD=1 _just just COMP_CWORD=1 _just just
reply_equals 'declare -a COMPREPLY=([0]="subdir/special" [1]="subdir/surprise")' reply_equals 'declare -a COMPREPLY=([0]="subdir/special" [1]="subdir/surprise")'
} }
cleanup
setup
test_complete_recipes_from_subdirs test_complete_recipes_from_subdirs
cleanup
# --- Conclusion --- # --- Conclusion ---
if [ $exit_code = 0 ]; then
if [ "$exit_code" = '0' ]; then
echo "All tests passed." echo "All tests passed."
else else
echo "Some test[s] failed." echo "Some test[s] failed."
fi fi
exit "$exit_code"
exit $exit_code