]> git.draconx.ca Git - dxcommon.git/blob - tests/programs.at
Add flex detection macro.
[dxcommon.git] / tests / programs.at
1 dnl Copyright © 2020 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
15 mkdir bin
16 cp -P "$srcdir/t/$1.sh" bin/$1
17
18 AT_DATA([test.in],
19 [[@HAVE_$2@
20 @$2@
21 ]])
22
23 # Unversioned tests
24 TEST_CONFIGURE_AC([[DX_PROG_$2([], [HAVE_$2=yes], [HAVE_$2=no])
25 AC_SUBST([$2])
26 AC_SUBST([HAVE_$2])
27
28 set x conftest*; shift
29 if test -f $[]1; then
30   AC_MSG_ERROR([$[]1 left behind by [DX_PROG_$2]])
31 fi
32
33 AC_CONFIG_FILES([test])
34 ]])
35 TEST_AUTORECONF
36
37 # Check the search via path lookup
38 save_PATH=$PATH
39 PATH=$PWD/bin${PATH:+":$PATH"}
40
41 # Sanity test on PATH lookup
42 AT_CHECK([test x"`command -v $1`" = x"$PWD/bin/$1" || exit 99 #''])
43
44 TEST_CONFIGURE
45 AT_CHECK_UNQUOTED([cat test], [0], [yes
46 $1
47 ])
48 PATH=$save_PATH
49
50 # Check the search via user override
51 TEST_CONFIGURE([$2="$srcdir/t/$1.sh"])
52 AT_CHECK_UNQUOTED([cat test], [0], [yes
53 $srcdir/t/$1.sh
54 ])
55
56 # Check that a bogus program doesn't come back as valid.
57 TEST_CONFIGURE([$2=true])
58 AT_CHECK_UNQUOTED([cat test], [0], [no
59 true
60 ])
61
62 # min-version tests
63 mv configure.ac configure.old
64 sed ['s/\(DX_PROG_$2(\)\[\]/\1[2.1.3]/'] configure.old >configure.ac
65 TEST_AUTORECONF
66
67 TEST_CONFIGURE([FAKE_$2_VERSION=2.0.0 $2="$srcdir/t/$1.sh"])
68 AT_CHECK_UNQUOTED([cat test], [0], [no
69 $srcdir/t/$1.sh
70 ])
71
72 TEST_CONFIGURE([FAKE_$2_VERSION=3.0.0 $2="$srcdir/t/$1.sh"])
73 AT_CHECK_UNQUOTED([cat test], [0], [yes
74 $srcdir/t/$1.sh
75 ])
76
77 TEST_CONFIGURE([FAKE_$2_VERSION=2.5.0 $2="$srcdir/t/$1.sh"])
78 AT_CHECK_UNQUOTED([cat test], [0], [yes
79 $srcdir/t/$1.sh
80 ])
81
82 TEST_CONFIGURE([FAKE_$2_VERSION=2.1.2 $2="$srcdir/t/$1.sh"])
83 AT_CHECK_UNQUOTED([cat test], [0], [no
84 $srcdir/t/$1.sh
85 ])
86
87 TEST_CONFIGURE([FAKE_$2_VERSION=2.1.3 $2="$srcdir/t/$1.sh"])
88 AT_CHECK_UNQUOTED([cat test], [0], [yes
89 $srcdir/t/$1.sh
90 ])
91
92 AT_CLEANUP
93 ])
94
95 TEST_SIMPLE_PROGRAM_PROBES([gob2])
96 TEST_SIMPLE_PROGRAM_PROBES([flex])