Add ptest support for googletest

Test result:
root@qemux86-64:~# ptest-runner googletest
START: ptest-runner
2026-06-08T02:33
BEGIN: /usr/lib/googletest/ptest
PASS: gmock-actions_test
PASS: gmock-cardinalities_test
PASS: gmock_ex_test
PASS: gmock-function-mocker_test
PASS: gmock-internal-utils_test
PASS: gmock-matchers-arithmetic_test
PASS: gmock-matchers-comparisons_test
PASS: gmock-matchers-containers_test
PASS: gmock-matchers-misc_test
PASS: gmock-more-actions_test
PASS: gmock-nice-strict_test
PASS: gmock-port_test
PASS: gmock-spec-builders_test
PASS: gmock_link_test
PASS: gmock_test
PASS: gmock_stress_test
PASS: gmock-more-actions_no_exception_test
PASS: gmock_no_rtti_test
PASS: googletest-death-test-test
PASS: gtest_environment_test
PASS: googletest-filepath-test
PASS: googletest-listener-test
PASS: gtest_main_unittest
PASS: googletest-message-test
PASS: gtest_no_test_unittest
PASS: googletest-options-test
PASS: googletest-param-test-test
PASS: googletest-port-test
PASS: gtest_pred_impl_unittest
PASS: gtest_premature_exit_test
PASS: googletest-printers-test
PASS: gtest_prod_test
PASS: gtest_repeat_test
PASS: gtest_sole_header_test
PASS: gtest_stress_test
PASS: googletest-test-part-test
PASS: gtest_throw_on_failure_ex_test
PASS: gtest-typed-test_test
PASS: gtest_unittest
PASS: gtest-unittest-api_test
PASS: gtest_skip_in_environment_setup_test
PASS: gtest_skip_test
PASS: gtest-death-test_ex_nocatch_test
PASS: gtest-death-test_ex_catch_test
PASS: gtest_no_rtti_unittest
PASS: googletest-break-on-failure-unittest
PASS: gtest_skip_check_output_test
PASS: gtest_skip_environment_check_output_test
PASS: googletest-catch-exceptions-test
PASS: googletest-color-test
PASS: googletest-env-var-test
PASS: googletest-filter-unittest
PASS: gtest_help_test
PASS: googletest-list-tests-unittest
PASS: googletest-output-test
PASS: googletest-shuffle-test
PASS: googletest-throw-on-failure-test
PASS: googletest-uninitialized-test
PASS: gtest_list_output_unittest
PASS: gtest_xml_outfiles_test
PASS: googletest-json-outfiles-test
PASS: gtest_xml_output_unittest
PASS: googletest-json-output-unittest
DURATION: 16
END: /usr/lib/googletest/ptest
2026-06-08T02:34
STOP: ptest-runner
TOTAL: 1 FAIL: 0

Signed-off-by: Zeming LIU <zeming.liu@windriver.com>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
Zeming LIU
2026-06-08 10:41:04 +08:00
committed by Khem Raj
parent f79aaeb828
commit ee3134d2e8
3 changed files with 47 additions and 1 deletions
@@ -23,6 +23,7 @@ PTESTS_FAST_META_OE = "\
function2 \
fwupd \
gcab \
googletest \
hunspell \
imagemagick \
jemalloc \
@@ -0,0 +1,3 @@
#!/bin/sh
ctest | sed -u 's/\*\*\*/ /g' | awk '/Test +#/{gsub(/Passed/,"PASS"); gsub(/Failed/,"FAIL"); gsub(/Skipped/,"SKIP"); print $6": "$4; fflush();}'
@@ -7,15 +7,20 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=cbbd27594afd089daa160d3a16dd515a"
PROVIDES += "gmock gtest"
SRC_URI = "git://github.com/google/googletest.git;branch=v1.17.x;protocol=https \
file://run-ptest \
"
SRCREV = "52eb8108c5bdec04579160ae17225d66034bd723"
inherit cmake pkgconfig
inherit cmake pkgconfig ptest
# allow for shared libraries, but do not default to them
#
PACKAGECONFIG[shared] = "-DBUILD_SHARED_LIBS=ON,-DBUILD_SHARED_LIBS=OFF,,"
EXTRA_OECMAKE += "${@bb.utils.contains('PTEST_ENABLED', '1', '-Dgtest_build_tests=ON -Dgmock_build_tests=ON', '', d)}"
DEPENDS += "${@bb.utils.contains('PTEST_ENABLED', '1', 'rsync-native', '', d)}"
CXXFLAGS:append = " -fPIC"
ALLOW_EMPTY:${PN} = "1"
@@ -35,3 +40,40 @@ do_configure:prepend() {
# there isn't python in HOSTTOOLS so "env python" fails
sed -i 's@^#!/usr/bin/env python$@#!/usr/bin/env python3@g' ${S}/googlemock/test/*py ${S}/googletest/test/*py
}
do_install_ptest() {
install -d ${D}${PTEST_PATH}/lib
ptest_libs="libshared_gmock_main.so \
libgtest_dll.so \
libgmock_main_no_exception.so \
libgtest_main_no_exception.so \
libgtest_no_exception.so \
libgtest_main_no_rtti.so \
"
for i in ${ptest_libs}; do
[ -f ${B}/lib/${i} ] && install -m 0755 ${B}/lib/${i} ${D}${PTEST_PATH}/lib
done
rsync -a ${B}/googletest ${D}${PTEST_PATH} \
--exclude CMakeFiles \
--exclude cmake_install.cmake \
--exclude Makefile \
--exclude generated
install -d ${D}${PTEST_PATH}/googletest/test
cp ${S}/googletest/test/*.py ${D}${PTEST_PATH}/googletest/test
cp ${S}/googletest/test/*.txt ${D}${PTEST_PATH}/googletest/test
rsync -a ${B}/googlemock ${D}${PTEST_PATH} \
--exclude CMakeFiles \
--exclude cmake_install.cmake \
--exclude Makefile \
--exclude generated
cp ${B}/CTestTestfile.cmake ${D}${PTEST_PATH}
sed -i -e 's#${B}#${PTEST_PATH}#g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
sed -i -e 's#${S}#${PTEST_PATH}#g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
sed -i -e 's#${RECIPE_SYSROOT_NATIVE}##g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
sed -i -e 's#${PYTHON}#/usr/bin/python3#g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
sed -i -e 's#${WORKDIR}##g' `find ${D}${PTEST_PATH} -name CTestTestfile.cmake`
}
RDEPENDS:${PN}-ptest += "cmake sed python3-datetime python3-difflib python3-json python3-xml python3-misc python3-unittest"