]> git.draconx.ca Git - dxcommon.git/blobdiff - m4/autotest.m4
Implement initial test suite.
[dxcommon.git] / m4 / autotest.m4
diff --git a/m4/autotest.m4 b/m4/autotest.m4
new file mode 100644 (file)
index 0000000..f9e1eea
--- /dev/null
@@ -0,0 +1,47 @@
+dnl Copyright © 2015 Nick Bowler
+dnl
+dnl Macro to find an working autotest installation.
+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.
+dnl There is NO WARRANTY, to the extent permitted by law.
+
+m4_define([_DX_PROG_AUTOTEST_SRC], [cat >conftest.at <<'EOF'
+m4@&t@_define(@<:@AT_PACKAGE_STRING@:>@,    @<:@AC_PACKAGE_STRING@:>@)
+m4@&t@_define(@<:@AT_PACKAGE_BUGREPORT@:>@, @<:@AC_PACKAGE_BUGREPORT@:>@)
+AT_INIT
+EOF])
+
+m4_define([_DX_PROG_AUTOTEST_CHECK_OUT],
+  [AS_IF([$FGREP "$PACKAGE_STRING" conftest.out >/dev/null 2>&1],
+    [DX_DO([dx_cv_autotest_works=yes],
+      [AS_VAR_SET([dx_cv_autotest_cmd], ["$1"])])])])
+
+m4_define([_DX_PROG_AUTOTEST_CHECK_CMD],
+  [AS_IF([test x"$dx_cv_autotest_cmd" = x"false"],
+    [AS_IF([AC_RUN_LOG([$1 conftest.at >conftest.sh])],
+      [AS_IF([AC_RUN_LOG([$SHELL conftest.sh --version >conftest.out])],
+        [_DX_PROG_AUTOTEST_CHECK_OUT($@)])])])])
+
+m4_define([_DX_PROG_AUTOTEST_SET_VAR],
+  [DX_DO([AC_CACHE_CHECK([for autotest], [dx_cv_autotest_cmd],
+            [AS_VAR_SET_IF([AUTOTEST],
+              [dx_cv_autotest_cmd=$AUTOTEST],
+              [DX_DO([dx_cv_autotest_works=no dx_cv_autotest_cmd=false],
+                [AS_VAR_SET_IF([AUTOTEST],
+                  [_DX_PROG_AUTOTEST_CHECK_CMD([$AUTOTEST])])],
+                [AS_VAR_SET_IF([AUTOM4TE],
+                  [_DX_PROG_AUTOTEST_CHECK_CMD([$AUTOM4TE -l autotest])])],
+                [_DX_PROG_AUTOTEST_CHECK_CMD([autom4te -l autotest])])])])],
+    [AUTOTEST=$dx_cv_autotest_cmd])])
+
+AC_DEFUN([DX_PROG_AUTOTEST],
+  [m4_do([AC_REQUIRE([AC_PROG_FGREP])],
+    [AC_ARG_VAR([AUTOTEST], [command to compile autotest programs])],
+    [DX_DO([_DX_PROG_AUTOTEST_SRC],
+      [_DX_PROG_AUTOTEST_SET_VAR],
+      [AC_CACHE_CHECK([whether autotest works],
+        [dx_cv_autotest_works],
+        [DX_DO([dx_cv_autotest_works=no],
+          [_DX_PROG_AUTOTEST_CHECK_CMD([$AUTOTEST])])])])],
+    [AC_SUBST([AUTOTEST])])])