Применив предыдущие команды, можно получить покрытие для каждого отдельного пакета. Однако, чтобы увидеть общую картину, нужно объединить результаты. Для этого мы используем Melos и специальные скрипты.
Начнем с обновления скрипта для генерации покрытия. Он должен работать с каждым пакетом отдельно. Добавим проверку на наличие папки test, и, если ее нет, создадим:
package=$1
if [ ! -d “test” ]; then
mkdir test
fi
Далее заменим в скрипте статическое название пакета на переменную:
package=$package
Теперь скрипт сможет корректно обрабатывать все модули.
Чтобы объединить результаты покрытия, создадим скрипт, который соберет все данные в один файл:
escapedPath=”$(echo pwd | sed ‘s/\//\\\//g’)”
if grep flutter pubspec.yaml > /dev/null; then
if [ -d “coverage” ]; then
if [ ! -d “$MELOS_ROOT_PATH/coverage_report” ]; then
mkdir “$MELOS_ROOT_PATH/coverage_report”!
fi
sed “s/^SF:lib:$escapedPath\/lib/g” coverage/lcov.info >> “$MELOS_ROOT_PATH/coverage_report/lcov.info”
rm -rf “coverage”
fi
fi
Этот скрипт ищет папки с покрытиями, объединяет файлы lcov.info в один общий и сохраняет его в папке coverage_report в корне проекта. После этого можно создать HTML-отчет о покрытии кода тестами ⚙️
А как вы обычно отслеживаете покрытие кода в своих проектах? Рассказывайте в чате.