Я написал несколько тестов Python, которые запускают двоичные файлы cpp в качестве подпроцесса.Код Python отвечает за выполнение тестов в этом процессе.
Я запускаю эти тесты Python в правиле py_test bazel.Проблема в том, что это не считается, как если бы наш код cpp был покрыт тестами, потому что правило py_test может выполнять тестовую оболочку только для файлов python.Файлы, используемые для создания покрытия, являются файлами .gcda, и эти файлы создаются, когда мы запускаем bazel coverage test_name
.В нашем случае охват cpp-файлов невозможен, поскольку тесты выполняются как py_test, и в bazel есть открытая ошибка для этого.
Я попытался добавить флаги copts = ["-fprofile-arcs","-ftest-coverage"]
и linkopts = ["-fprofile-arcs", "-lgcov --coverage"]
в правило cc_binary, которое создаетдвоичные файлы cpp (мы тестируем эти исполняемые файлы с помощью py_test), но единственное, что нам удается сделать, - это получить файлы .gcno (возможно, потому что наш cc_binary только собран и не запущен).
Любая идея, как получить.gcda файлы или получить покрытие любым другим способом?