The $dir_pw_third_party/googletest/ module provides various helpers to optionally use full upstream GoogleTest/GoogleMock with pw_unit_test.

Using upstream GoogleTest and GoogleMock#

If you want to use the full upstream GoogleTest/GoogleMock, you must do the following:

Add GoogleTest to your workspace with the following command.

git submodule add third_party/googletest

Configure pw_unit_test to use upstream GoogleTest/GoogleMock.

  • Set the GN var dir_pw_third_party_googletest to the location of the GoogleTest source. If you are using a different version of the upstream GoogleTest, or a different target than //third_party/googletest, set pw_unit_test_GOOGLETEST_BACKEND to point to your GoogleTest target instead.

  • Set the GN var pw_unit_test_MAIN to dir_pigweed + "/third_party/googletest:gmock_main".

  • Set the GN var pw_unit_test_BACKEND to "//pw_unit_test:googletest".

Pigweed unit tests that do not work with upstream GoogleTest can be disabled by setting enable_if to pw_unit_test_BACKEND == "$dir_pw_unit_test:light".

  • Set the dir_pw_third_party_googletest to the location of the GoogleTest source.

  • Set the var pw_unit_test_MAIN to pw_third_party.googletest.gmock_main.

  • Set the var pw_unit_test_BACKEND to pw_unit_test.googletest.

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

  • pw_unit_test_backend to @pigweed//pw_unit_test:googletest.

  • pw_unit_test_main to @com_google_googletest//:gtest_main.

For example:

bazel test //... \
   --@pigweed//pw_unit_test:backend=@pigweed//pw_unit_test:googletest \


Not all unit tests build properly with upstream GoogleTest yet. This is a work in progress.