mirror of
https://github.com/denisidoro/navi
synced 2024-11-15 00:07:21 +00:00
58 lines
1.1 KiB
Text
58 lines
1.1 KiB
Text
|
#!/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
|