FuzzTest#

The $dir_pw_third_party/fuzztest/ module provides build files to allow optionally including upstream FuzzTest.

Using upstream FuzzTest#

If you want to use FuzzTest, you must do the following:

Submodule#

Add FuzzTest to your workspace with the following command.

git submodule add https://github.com/google/fuzztest.git \
  third_party/fuzztest

Set the GN following GN bauild args:

  • Set dir_pw_third_party_fuzztest to the location of the FuzzTest source. If you used the command above, this will be //third_party/fuzztest.

  • Set dir_pw_third_party_abseil_cpp to the location of the Abseil C++ source.

  • Set dir_pw_third_party_googletest to the location of the GoogleTest source.

  • Set dir_pw_third_party_re2 to the location of the RE2 source.

This can be set in your args.gn or .gn file. For example:

# Set build arguments here. See `gn help buildargs`.
dir_pw_third_party_abseil_cpp="//third_party/abseil-cpp"
dir_pw_third_party_fuzztest="//third_party/fuzztest"
dir_pw_third_party_googletest="//third_party/googletest"
dir_pw_third_party_re2="//third_party/re2"

Set the following CMake variables:

  • Set dir_pw_third_party_fuzztest to the location of the FuzzTest source.

  • Set dir_pw_third_party_googletest to the location of the GoogleTest source.

  • Set pw_unit_test_BACKEND to pw_third_party.fuzztest.

Set the following label flags, either in your target config or on the command line:

  • pw_fuzzer_fuzztest_backend to @com_google_fuzztest//fuzztest.

For example:

bazel test //... \
   --@pigweed//targets:pw_fuzzer_fuzztest_backend=@com_google_fuzztest//fuzztest

Updating#

The GN build files are generated from the third-party Bazel build files using $dir_pw_build/py/pw_build/bazel_to_gn.py.

The script uses data taken from a bazel_to_gn.json file for this module and for each third party module that this module depends on, e.g. $PW_ROOT/third_party/fuzztest/bazel_to_gn.json.

The script should be re-run whenever the submodule is updated or the JSON file is modified. Specify the location of the Bazel repository using gn args, then run:

python pw_build/py/pw_build/bazel_to_gn.py fuzztest

Additionally, the fuzztest.bazelrc file should regenerated. From this directory, run:

bazel run @com_google_fuzztest//bazel:setup_configs > fuzztest.bazelrc

Version#

The update script was last run for revision b7257a64.