cannam@62: #! /bin/bash cannam@62: cannam@62: set -euo pipefail cannam@62: cannam@62: echo "Choose test case:" cannam@62: echo "1) TestAllTypes parsing" cannam@62: echo "2) TestLists parsing" cannam@62: echo "3) Canonicalization" cannam@62: cannam@62: read -p "choice: " -n 1 TESTCASE cannam@62: echo cannam@62: cannam@62: case "$TESTCASE" in cannam@62: 1 ) cannam@62: TESTDATA=binary cannam@62: FLAGS= cannam@62: TESTNAME=default cannam@62: ;; cannam@62: 2 ) cannam@62: TESTDATA=lists.binary cannam@62: FLAGS=--lists cannam@62: TESTNAME=lists cannam@62: ;; cannam@62: 3 ) cannam@62: TESTDATA=binary cannam@62: FLAGS=--canonicalize cannam@62: TESTNAME=canonicalize cannam@62: ;; cannam@62: * ) cannam@62: echo "Invalid choice: $TESTCASE" >&2 cannam@62: exit 1 cannam@62: esac cannam@62: cannam@62: echo "Choose compiler:" cannam@62: echo "1) GCC" cannam@62: echo "2) Clang" cannam@62: cannam@62: read -p "choice: " -n 1 TESTCASE cannam@62: echo cannam@62: cannam@62: case "$TESTCASE" in cannam@62: 1 ) cannam@62: export CXX=afl-g++ cannam@62: ;; cannam@62: 2 ) cannam@62: export CXX=afl-clang++ cannam@62: ;; cannam@62: * ) cannam@62: echo "Invalid choice: $TESTCASE" >&2 cannam@62: exit 1 cannam@62: esac cannam@62: cannam@62: if [ -e Makefile ]; then cannam@62: if ! grep -q '^CXX *= *'"$CXX" Makefile; then cannam@62: # Wrong compiler used. cannam@62: make distclean cannam@62: $(dirname $0)/configure --disable-shared cannam@62: fi cannam@62: else cannam@62: $(dirname $0)/configure --disable-shared cannam@62: fi cannam@62: cannam@62: make -j$(nproc) cannam@62: make -j$(nproc) capnp-afl-testcase cannam@62: cannam@62: NOW=$(date +%Y-%m-%d.%H-%M-%S).$TESTNAME.$CXX cannam@62: cannam@62: mkdir afl.$NOW.inputs afl.$NOW.findings cannam@62: cannam@62: cp $(dirname $0)/src/capnp/testdata/$TESTDATA afl.$NOW.inputs cannam@62: cannam@62: afl-fuzz -i afl.$NOW.inputs -o afl.$NOW.findings -- ./capnp-afl-testcase $FLAGS