]> git.draconx.ca Git - dxcommon.git/blob - tests/programs.at
Avoid nonportable ${x##y} substitutions in program tests.
[dxcommon.git] / tests / programs.at
1 dnl Copyright © 2020-2021 Nick Bowler
2 dnl
3 dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2.
4 dnl This is free software: you are free to do what the fuck you want to.
5 dnl There is NO WARRANTY, to the extent permitted by law.
6
7 AT_BANNER([Program tests])
8
9 m4_define([TEST_SIMPLE_PROGRAM_PROBES],
10   [TEST_SIMPLE_PROGRAM_PROBES_([$1], m4_toupper($1))])
11 m4_define([TEST_SIMPLE_PROGRAM_PROBES_],
12 [AT_SETUP([$1 probes])
13 AT_KEYWORDS([DX_PROG_$2 program])dnl
14 AT_CAPTURE_FILE([config.log])dnl
15
16 mkdir bin
17 cp -P "$srcdir/t/$1.sh" bin/$1
18
19 AT_DATA([test.in],
20 [[@HAVE_$2@
21 @$2@
22 ]])
23
24 # Unversioned tests
25 TEST_CONFIGURE_AC([[DX_PROG_$2([], [HAVE_$2=yes], [HAVE_$2=no])
26 AC_SUBST([$2])
27 AC_SUBST([HAVE_$2])
28
29 set x conftest*; shift
30 if test -f $[]1; then
31   AC_MSG_ERROR([$[]1 left behind by [D@@&t@&t@X_PROG_$2]])
32 fi
33
34 AC_CONFIG_FILES([test])
35 ]])
36 TEST_AUTORECONF
37
38 # Check the search via path lookup
39 save_PATH=$PATH
40 PATH=`pwd`/bin${PATH:+":$PATH"}
41
42 # Sanity test on PATH lookup; configure will substitute absolute path if
43 # "command" does not work (e.g., heirloom-sh).
44 expected=$1
45 val=`$TEST_SHELL -c 'command -v $1'`
46 test x"$val" = x"`pwd`/bin/$1" || expected=`pwd`/bin/$1
47
48 TEST_CONFIGURE
49 AT_CHECK_UNQUOTED([cat test], [0], [yes
50 $expected
51 ])
52 PATH=$save_PATH
53
54 # Check the search via user override
55 TEST_CONFIGURE([$2="$srcdir/t/$1.sh"])
56 AT_CHECK_UNQUOTED([cat test], [0], [yes
57 $srcdir/t/$1.sh
58 ])
59
60 # Check that a bogus program doesn't come back as valid.
61 TEST_CONFIGURE([$2=true])
62 AT_CHECK_UNQUOTED([cat test], [0], [no
63 true
64 ])
65
66 # min-version tests
67 mv configure.ac configure.old
68 sed ['s/\(DX_PROG_$2(\)\[\]/\1[2.1.3]/'] configure.old >configure.ac
69 TEST_AUTORECONF
70
71 TEST_CONFIGURE([FAKE_$2_VERSION=2.0.0 $2="$srcdir/t/$1.sh"])
72 AT_CHECK_UNQUOTED([cat test], [0], [no
73 $srcdir/t/$1.sh
74 ])
75
76 TEST_CONFIGURE([FAKE_$2_VERSION=3.0.0 $2="$srcdir/t/$1.sh"])
77 AT_CHECK_UNQUOTED([cat test], [0], [yes
78 $srcdir/t/$1.sh
79 ])
80
81 TEST_CONFIGURE([FAKE_$2_VERSION=2.5.0 $2="$srcdir/t/$1.sh"])
82 AT_CHECK_UNQUOTED([cat test], [0], [yes
83 $srcdir/t/$1.sh
84 ])
85
86 TEST_CONFIGURE([FAKE_$2_VERSION=2.1.2 $2="$srcdir/t/$1.sh"])
87 AT_CHECK_UNQUOTED([cat test], [0], [no
88 $srcdir/t/$1.sh
89 ])
90
91 TEST_CONFIGURE([FAKE_$2_VERSION=2.1.3 $2="$srcdir/t/$1.sh"])
92 AT_CHECK_UNQUOTED([cat test], [0], [yes
93 $srcdir/t/$1.sh
94 ])
95
96 AT_CLEANUP
97 ])
98
99 TEST_SIMPLE_PROGRAM_PROBES([gob2])
100 TEST_SIMPLE_PROGRAM_PROBES([flex])
101 TEST_SIMPLE_PROGRAM_PROBES([bison])