我如何 运行 nyc 从 Makefile 合并?
How do I run nyc merge from Makefile?
我继承了带有 Jasmine 单元测试的 JS 代码库。测试框架使用 karma
和 instanbul-combine
来获取代码覆盖率。似乎 istanbul-combine
不适用于当前的节点模块,而且不再维护:推荐的替代品是 nyc
。我在 Makefile
.
中用 nyc
替换 istanbul-combine
时遇到问题
这是我合并数据的尝试(甚至还没有尝试获取报告):
#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
中,但 none 次尝试成功将其合并到结果文件中 coverage-final.json
。
对于 #1,我很确定它实际上只是将一组结果合并到结果文件中。对于#2,有一个错误;但是,如果我将该命令放入 shell CLI,结果文件中将不会有任何内容。
对于#3,至少没有错误,但只有一个覆盖文件被合并。
这是我要替换的原始 Makefile 行:
PATH=$(PROJECT_HOME)/bin:$$PATH node_modules/istanbul-combine/cli.js \
-d coverage/summary -r html \
coverage/*/coverage-final.json
我在 Makefile 中写了一个小脚本,将 coverage-final.json
文件从 coverage
目录的子目录复制到 coverage
目录本身,然后将它们合并到一个coverage-final.json
主 JS 目录中的文件。
@cd coverage; \
for dir in $(dir */coverage-final.json); do \
fn="$${dir}coverage-final.json"; \
newName="$${dir::-1}.json"; \
echo "cp $${fn} $${newName}"; \
cp $$fn $$newName; \
done;
npx nyc merge coverage coverage-final.json
各个覆盖文件的新文件名取自它们所在目录的名称。
我继承了带有 Jasmine 单元测试的 JS 代码库。测试框架使用 karma
和 instanbul-combine
来获取代码覆盖率。似乎 istanbul-combine
不适用于当前的节点模块,而且不再维护:推荐的替代品是 nyc
。我在 Makefile
.
nyc
替换 istanbul-combine
时遇到问题
这是我合并数据的尝试(甚至还没有尝试获取报告):
#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
中,但 none 次尝试成功将其合并到结果文件中 coverage-final.json
。
对于 #1,我很确定它实际上只是将一组结果合并到结果文件中。对于#2,有一个错误;但是,如果我将该命令放入 shell CLI,结果文件中将不会有任何内容。
对于#3,至少没有错误,但只有一个覆盖文件被合并。
这是我要替换的原始 Makefile 行:
PATH=$(PROJECT_HOME)/bin:$$PATH node_modules/istanbul-combine/cli.js \
-d coverage/summary -r html \
coverage/*/coverage-final.json
我在 Makefile 中写了一个小脚本,将 coverage-final.json
文件从 coverage
目录的子目录复制到 coverage
目录本身,然后将它们合并到一个coverage-final.json
主 JS 目录中的文件。
@cd coverage; \
for dir in $(dir */coverage-final.json); do \
fn="$${dir}coverage-final.json"; \
newName="$${dir::-1}.json"; \
echo "cp $${fn} $${newName}"; \
cp $$fn $$newName; \
done;
npx nyc merge coverage coverage-final.json
各个覆盖文件的新文件名取自它们所在目录的名称。