我正在遵循将选项传递给HSPEC的HSPEC文档。从命令行传递时指定我的选项可按预期工作,而从.hspec
文件或任何其他列出的方法传递时则不行。
我的测试套件中的测试之一与" post_returns_200"的过滤器匹配。我可以单独运行此测试,而无需通过命令
运行其余的套件stack test --test-arguments=--match="post_returns_200"
链接的HSPEC文档表明,我不仅可以从命令行中指定此过滤器,还应从.hspec
文件,ghci
内部或环境变量指定此过滤器。但是,当我按照文档通过其中一种方法指定过滤器时,我会收到"未识别的选项"错误。例如,当我通过
.hspec
文件中指定选项时 $ echo --match="post_returns_200">>.hspec
然后运行stack test
返回以下
$ 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的源代码(在当前活动分支上发生了很大变化,但仍然不允许您想要的东西):
-
命令行选项用
recognizedOptions
解析,其中包含commandLineOptions
(包括--match
)和configFileOptions
。 -
配置文件选项,通过
parseOtherOptions
,仅使用configFileOptions
,其中不包括--match
。