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