Настройка Guard с Minitest в Rails 3.2

У меня проблемы с запуском Guard в моем проекте Rails 3.2. Моя тестовая папка выглядит как тестовая структура рельсов по умолчанию:

▾ test/
  ▾ fixtures/
      customers.yml
  ▾ functional/
  ▾ integration/
  ▾ performance/
      browsing_test.rb
  ▾ unit/
      customer_test.rb
    test_helper.rb

и мой Guardfile выглядит так:

guard 'minitest' do
  # with Minitest::Unit
  watch(%r|^test/(.*)\/?test_(.*)\.rb|)
  watch(%r|^lib/(.*)([^/]+)\.rb|)     { |m| "test/#{m[1]}test_#{m[2]}.rb" }
  watch(%r|^test/test_helper\.rb|)    { "test" }

  # with Minitest::Spec
   watch(%r|^spec/(.*)_spec\.rb|)
   watch(%r|^lib/(.*)([^/]+)\.rb|)     { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
   watch(%r|^spec/spec_helper\.rb|)    { "spec" }

  # Rails 3.2
  watch(%r|^app/controllers/(.*)\.rb|) { |m| "test/controllers/#{m[1]}_test.rb" }
  watch(%r|^app/helpers/(.*)\.rb|)     { |m| "test/helpers/#{m[1]}_test.rb" }
  watch(%r|^app/models/(.*)\.rb|)      { |m| "test/unit/#{m[1]}_test.rb" }  

  # Rails
  # watch(%r|^app/controllers/(.*)\.rb|) { |m| "test/functional/#{m[1]}_test.rb" }
  # watch(%r|^app/helpers/(.*)\.rb|)     { |m| "test/helpers/#{m[1]}_test.rb" }
  # watch(%r|^app/models/(.*)\.rb|)      { |m| "test/unit/#{m[1]}_test.rb" }  
end

но при запуске Guard он просто говорит, что наблюдает, но на самом деле не запускает ни один из тестов в customer_test.rb, даже когда я явно прошу его запустить мини-тесты. Если я запускаю тесты из командной строки с помощью ruby -Itest test/unit/customer_test.rb, они работают, как и ожидалось. Я знаю, что делаю что-то не так в конфигурации Guardfile, но что именно?


person purpletonic    schedule 06.02.2013    source источник
comment
Вы знаете, что Guard просто следит за изменениями в файлах? Он ничего не запустит, если файл не изменится. Отредактируйте один из ваших тестовых файлов и сохраните его, и он должен запустить его.   -  person Casper    schedule 06.02.2013
comment
@Casper да, но я понимаю, что он должен запускать все тесты, которые он находит при запуске, и что, если я явно запускаю «minitest» в приглашении Guard, он также должен запускать все тесты, и в настоящее время он этого не делает. .   -  person purpletonic    schedule 06.02.2013


Ответы (1)


Что касается функции run_all_on_start, в настоящее время она является частью невыпущенных функций. для версии 1.0.0. Надеюсь, новая бета будет выпущена в ближайшее время. А пока вы можете попробовать guard-minitest от мастера с помощью:

gem 'guard-minitest', github: 'guard/guard-minitest'

Пожалуйста, сообщайте о любых проблемах в системе отслеживания ошибок GitHub после того, как попробуете ветку master, спасибо!

person rymai    schedule 20.05.2013