Я унаследовал базу кода JS с модульными тестами Jasmine. Платформа тестирования использует karma
и instanbul-combine
для получения покрытия кода. Похоже, что istanbul-combine
не работает с существующими модулями узла, и, кроме того, больше не поддерживается: рекомендуемая замена - nyc
. У меня возникли проблемы с заменой istanbul-combine
на nyc
в Makefile
.
Вот мои попытки объединить данные (даже не пытаясь получить отчет):
#1
@for dir in $(shell ls -d coverage/*/); do \
echo "Merging $${dir}"; \
npx nyc merge $${dir} coverage-final.json; \
done
#2
npx nyc merge coverage coverage-final.json
#3
npx nyc merge --include coverage/*/ coverage-final.json
Данные о покрытии находятся в файле coverage/*/coverage-final.json
, но ни одна из этих попыток не привела к слиянию их с файлом результатов coverage-final.json
.
С # 1 я почти уверен, что на самом деле это только объединение одного набора результатов в файл результатов. С # 2 есть ошибка; но если я помещу эту команду в командную строку оболочки, в результирующий файл ничего не будет помещено.
С #3 по крайней мере ошибки нет, но сливается только один из файлов покрытия.
Вот исходная строка Makefile, которую я заменяю:
PATH=$(PROJECT_HOME)/bin:$$PATH node_modules/istanbul-combine/cli.js \
-d coverage/summary -r html \
coverage/*/coverage-final.json