aboutsummaryrefslogtreecommitdiffhomepage
path: root/configure.ac
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2024-11-03 16:15:01 +0300
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2024-11-03 22:36:36 +0300
commit18bb9c0cd8e8b8f74347eef1a5afabe6233159d7 (patch)
tree1dfa552f4622c3f68f3f6e29e16c413b84582eca /configure.ac
parent8470d478409b66410170b063286ffe8c7124a764 (diff)
downloadsciteco-18bb9c0cd8e8b8f74347eef1a5afabe6233159d7.tar.gz
Added "infinite monkey"-style test (refs #26)
Supposing that any monkey hitting keys on a typewriter, serving as a hardcopy SciTECO terminal, will sooner or later trigger bugs and crash the application, the new monkey-test.apl script emulates such a monkey. In fact it's a bit more elaborate as the generated macro follows the frequency distribution extracted from the corpus of SciTECO macro files (via monkey-parse.apl). This it is hoped, increases the chance to get into "interesting" parser states. This also adds a new hidden --sandbox argument, but it works only on FreeBSD (via Capsicum) so far. In sandbox mode, we cannot open any file or execute external commands. It is made sure, that SciTECO cannot assert in sandbox mode for scripts that would run without --sandbox, since assertions are the kind of things we would like to detect. SciTECO must be sandboxed during "infinite monkey" tests, so it cannot accidentally do any harm on the system running the tests. All macros in sandbox mode must currently be passed via --eval. Alternatively, we could add a test compilation unit and generate the test data directly in memory via C code. The new scripts are written in GNU APL 1.9 and will probably work only under FreeBSD. These scripts are not meant to be run by everyone.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac4
1 files changed, 4 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 959afbc..870b7b0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -148,6 +148,10 @@ case $host in
;;
esac
+# Optional support for sandboxing via FreeBSD's Capsicum.
+AC_CHECK_FUNCS([cap_enter cap_getmode])
+AC_CHECK_HEADERS([sys/capsicum.h])
+
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_INLINE