2017-08-04 74 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

相關問題