#haskell #code-coverage #cabal #cabal-new
#haskell #покрытие кода #cabal #cabal-новый #haskell-program-coverage
Вопрос:
При запуске stack test --coverage
генерируется хороший HTML-отчет, показывающий, какие строки охватывает ваш набор тестов. Как я могу добиться того же с помощью cabal new-test
?
Я могу передать, --enable-coverage
чтобы сгенерировать .tix
файл, но я не уверен, что запускать в .tix
файле для создания HTML-отчета. Я почти уверен, что это связано hpc
но я не смог выработать правильную команду.
У меня стандартная конфигурация Cabal моего приложения, представляющего собой библиотеку, с набором тестов для этой библиотеки.
Ответ №1:
Кажется, это так же просто, как передать --enable-coverage
в cabal new-test
. Ранее я запускал тесты с cabal new-run test:test
, чтобы обойти некоторые ограничения new-test
(например, отсутствие потоковой передачи и цветов), поэтому исправление заключается в использовании new-test
вместо new-run
.
Ответ №2:
Cabal 3.6 должен иметь возможность генерировать отчет HPC. Есть одно предостережение; может появиться эта ошибка:
Error:
Internal libraries only supported with per-component builds.
Per-component builds were disabled because program coverage is enabled
https://github.com/haskell/cabal/issues/6440
Чтобы избежать ошибки, добавьте в cabal.project
:
package *
coverage: True
library-coverage: True
затем cabal test
(без --enable-coverage
). Отчет должен быть где-то в dist-newstyle
.