0

我正在 Lua 中编写一些 kong 自定义插件。我正在使用 Kong 2.3.3 和 Lua 5.1。

我有一些测试用例(单元测试+集成测试),我正在使用 pongo run -coverage 选项运行它们。我已经安装了 luacov(还有 cluacov,都安装了 luarocks)并且我的所有测试都通过了,但是没有使用覆盖数据生成 luacov 文件。我没有从 Docker 运行 pongo,我已经在我的本地机器(即 Linux Ubuntu 20.04)中安装并配置了它。

我已经尝试了以下几件事:

  • 我的 .busted 文件设置 coverage = true、verbose = true 和 output = "gtest"(已经尝试过 utfTerminal、tap 和 json)
  • 尝试将 luacov 作为依赖项添加到我的 rockspec 文件中......构建没有失败,但没有生成覆盖文件
  • 我什至尝试在没有 pongo 的情况下运行测试,直接使用 busted 但这是一个非常糟糕的选择,因为我的 LUAPATH 中没有设置诸如 spec.helpers 或 cjson 库之类的东西
4

3 回答 3

1

一个快速的方法是修改 pongo

将您的 pongo.sh 文件编辑为:

  • 将覆盖标志添加到被破坏--coverage
  • 调用 luacov 生成报告luacov
  • 显示报告cat luacov.report.out

找到调用 busted 的位置,我的第 959 行:

"/bin/sh" "-c" "bin/busted --coverage --helper=bin/busted_helper.lua ${busted_params[*]} ${busted_files[*]};luacov;cat luacov.report.out"

安装luacov,安装完成后编辑assets/Dockerfile 添加 luacov:

    && luarocks install busted-htest \
    && luarocks install luacov \

pongo run会给你

[...]
==============================================================================
Summary
==============================================================================

File                                                                              Hits  Missed Coverage
-------------------------------------------------------------------------------------------------------
/kong-plugin/kong/plugins/myplugin/schema.lua                                     105   1      99.06%
/kong-plugin/spec/myplugin/01-schema_spec.lua                                     199   5      97.55%
[...]
于 2021-04-02T20:37:32.483 回答
0

可以基于pongo创建docker镜像

规格/单元/码头工人/Dockerfile

FROM kong-pongo-test:2.3.2
USER root
RUN luarocks install luacov
WORKDIR /kong-plugin
COPY . .

规范/单元/docker/run.sh

#!/bin/sh
busted --coverage spec/unit
luacov
cat luacov.report.out

docker build -f spec/unit/docker/Dockerfile -t my-coverage .
docker run my-coverage sh spec/unit/docker/run.sh
于 2021-05-06T21:50:13.903 回答
0

Pongo 对此获得了一些支持(仍然是 PR)。请注意,它仅涵盖单元测试,而不是集成测试。

https://github.com/Kong/kong-pongo/pull/184

顺便说一句:imo其他答案太复杂了,您可以添加.pongo/pongo-setup.sh安装LuaCov,并将.luacov文件/kong-plugin/kong. 这应该是所有必要的。

通过传递标志可以简单地运行覆盖测试,无需编辑 pongo 或 dockerfile。举个pongo run -- --coverage例子。

于 2021-07-08T20:19:04.743 回答