我有一个用于大型项目(约3800个单独示例)的测试套件,我将其从RSpec 2.14更新为3.6。
我刚刚为s/be_true/be true/
运行了replace-all,但是其中一些应该改为be_truthy
,并且这些规范都失败了。
我可以通过一些工作从git diff
中提取更改的行,但是然后我需要将它们输入RSpec的config.filter_run
中,这似乎不像我为locations
过滤器所做的(当您在上指定rspec path/to/file:line
时激活了该行)命令行);它说“All examples were filtered out; ignoring {:locations=>...}
”。
我也可以在example.run unless example.location.in? changed_specs
过滤器中进行around
,但是此skip
将所有其他pending
标记为run_all_when_everything_filtered
,而不是完全忽略它们。并且它与example.location
的其他过滤器不兼容。 (可能是因为example.metadata
指的是测试的第一行,但是更改仅次于该行的几行。)
而且,我似乎也无法使用它在rerun
中添加标签,然后将其过滤掉。
编辑:我也不想在命令行上指定它们,因为我的测试是在ojit_code下运行的,而ojit_code仍在运行相同的命令。
还有其他想法吗?
最佳答案
您可以使用以下命令运行更改的规范:
rspec $(git ls-files --modified spec)
如果您还想包括新的未版本规范,请使用:
rspec $(git ls-files --modified --others spec)
您可以使用shell别名使它更方便:
alias rch='rspec $(git ls-files --modified --others spec)'
关于git - 我可以让RSpec只运行更改的规范吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45496443/