vis

a vi-like editor based on Plan 9's structural regular expressions

git clone https://9o.is/git/vis.git

test.sh

(1531B)


      1 #!/bin/sh
      2 
      3 [ -z "$VIS" ] && VIS="../../vis"
      4 [ -z "$VIM" ] && VIM="vim"
      5 
      6 TESTS=$1
      7 [ -z "$TESTS" ] && TESTS=$(find . -name '*.keys' | sed 's/\.keys$//g')
      8 
      9 TESTS_RUN=0
     10 TESTS_OK=0
     11 TESTS_SKIP=0
     12 
     13 export LANG="en_US.UTF-8"
     14 export VIS_PATH=.
     15 
     16 if type "$VIM" >/dev/null 2>&1; then
     17 	EDITORS="$VIM $VIS"
     18 	$VIM --version | head -1
     19 else
     20 	EDITORS="$VIS"
     21 fi
     22 
     23 $VIS -v
     24 
     25 for t in $TESTS; do
     26 	for EDITOR in $EDITORS; do
     27 		e=$(basename "$EDITOR");
     28 		ERR="$t.$e.err"
     29 		OUT="$t.$e.out"
     30 		REF="$t.ref"
     31 		VIM_OUT="$t.$VIM.out"
     32 		printf "Running test %s with %s ... " "$t" "$e"
     33 		rm -f "$OUT" "$ERR"
     34 		[ "$e" = "$VIM" ] && EDITOR="$VIM -u NONE -U NONE -N -i NONE"
     35 		{ 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
     36 		if [ "$e" = "$VIM" ]; then
     37 			if [ -e "$REF" ]; then
     38 				if cmp -s "$REF" "$OUT"; then
     39 					printf "OK\n"
     40 				else
     41 					printf "FAIL\n"
     42 					diff -u "$REF" "$OUT" > "$ERR"
     43 				fi
     44 			elif [ -e "$VIM_OUT" ]; then
     45 				printf "OK\n"
     46 			else
     47 				printf "FAIL\n"
     48 			fi
     49 		elif [ -e "$REF" -o -e "$VIM_OUT" ]; then
     50 			[ -e "$VIM_OUT" ] && REF="$VIM_OUT"
     51 			if cmp -s "$REF" "$OUT"; then
     52 				printf "OK\n"
     53 				TESTS_OK=$((TESTS_OK+1))
     54 			else
     55 				printf "FAIL\n"
     56 				diff -u "$REF" "$OUT" > "$ERR"
     57 			fi
     58 			TESTS_RUN=$((TESTS_RUN+1))
     59 		else
     60 			TESTS_SKIP=$((TESTS_SKIP+1))
     61 			printf "SKIPPED\n"
     62 		fi
     63 	done
     64 done
     65 
     66 printf "Tests ok %d/%d, skipped %d\n" $TESTS_OK $TESTS_RUN $TESTS_SKIP
     67 
     68 # set exit status
     69 [ $TESTS_OK -eq $TESTS_RUN ]