navi/tests/run
2020-04-16 09:40:11 -03:00

58 lines
1.1 KiB
Bash
Executable file

#!/usr/bin/env bash
export NAVI_HOME="$(cd "$(dirname "$0")/.." && pwd)"
source "${NAVI_HOME}/tests/core.bash"
TEST_CHEAT_PATH="${NAVI_HOME}/tests/no_prompt_cheats"
_navi() {
stty sane || true
local -r navi="./target/debug/navi"
local filter="$*"
local filter="${filter::-2}"
RUST_BACKTRACE=1 NAVI_PATH="$TEST_CHEAT_PATH" "$navi" best "$filter"
}
_navi_test() {
_navi "$1" \
| test::equals "$2"
}
_get_all_tests() {
cat "${TEST_CHEAT_PATH}/cases.cheat" \
| grep '#' \
| grep ' ->' \
| sed 's/\\n/ /g' \
| sed -E 's/# (.*) -> "(.*)"/\1|\2/g'
}
_get_tests() {
local -r filter="$1"
if [ -n "$filter" ]; then
_get_all_tests \
| grep "$filter"
else
_get_all_tests
fi
}
if ! command_exists fzf; then
export PATH="$PATH:$HOME/.fzf/bin"
fi
cd "$NAVI_HOME"
filter="${1:-}"
test::set_suite "cases"
ifs="$IFS"
IFS=$'\n'
for i in $(_get_tests "$filter"); do
IFS="$ifs"
query="$(echo "$i" | cut -d'|' -f1)"
expected="$(echo "$i" | cut -d'|' -f2)"
test::run "$query" _navi_test "$query" "$expected"
done
test::finish