Как создать покрытие cpp из bazel py_test - PullRequest
0 голосов
/ 13 марта 2019

Я написал несколько тестов 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 файлы или получить покрытие любым другим способом?

...