]> git.draconx.ca Git - dxcommon.git/blob - m4/autotest.m4
Implement initial test suite.
[dxcommon.git] / m4 / autotest.m4
1 dnl Copyright © 2015 Nick Bowler
2 dnl
3 dnl Macro to find an working autotest installation.
4 dnl
5 dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2.
6 dnl This is free software: you are free to do what the fuck you want to.
7 dnl There is NO WARRANTY, to the extent permitted by law.
8
9 m4_define([_DX_PROG_AUTOTEST_SRC], [cat >conftest.at <<'EOF'
10 m4@&t@_define(@<:@AT_PACKAGE_STRING@:>@,    @<:@AC_PACKAGE_STRING@:>@)
11 m4@&t@_define(@<:@AT_PACKAGE_BUGREPORT@:>@, @<:@AC_PACKAGE_BUGREPORT@:>@)
12 AT_INIT
13 EOF])
14
15 m4_define([_DX_PROG_AUTOTEST_CHECK_OUT],
16   [AS_IF([$FGREP "$PACKAGE_STRING" conftest.out >/dev/null 2>&1],
17     [DX_DO([dx_cv_autotest_works=yes],
18       [AS_VAR_SET([dx_cv_autotest_cmd], ["$1"])])])])
19
20 m4_define([_DX_PROG_AUTOTEST_CHECK_CMD],
21   [AS_IF([test x"$dx_cv_autotest_cmd" = x"false"],
22     [AS_IF([AC_RUN_LOG([$1 conftest.at >conftest.sh])],
23       [AS_IF([AC_RUN_LOG([$SHELL conftest.sh --version >conftest.out])],
24         [_DX_PROG_AUTOTEST_CHECK_OUT($@)])])])])
25
26 m4_define([_DX_PROG_AUTOTEST_SET_VAR],
27   [DX_DO([AC_CACHE_CHECK([for autotest], [dx_cv_autotest_cmd],
28             [AS_VAR_SET_IF([AUTOTEST],
29               [dx_cv_autotest_cmd=$AUTOTEST],
30               [DX_DO([dx_cv_autotest_works=no dx_cv_autotest_cmd=false],
31                 [AS_VAR_SET_IF([AUTOTEST],
32                   [_DX_PROG_AUTOTEST_CHECK_CMD([$AUTOTEST])])],
33                 [AS_VAR_SET_IF([AUTOM4TE],
34                   [_DX_PROG_AUTOTEST_CHECK_CMD([$AUTOM4TE -l autotest])])],
35                 [_DX_PROG_AUTOTEST_CHECK_CMD([autom4te -l autotest])])])])],
36     [AUTOTEST=$dx_cv_autotest_cmd])])
37
38 AC_DEFUN([DX_PROG_AUTOTEST],
39   [m4_do([AC_REQUIRE([AC_PROG_FGREP])],
40     [AC_ARG_VAR([AUTOTEST], [command to compile autotest programs])],
41     [DX_DO([_DX_PROG_AUTOTEST_SRC],
42       [_DX_PROG_AUTOTEST_SET_VAR],
43       [AC_CACHE_CHECK([whether autotest works],
44         [dx_cv_autotest_works],
45         [DX_DO([dx_cv_autotest_works=no],
46           [_DX_PROG_AUTOTEST_CHECK_CMD([$AUTOTEST])])])])],
47     [AC_SUBST([AUTOTEST])])])