hspec 测试参数适用于命令行,但不适用于 .hspec 文件

hspec test arguments work on command line but not from .hspec file

我正在关注 hspec documentation 将选项传递给 Hspec。指定我的选项在从命令行传递时按预期工作,但在从 .hspec 文件或任何其他列出的方法传递时不起作用。

我的测试套件中的一个测试匹配过滤器 "post_returns_200"。我可以 运行 单独进行此测试,而无需通过命令 运行 连接套件的其余部分

stack test --test-arguments=--match="post_returns_200"

链接的 hspec 文档显示我不仅可以从命令行指定此过滤器,还可以:从 .hspec 文件、ghci 或环境多变的。但是,当我按照文档通过其他方法之一指定我的过滤器时,我收到 "unrecognized option" 错误。例如,当我通过

.hspec 文件中指定选项时
$ echo --match="post_returns_200">>.hspec

然后运行宁stack testreturns以下

$ stack test
azara-api-0.1.0.0: test (suite: azara-test)

azara-test: unrecognized option `--match="post_returns_200"' in config file /home/matthew/backup/azara_work/platform/api/.hspec

Test suite failure for package azara-api-0.1.0.0
    azara-test:  exited with: ExitFailure 1
Logs printed to console

当我尝试通过环境变量或从 ghci 中指定选项时,我遇到了类似的错误。我已经尝试了很多关于如何指定命令的变体,例如有或没有引号,有或没有“--test-arguments=”,但我在这一点上完全被难住了。关于为什么在通过命令行指定时该选项可以正常工作但其他方法无法识别的任何建议?

出于某种原因我忽略了,hspec 在命令行和配置文件中识别一组不同的选项。

截至目前,显式命令行参数(使用堆栈时通过 --test-arguments)是将 --match 传递给 hspec 的唯一方法。


来自 2.4.4 的源代码(在当前活动分支上有很多变化,但它仍然不允许您想要的):