diff options
| author | Randy Palamar <randy@rnpnr.xyz> | 2024-05-21 19:53:22 -0600 |
|---|---|---|
| committer | Randy Palamar <randy@rnpnr.xyz> | 2024-05-21 19:53:22 -0600 |
| commit | b7074021b7bfb0932b889b9560dd22df31cef818 (patch) | |
| tree | 0295b18de8fb8ea5289cbda95675687ae06025ff /test/vim/test.sh | |
| parent | b7f8018a00be930e3f2b864949aec1f91291309c (diff) | |
| parent | efafa3c178268a4149fc3e432bc1174a013c16de (diff) | |
| download | vis-b7074021b7bfb0932b889b9560dd22df31cef818.tar.gz vis-b7074021b7bfb0932b889b9560dd22df31cef818.tar.xz | |
Merge vis-tests into test directory
Going forward all tests should be submitted here directly.
Diffstat (limited to 'test/vim/test.sh')
| -rwxr-xr-x | test/vim/test.sh | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/test/vim/test.sh b/test/vim/test.sh new file mode 100755 index 0000000..a94a76e --- /dev/null +++ b/test/vim/test.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +[ -z "$VIS" ] && VIS="../../vis" +[ -z "$VIM" ] && VIM="vim" + +TESTS=$1 +[ -z "$TESTS" ] && TESTS=$(find . -name '*.keys' | sed 's/\.keys$//g') + +TESTS_RUN=0 +TESTS_OK=0 +TESTS_SKIP=0 + +export LANG="en_US.UTF-8" +export VIS_PATH=. + +if type "$VIM" >/dev/null 2>&1; then + EDITORS="$VIM $VIS" + $VIM --version | head -1 +else + EDITORS="$VIS" +fi + +$VIS -v + +for t in $TESTS; do + for EDITOR in $EDITORS; do + e=$(basename "$EDITOR"); + ERR="$t.$e.err" + OUT="$t.$e.out" + REF="$t.ref" + VIM_OUT="$t.$VIM.out" + printf "Running test %s with %s ... " "$t" "$e" + rm -f "$OUT" "$ERR" + [ "$e" = "$VIM" ] && EDITOR="$VIM -u NONE -U NONE -N -i NONE" + { cat "$t.keys"; printf "<Escape>:w! $OUT<Enter>:qall!<Enter>\n"; } | ${CPP:-cpp} -P 2>/dev/null | sed 's/[ \t]*$//' | ../util/keys | $EDITOR "$t.in" >/dev/null 2>&1 + if [ "$e" = "$VIM" ]; then + if [ -e "$REF" ]; then + if cmp -s "$REF" "$OUT"; then + printf "OK\n" + else + printf "FAIL\n" + diff -u "$REF" "$OUT" > "$ERR" + fi + elif [ -e "$VIM_OUT" ]; then + printf "OK\n" + else + printf "FAIL\n" + fi + elif [ -e "$REF" -o -e "$VIM_OUT" ]; then + [ -e "$VIM_OUT" ] && REF="$VIM_OUT" + if cmp -s "$REF" "$OUT"; then + printf "OK\n" + TESTS_OK=$((TESTS_OK+1)) + else + printf "FAIL\n" + diff -u "$REF" "$OUT" > "$ERR" + fi + TESTS_RUN=$((TESTS_RUN+1)) + else + TESTS_SKIP=$((TESTS_SKIP+1)) + printf "SKIPPED\n" + fi + done +done + +printf "Tests ok %d/%d, skipped %d\n" $TESTS_OK $TESTS_RUN $TESTS_SKIP + +# set exit status +[ $TESTS_OK -eq $TESTS_RUN ] |
