]> git.draconx.ca Git - dxcommon.git/blobdiff - tests/programs.at
Avoid nonportable ${x##y} substitutions in program tests.
[dxcommon.git] / tests / programs.at
index 0228ac3706f2460ead53263b5a438b5c53bdbd5c..5460b5ccd5dc7cf9b676edcc6995db0af3196aa3 100644 (file)
@@ -1,4 +1,4 @@
-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.
@@ -6,24 +6,29 @@ dnl There is NO WARRANTY, to the extent permitted by law.
 
 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])
@@ -32,59 +37,65 @@ TEST_AUTORECONF
 
 # 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])