D7566: tests: finally fix up test-fuzz-targets.t

durin42 (Augie Fackler) phabricator at mercurial-scm.org
Fri Dec 6 15:51:47 EST 2019


durin42 created this revision.
Herald added subscribers: mercurial-devel, mjpieters.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  It's been failing on my workstation for a while, since I have a new enough
  LLVM that I had the fuzzer goo, but not so new that I actually had
  FuzzedDataProvider. This is a better solution all around in my opinion.
  
  I _believe_ this should let us run these tests on most systems, even
  those using GCC instead of clang. That said, my one attempt to test
  this on my macOS laptop failed miserably, and I don't feel like doing
  more work on this right now.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D7566

AFFECTED FILES
  contrib/fuzz/Makefile
  tests/test-fuzz-targets.t

CHANGE DETAILS

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 @@
 
 #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
diff --git a/contrib/fuzz/Makefile b/contrib/fuzz/Makefile
--- a/contrib/fuzz/Makefile
+++ b/contrib/fuzz/Makefile
@@ -14,7 +14,7 @@
 
 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
 



To: durin42, #hg-reviewers
Cc: mjpieters, mercurial-devel


More information about the Mercurial-devel mailing list