X-Git-Url: http://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/485ec08e224f3ffed90259f445839572096187a0..984752355c18f9cfac6425e6387a2d157c011846:/tests/programs.at diff --git a/tests/programs.at b/tests/programs.at index 5460b5c..e482fcb 100644 --- a/tests/programs.at +++ b/tests/programs.at @@ -1,4 +1,4 @@ -dnl Copyright © 2020-2021 Nick Bowler +dnl Copyright © 2020-2023 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,6 +6,18 @@ dnl There is NO WARRANTY, to the extent permitted by law. AT_BANNER([Program tests]) +dnl TEST_PATH_LOOKUP(var, program, [abspath=`pwd`/bin]) +dnl +dnl If "command -v program" returns abspath/program, then set var=program. +dnl Otherwise, set var=abspath/program. This helps compute the expected +dnl program name from path lookups as certain older shells (e.g., Solaris +dnl 10 /bin/sh) do not implement "command". +m4_define([TEST_PATH_LOOKUP], +[AS_VAR_SET([$1], [$2]) +val=`$TEST_SHELL -c 'command -v $2'` +AS_IF([test x"$val" != x"m4_default([$3], [`pwd`/bin])/$2"], + [AS_VAR_SET([$1], [m4_default([$3], [`pwd`/bin])/$2])])]) + m4_define([TEST_SIMPLE_PROGRAM_PROBES], [TEST_SIMPLE_PROGRAM_PROBES_([$1], m4_toupper($1))]) m4_define([TEST_SIMPLE_PROGRAM_PROBES_], @@ -39,12 +51,7 @@ TEST_AUTORECONF save_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_PATH_LOOKUP([expected], [$1]) TEST_CONFIGURE AT_CHECK_UNQUOTED([cat test], [0], [yes $expected @@ -99,3 +106,178 @@ AT_CLEANUP TEST_SIMPLE_PROGRAM_PROBES([gob2]) TEST_SIMPLE_PROGRAM_PROBES([flex]) TEST_SIMPLE_PROGRAM_PROBES([bison]) + +AT_SETUP([md5 probes]) +AT_KEYWORDS([DX_PROG_MD5 program]) +AT_CAPTURE_FILE([config.log]) + +mkdir bin +cp -P "$srcdir/t/md5.sh" bin/md5sum + +AT_DATA([test.in], +[[MD5=@MD5@ +dx_cv_md5_works=@dx_cv_md5_works@ +dx_cv_md5_outpos=@dx_cv_md5_outpos@ +]]) + +TEST_CONFIGURE_AC([[DX_PROG_MD5 +AC_SUBST([dx_cv_md5_works]) +AC_SUBST([dx_cv_md5_outpos]) + +set x conftest*; shift +if test -f $[]1; then + AC_MSG_ERROR([$[]1 left behind by [D@@&t@&t@X_PROG_MD5]]) +fi + +AC_CONFIG_FILES([test]) +]]) +TEST_AUTORECONF + +# Check the search via path lookup +save_PATH=$PATH +PATH=`pwd`/bin${PATH:+":$PATH"} + +TEST_PATH_LOOKUP([expected], [md5sum]) +TEST_CONFIGURE +AT_CHECK_UNQUOTED([cat test], [0], [MD5=$expected +dx_cv_md5_works=yes +dx_cv_md5_outpos=front +]) + +mv bin/md5sum bin/md5 +TEST_PATH_LOOKUP([expected], [md5]) +TEST_CONFIGURE([MD5_DIRECTION=reverse]) +AT_CHECK_UNQUOTED([cat test], [0], [MD5=$expected -r +dx_cv_md5_works=yes +dx_cv_md5_outpos=front +]) + +mv bin/md5 bin/openssl +TEST_PATH_LOOKUP([expected], [openssl]) +TEST_CONFIGURE([MD5_DIRECTION=reverse MD5_NO_R=true]) +AT_CHECK_UNQUOTED([cat test], [0], [MD5=$expected md5 +dx_cv_md5_works=yes +dx_cv_md5_outpos=back +]) + +PATH=$save_PATH + +# Check the search via user override +TEST_CONFIGURE([MD5_DIRECTION=reverse MD5="$srcdir/t/md5.sh"]) +AT_CHECK_UNQUOTED([cat test], [0], [MD5=$srcdir/t/md5.sh +dx_cv_md5_works=yes +dx_cv_md5_outpos=back +]) + +# Check that a bogus program doesn't come back as valid. +TEST_CONFIGURE([MD5=true]) +AT_CHECK([grep dx_cv_md5_works test], [0], [dx_cv_md5_works=no +]) + +AT_CLEANUP + +AT_SETUP([join probes]) + +AT_DATA([test.in], +[[JOIN=@JOIN@ +dx_cv_join_works=@dx_cv_join_works@ +]]) + +TEST_CONFIGURE_AC([[DX_PROG_JOIN +AC_SUBST([dx_cv_join_works]) + +set x conftest*; shift +if test -f $[]1; then + AC_MSG_ERROR([$[]1 left behind by [D@@&t@&t@X_PROG_JOIN]]) +fi + +AC_CONFIG_FILES([test]) +]]) +TEST_AUTORECONF + +TEST_CONFIGURE([JOIN=true AWK="$AWK"]) +AT_CHECK_UNQUOTED([$AWK '{ print $1 }' test], [0], +[JOIN=$AWK +dx_cv_join_works=no +]) + +save_IFS=$IFS +IFS='='; read x JOIN