有没有办法测试 vim 插件的覆盖率?
Is there a way how to test coverage of a vim plugin?
我正在使用 vimrunner-python 库来测试我用 python 编写的带有 py-test 和 pytest-cov 的 vim 插件。
Vimrunner python 执行 vim 服务器并通过服务器远程接口控制客户端 vim 实例。
但是,pytest-cov(显然)看不到 vim 进程执行的行。有没有办法让这项工作生效,即将覆盖指向 vim 的服务器 PID?
您需要运行插件本身的覆盖率测量,即像这样:
# Start measuring coverage if in testing
if vim.vars.get('measure_coverage'):
import os
import atexit
import coverage
coverage_path = os.path.expanduser('~/coverage-data/.coverage.{0}'.format(os.getpid()))
cov = coverage.coverage(data_file=coverage_path)
cov.start()
def save_coverage():
cov.stop()
cov.save()
atexit.register(save_coverage)
如果插件被多次调用,您需要使用覆盖工具合并覆盖文件:
$ cd ~/coverage-data
$ coverage combine
这将生成合并的 .coverage 文件,然后可用于生成所需的报告。
注意:确保每个 vim 实例只执行一次测量部分,否则覆盖文件可能会被重写。在这种情况下,应使用除 PID 之外的另一个唯一性来源(即随机数)来生成 .coverage 文件的名称。
我正在使用 vimrunner-python 库来测试我用 python 编写的带有 py-test 和 pytest-cov 的 vim 插件。
Vimrunner python 执行 vim 服务器并通过服务器远程接口控制客户端 vim 实例。
但是,pytest-cov(显然)看不到 vim 进程执行的行。有没有办法让这项工作生效,即将覆盖指向 vim 的服务器 PID?
您需要运行插件本身的覆盖率测量,即像这样:
# Start measuring coverage if in testing
if vim.vars.get('measure_coverage'):
import os
import atexit
import coverage
coverage_path = os.path.expanduser('~/coverage-data/.coverage.{0}'.format(os.getpid()))
cov = coverage.coverage(data_file=coverage_path)
cov.start()
def save_coverage():
cov.stop()
cov.save()
atexit.register(save_coverage)
如果插件被多次调用,您需要使用覆盖工具合并覆盖文件:
$ cd ~/coverage-data
$ coverage combine
这将生成合并的 .coverage 文件,然后可用于生成所需的报告。
注意:确保每个 vim 实例只执行一次测量部分,否则覆盖文件可能会被重写。在这种情况下,应使用除 PID 之外的另一个唯一性来源(即随机数)来生成 .coverage 文件的名称。