xref: /Universal-ctags/Tmain/optscript.d/run.sh (revision d8f6b0edb7a13d2ab454b5cd8af792cf329f1a99)
1#!/bin/sh
2
3# Copyright: 2020 Masatake YAMATO
4# License: GPL-2
5
6BUILDDIR=$2
7OPTSCRIPT=$4
8
9. ../utils.sh
10
11if ! [ -x "${OPTSCRIPT}" ]; then
12	skip "no optscript"
13fi
14
15
16_VALGRIND_EXIT=58
17
18if type valgrind > /dev/null 2>&1; then
19	V()
20	{
21		vlog=$1
22		shift
23		valgrind --leak-check=full --error-exitcode=${_VALGRIND_EXIT} --log-file="${vlog}" "$@"
24	}
25else
26	V()
27	{
28		vlog=$1
29		shift
30		touch $vlog
31		"$@"
32	}
33fi
34
35rm -f ${BUILDDIR}/*.tmp
36
37for i in $(ls *.ps); do
38    printf "%s" "${i}..."
39    o=${BUILDDIR}/$(basename $i .ps).out.tmp
40    e=$(basename $i .ps).expected
41	v=${BUILDDIR}/$(basename $i .ps).valgrind.tmp
42
43	case $i in
44		error-*.ps)
45			V $v ${OPTSCRIPT} $i > $o 2>&1
46			;;
47		*)
48			V $v ${OPTSCRIPT} $i > $o
49			;;
50	esac
51	s=$?
52    printf "%s" "$s"
53
54	if [ "$s" = "$_VALGRIND_EXIT" ]; then
55		echo
56		cat $v;
57		exit $_VALGRIND_EXIT
58	fi
59
60	case $s-$i in
61		*-error-*.ps|0-*)
62			echo
63			if diff -ruN --strip-trailing-cr $e $o; then
64			   rm $o
65			   rm $v
66			fi
67			;;
68		*)
69			echo ERROR
70			;;
71    esac
72done
73