Есть ли способ перезапустить посеянную RSpec бежать от определенной точки, а не от начала?Как продолжить сеялку RSpec?
При внесении изменений, которые потенциально затрагивают все файлы (например, removing Bundler.require
) в большой базе кода, я хочу запустить полный набор тестов RSpec, исправить первую ошибку, а затем повторно запустить тесты с тем же семена.
$ cd myproj
$ rspec --seed=0 --fail-fast
...
Finished in 9 minutes 59 seconds (files took 12.09 seconds to load)
9999 examples, 1 failure, 0 pending
Failed examples:
rspec ./spec/my_class_spec.rb:22 # MyClass #my_method
Randomized with seed 0
В этот момент я понимаю, что my_class.rb
не хватает require
. Я исправлю это, но лучше не повторять предыдущие примеры 9998.
Я хотел бы иметь возможность указать начальную точку, что-то вроде этого:
$ rspec --seed=0 --from='./spec/my_class_spec.rb:22' --fail-fast
Или, если RSpec это может определить последнюю неудачу, то, как это было бы еще лучше:
$ rspec --seed=0 --continue --fail-fast
Очевидно, что работа с семенами не является хорошей практикой в целом, так как тесты не должны быть зависимыми от заказа, но это позволяет воспроизводить то, что я ищу сейчас.
Функция '-next-failure' будет идеальной. Я с нетерпением жду 3.3! Одно из предложений: вместо 'example_status_persistence_file_path', как насчет опции командной строки' --persist-status' (которая использует стандартный/рекомендуемый/обычный путь) и '--persist-status = my/custom/path', который позволяет настройки. – jwfearn
Первоначально мы собирались предоставить значение по умолчанию для пути к файлу (и я сильно его поддержал), но столкнулись с проблемами, выясняя правильную работу пользователя, когда мы не можем писать на него (поскольку у нас нет гарантии, мы будем уметь писать в _any_ путь к файлу, который мы выбираем по умолчанию). Вы можете прочитать разговор на https://github.com/rspec/rspec-core/pull/1888, если хотите узнать подробности. –