vis

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

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

test.sh

(1782B)


      1 #!/bin/sh
      2 
      3 NL='
      4 '
      5 
      6 export LANG="en_US.UTF-8"
      7 
      8 export VIS_PATH=.
      9 [ -z "$VIS" ] && VIS="../../vis"
     10 [ -z "$SAM" ] && SAM="sam"
     11 [ -z "$PLAN9" ] && PLAN9="/usr/local/plan9/bin"
     12 
     13 for SAM in "$SAM" "$PLAN9/sam" /usr/lib/plan9/bin/sam 9; do
     14 	if type "$SAM" >/dev/null 2>&1; then
     15 		break
     16 	fi
     17 done
     18 
     19 type "$SAM" >/dev/null 2>&1 || {
     20 	echo "sam(1) not found, skipping tests"
     21 	exit 0
     22 }
     23 
     24 [ "$SAM" = "9" ] && SAM="9 sam"
     25 
     26 echo "$SAM"
     27 $VIS -v
     28 
     29 if ! $VIS -v | grep '+lua' >/dev/null 2>&1; then
     30 	echo "vis compiled without lua support, skipping tests"
     31 	exit 0
     32 fi
     33 
     34 TESTS=$1
     35 [ -z "$TESTS" ] && TESTS=$(find . -name '*.cmd' | sed 's/\.cmd$//g')
     36 
     37 TESTS_RUN=0
     38 TESTS_OK=0
     39 
     40 for t in $TESTS; do
     41 	IN="$t.in"
     42 	SAM_OUT="$t.sam.out"
     43 	SAM_ERR="$t.sam.err"
     44 	VIS_OUT="$t.vis.out"
     45 	VIS_ERR="$t.vis.err"
     46 	REF="$t.ref"
     47 	rm -f "$SAM_OUT" "$SAM_ERR" "$VIS_OUT" "$VIS_ERR"
     48 	printf "Running test %s with sam ... " "$t"
     49 
     50 	{
     51 		echo ',{'
     52 		cat "$t.cmd"
     53 		echo '}'
     54 		echo ,
     55 	} | $SAM -d "$IN" > "$SAM_OUT" 2>/dev/null
     56 
     57 	if [ $? -ne 0 ]; then
     58 		printf "ERROR\n"
     59 	elif [ -e "$REF" ]; then
     60 		if cmp -s "$REF" "$SAM_OUT"; then
     61 			printf "OK\n"
     62 		else
     63 			printf "FAIL\n"
     64 			diff -u "$REF" "$SAM_OUT" > "$SAM_ERR"
     65 		fi
     66 	elif [ -e "$SAM_OUT" ]; then
     67 		REF="$SAM_OUT"
     68 		printf "OK\n"
     69 	fi
     70 
     71 	if [ ! -e "$REF" ]; then
     72 		printf " No reference solution, skipping.\n"
     73 		continue
     74 	fi
     75 
     76 	TESTS_RUN=$((TESTS_RUN+1))
     77 
     78 	$VIS '+qall!' "$IN" </dev/null 2>/dev/null
     79 	RETURN_CODE=$?
     80 
     81 	printf "Running test %s with vis ... " "$t"
     82 	if [ $RETURN_CODE -ne 0 -o ! -e "$VIS_OUT" ]; then
     83 		printf "ERROR\n"
     84 	elif cmp -s "$REF" "$VIS_OUT"; then
     85 		printf "OK\n"
     86 		TESTS_OK=$((TESTS_OK+1))
     87 	else
     88 		printf "FAIL\n"
     89 		diff -u "$REF" "$VIS_OUT" > "$VIS_ERR"
     90 	fi
     91 done
     92 
     93 printf "Tests ok %d/%d\n" $TESTS_OK $TESTS_RUN
     94 
     95 # set exit status
     96 [ $TESTS_OK -eq $TESTS_RUN ]