Merge updates to Russian translation
[survex.git] / tests / diffpos.tst
blobba8965b947e662c375cb8bc8c9ddf594883f1ff9
1 #!/bin/sh
3 # Survex test suite - diffpos tests
4 # Copyright (C) 1999-2024 Olly Betts
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20 testdir=`echo $0 | sed 's!/[^/]*$!!' || echo '.'`
22 # allow us to run tests standalone more easily
23 : ${srcdir="$testdir"}
24 if [ -z "$SURVEXLIB" ] ; then
25   SURVEXLIB=`cd "$srcdir/../lib" && pwd`
26   export SURVEXLIB
29 # force VERBOSE if we're run on a subset of tests
30 test -n "$*" && VERBOSE=1
32 test -x "$testdir"/../src/cavern || testdir=.
34 case `uname -a` in
35   MINGW*)
36     DIFF='diff --strip-trailing-cr'
37     QUIET_DIFF='diff -q --strip-trailing-cr'
38     ;;
39   *)
40     DIFF=diff
41     # Use cmp when we can as a small optimisation.
42     QUIET_DIFF='cmp -s'
43     ;;
44 esac
46 : ${DIFFPOS="$testdir"/../src/diffpos}
48 : ${TESTS=${*:-"delatend addatend"}}
50 SURVEXLANG=en
51 export SURVEXLANG
53 # Suppress checking for leaks on exit if we're build with lsan - we don't
54 # generally waste effort to free all allocations as the OS will reclaim
55 # memory on exit.
56 LSAN_OPTIONS=leak_check_at_exit=0
57 export LSAN_OPTIONS
59 vg_error=123
60 vg_log=vg.log
61 if [ -n "$VALGRIND" ] ; then
62   rm -f "$vg_log"
63   DIFFPOS="$VALGRIND --log-file=$vg_log --error-exitcode=$vg_error $DIFFPOS"
66 for file in $TESTS ; do
67   echo $file
68   rm -f diffpos.tmp
69   $DIFFPOS "$srcdir/${file}a.pos" "$srcdir/${file}b.pos" > diffpos.tmp
70   exitcode=$?
71   if [ -n "$VALGRIND" ] ; then
72     if [ $exitcode = "$vg_error" ] ; then
73       cat "$vg_log"
74       rm "$vg_log"
75       exit 1
76     fi
77     rm "$vg_log"
78   fi
79   if test -n "$VERBOSE" ; then
80     cat diffpos.tmp
81     $DIFF diffpos.tmp "$srcdir/${file}.out" || exit 1
82   else
83     $QUIET_DIFF diffpos.tmp "$srcdir/${file}.out" > /dev/null || exit 1
84   fi
85   rm -f diffpos.tmp
86 done
88 for args in '' '--survey survey' '--survey survey.xyzzy' '--survey xyzzy' ; do
89   echo "diffpos $args"
90   rm -f diffpos.tmp
91   $DIFFPOS $args "$srcdir/v0.3d" "$srcdir/v0.3d" > diffpos.tmp
92   if test -n "$VERBOSE" ; then
93     cat diffpos.tmp
94   fi
95   $QUIET_DIFF diffpos.tmp /dev/null > /dev/null || exit 1
96   rm -f diffpos.tmp
97 done
98 test -n "$VERBOSE" && echo "Test passed"
99 exit 0