Guardfile для запуска функции одного огурца в подкаталоге? - PullRequest
6 голосов
/ 20 мая 2011

Мои функции организованы в подпапках, например:

app/
  features/
     users/
       feature1.feature
       feature2.feature

Но каждый раз, когда я сохраняю функцию, Guard запускает все мои функции (не только ту, которая была отредактирована). Как я могу изменить его, чтобы запустить только тот, который был сохранен?

Вот мой Guardfile для огурца:

guard 'cucumber', :cli => "--drb --require features/support --require features/step_definitions" do
  watch(%r{features/.+\.feature})
  watch(%r{features/support/.+})          { 'features' }
  watch(%r{features/step_definitions/(.+)_steps\.rb}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
end

Ответы [ 2 ]

4 голосов
/ 30 мая 2011

Aph, ответ был тут же в документации :

Очень важно, чтобы вы понимали, как настраивается Cucumber, потому что это часто является источником странного поведения охранника-cucumber.

Cucumber использует cucumber.yml для определения профилей определенных конфигураций прогона.Когда вы передаете конфигурации через параметр: cli, но не включаете определенный профиль с параметром --profile, тогда также используются конфигурации из профиля по умолчанию.

Например, когда вы используете огурец по умолчанию.yml, сгенерированный cucumber-rails, тогда профиль по умолчанию заставляет guard-cucumber всегда запускать все функции, потому что он добавляет папку функций.

Настройка Cucumber исключительно из Guard

Если вы хотитесконфигурируйте Cucumber от Guard исключительно, тогда вы должны передать --no-profile в опцию: cli.

Итак, передача --no-profile для опции :cli работает сейчас, и янормальное поведение.

Позор мне, что я не читаю документы!

1 голос
/ 28 июня 2012

Флаг --no-profile, кажется, больше не нужен, более того, он приводит к тому, что на консоль не выводится какая-либо информация о функциях запуска (например, фрагменты кода для еще не реализованных шагов), что, безусловно, не то, что вам нужно.

Сегодняшний путь, похоже, заключается в использовании флага :all_after_pass следующим образом (в вашем Guardfile):

guard 'cucumber', :cli => '--drb', :all_on_start => false, :all_after_pass => false do

Надеюсь, это поможет.

...