2017-08-04 27 views
1

我有一个测试套件,用于一个非常大的项目(〜3800个独立示例),我正在从RSpec 2.14更新到3.6。我可以获得RSpec只运行更改的规格吗?

我刚刚为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_specsaround过滤器,但这种skip一切都是别人然后将其标记为pending,而不是完全忽略他们。并且与run_all_when_everything_filtered的其他过滤器不一致。 (可能是因为example.location指的是测试的最上面一行,但更改是在下面几行)

而且我似乎无法使用它将标记添加到example.metadata然后将其过滤掉,无论是。

编辑:我也不想在命令行中指定它们,因为我的测试运行在rerun之下,它继续运行相同的命令。

还有什么想法?

回答

2

git status可能是一个更好的选择?为什么没有这样的事情对你的工作:

$ bundle exec rspec $(git status | grep spec | grep "modified:" | cut -b 15-) 

来源:https://coderwall.com/p/usrhyq/running-modified-specs-with-git

+0

嗯。不错,但(1)我宁愿指定行号以及(2)我希望我的'spec_helper'提取相关规范,因为 - 我原来忽略了提及 - 我在rspec下运行' rerun'。 – PJSCopeland

相关问题