diff --git a/contrib/fuzz/Makefile b/contrib/fuzz/Makefile --- a/contrib/fuzz/Makefile +++ b/contrib/fuzz/Makefile @@ -14,7 +14,7 @@ PYTHON_CONFIG ?= $$OUT/sanpy/bin/python- CXXFLAGS += -Wno-deprecated-register -all: bdiff mpatch xdiff +all: standalone_fuzz_target_runner.o oss-fuzz standalone_fuzz_target_runner.o: standalone_fuzz_target_runner.cc diff --git a/tests/test-fuzz-targets.t b/tests/test-fuzz-targets.t --- a/tests/test-fuzz-targets.t +++ b/tests/test-fuzz-targets.t @@ -1,6 +1,7 @@ #require test-repo $ cd $TESTDIR/../contrib/fuzz + $ OUT=$TESTTMP ; export OUT which(1) could exit nonzero, but that's fine because we'll still end up without a valid executable, so we don't need to check $? here. @@ -27,20 +28,37 @@ up without a valid executable, so we don #if clang-libfuzzer $ CXX=clang++ havefuzz || exit 80 - $ $MAKE -s clean all + $ $MAKE -s clean all PYTHON_CONFIG=`which python-config` #endif #if no-clang-libfuzzer clang-6.0 $ CXX=clang++-6.0 havefuzz || exit 80 - $ $MAKE -s clean all CC=clang-6.0 CXX=clang++-6.0 + $ $MAKE -s clean all CC=clang-6.0 CXX=clang++-6.0 PYTHON_CONFIG=`which python-config` #endif #if no-clang-libfuzzer no-clang-6.0 $ exit 80 #endif -Just run the fuzzers for five seconds each to verify it works at all. - $ ./bdiff -max_total_time 5 - $ ./mpatch -max_total_time 5 - $ ./xdiff -max_total_time 5 + $ cd $TESTTMP + +Run each fuzzer using dummy.cc as a fake input, to make sure it runs +at all. In the future we should instead unpack the corpus for each +fuzzer and use that instead. + + $ for fuzzer in `ls *_fuzzer | sort` ; do + > echo run $fuzzer... + > ./$fuzzer dummy.cc > /dev/null 2>&1 + > done + run bdiff_fuzzer... + run dirs_fuzzer... + run dirstate_fuzzer... + run fm1readmarkers_fuzzer... + run fncache_fuzzer... + run jsonescapeu8fast_fuzzer... + run manifest_fuzzer... + run mpatch_fuzzer... + run revlog_fuzzer... + run xdiff_fuzzer... Clean up. + $ cd $TESTDIR/../contrib/fuzz $ $MAKE -s clean