aboutsummaryrefslogtreecommitdiff
path: root/third_party/fuzztest/docs.rst
blob: 44e3892adb20c597e7fdf559229e3779fc69372f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
.. _module-pw_third_party_fuzztest:

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

.. _module-pw_third_party_fuzztest-using_upstream:

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

Submodule
=========
Add FuzzTest to your workspace with the following command.

.. code-block:: sh

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

.. tab-set::

   .. tab-item:: GN

      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
        :ref:`module-pw_third_party_abseil_cpp` source.

      * Set ``dir_pw_third_party_googletest`` to the location of the
        :ref:`module-pw_third_party_googletest` source.

      * Set ``dir_pw_third_party_re2`` to the location of the
        :ref:`module-pw_third_party_re2` source.

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

      .. code-block::

         # 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"

   .. tab-item:: CMake

      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
        :ref:`module-pw_third_party_googletest` source.

      * Set ``pw_unit_test_GOOGLETEST_BACKEND`` to ``pw_third_party.fuzztest``.

   .. tab-item:: Bazel

      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:

      .. code-block:: sh

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

.. _target config: :ref:`_docs-build_system-bazel_configuration`
.. _label flags: :ref:`_docs-build_system-bazel_flags`

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

The script uses data taken from ``$dir_pw_third_party/fuzztest/repo.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 can be specified using
the ``-w`` option, e.g.

.. code-block:: sh

   python pw_build/py/pw_build/generate_3p_gn.py \
     -w third_party/fuzztest/src

.. DO NOT EDIT BELOW THIS LINE. Generated section.

Version
=======
The update script was last run for revision `3c77f971`_.

.. _3c77f971: https://github.com/google/fuzztes/tree/3c77f97183a1270796d25db1a8956706a25af238