-dnl Copyright © 2020 Nick Bowler
+dnl Copyright © 2020-2021 Nick Bowler
dnl
dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2.
dnl This is free software: you are free to do what the fuck you want to.
AT_BANNER([Program tests])
-AT_SETUP([gob2 probes])
+m4_define([TEST_SIMPLE_PROGRAM_PROBES],
+ [TEST_SIMPLE_PROGRAM_PROBES_([$1], m4_toupper($1))])
+m4_define([TEST_SIMPLE_PROGRAM_PROBES_],
+[AT_SETUP([$1 probes])
+AT_KEYWORDS([DX_PROG_$2 program])dnl
+AT_CAPTURE_FILE([config.log])dnl
mkdir bin
-cp -P "$srcdir/t/gob2.sh" bin
+cp -P "$srcdir/t/$1.sh" bin/$1
AT_DATA([test.in],
-[[@HAVE_GOB2@
-@GOB2@
+[[@HAVE_$2@
+@$2@
]])
# Unversioned tests
-TEST_CONFIGURE_AC([[DX_PROG_GOB2([], [HAVE_GOB2=yes], [HAVE_GOB2=no])
-AC_SUBST([GOB2])
-AC_SUBST([HAVE_GOB2])
+TEST_CONFIGURE_AC([[DX_PROG_$2([], [HAVE_$2=yes], [HAVE_$2=no])
+AC_SUBST([$2])
+AC_SUBST([HAVE_$2])
set x conftest*; shift
if test -f $[]1; then
- AC_MSG_ERROR([conftest* left behind by [DX_PROG_GOB2]])
+ AC_MSG_ERROR([$[]1 left behind by [D@@&t@&t@X_PROG_$2]])
fi
AC_CONFIG_FILES([test])
# Check the search via path lookup
save_PATH=$PATH
-PATH=$PWD/bin${PATH:+":$PATH"}
+PATH=`pwd`/bin${PATH:+":$PATH"}
+
+# Sanity test on PATH lookup; configure will substitute absolute path if
+# "command" does not work (e.g., heirloom-sh).
+expected=$1
+val=`$TEST_SHELL -c 'command -v $1'`
+test x"$val" = x"`pwd`/bin/$1" || expected=`pwd`/bin/$1
+
TEST_CONFIGURE
AT_CHECK_UNQUOTED([cat test], [0], [yes
-gob2
+$expected
])
PATH=$save_PATH
# Check the search via user override
-TEST_CONFIGURE([GOB2="$srcdir/t/gob2.sh"])
+TEST_CONFIGURE([$2="$srcdir/t/$1.sh"])
AT_CHECK_UNQUOTED([cat test], [0], [yes
-$srcdir/t/gob2.sh
+$srcdir/t/$1.sh
])
# Check that a bogus program doesn't come back as valid.
-TEST_CONFIGURE([GOB2=true])
+TEST_CONFIGURE([$2=true])
AT_CHECK_UNQUOTED([cat test], [0], [no
true
])
# min-version tests
mv configure.ac configure.old
-[sed 's/DX_PROG_GOB2(\[\]/DX_PROG_GOB2([2.1.3]/' configure.old >configure.ac]
+sed ['s/\(DX_PROG_$2(\)\[\]/\1[2.1.3]/'] configure.old >configure.ac
TEST_AUTORECONF
-FAKE_GOB2_VERSION=2.0.0
-export FAKE_GOB2_VERSION
-TEST_CONFIGURE([GOB2="$srcdir/t/gob2.sh"])
+TEST_CONFIGURE([FAKE_$2_VERSION=2.0.0 $2="$srcdir/t/$1.sh"])
AT_CHECK_UNQUOTED([cat test], [0], [no
-$srcdir/t/gob2.sh
+$srcdir/t/$1.sh
])
-FAKE_GOB2_VERSION=3.0.0
-TEST_CONFIGURE([GOB2="$srcdir/t/gob2.sh"])
+TEST_CONFIGURE([FAKE_$2_VERSION=3.0.0 $2="$srcdir/t/$1.sh"])
AT_CHECK_UNQUOTED([cat test], [0], [yes
-$srcdir/t/gob2.sh
+$srcdir/t/$1.sh
])
-FAKE_GOB2_VERSION=2.5.0
-TEST_CONFIGURE([GOB2="$srcdir/t/gob2.sh"])
+TEST_CONFIGURE([FAKE_$2_VERSION=2.5.0 $2="$srcdir/t/$1.sh"])
AT_CHECK_UNQUOTED([cat test], [0], [yes
-$srcdir/t/gob2.sh
+$srcdir/t/$1.sh
])
-FAKE_GOB2_VERSION=2.1.2
-TEST_CONFIGURE([GOB2="$srcdir/t/gob2.sh"])
+TEST_CONFIGURE([FAKE_$2_VERSION=2.1.2 $2="$srcdir/t/$1.sh"])
AT_CHECK_UNQUOTED([cat test], [0], [no
-$srcdir/t/gob2.sh
+$srcdir/t/$1.sh
])
-FAKE_GOB2_VERSION=2.1.3
-TEST_CONFIGURE([GOB2="$srcdir/t/gob2.sh"])
+TEST_CONFIGURE([FAKE_$2_VERSION=2.1.3 $2="$srcdir/t/$1.sh"])
AT_CHECK_UNQUOTED([cat test], [0], [yes
-$srcdir/t/gob2.sh
+$srcdir/t/$1.sh
])
AT_CLEANUP
+])
+
+TEST_SIMPLE_PROGRAM_PROBES([gob2])
+TEST_SIMPLE_PROGRAM_PROBES([flex])
+TEST_SIMPLE_PROGRAM_PROBES([bison])