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 ]