Тесты Limit Integration, запускаемые автотестом (Rails) - PullRequest
0 голосов
/ 01 декабря 2010

Я использую автотест и добавил хуки для запуска интеграционных тестов.Во время работы каждый раз, когда я делаю изменения, влияющие на какие-либо интеграционные тесты, все интеграционные тесты запускаются повторно.Это поведение, которое я хотел бы изменить, если это возможно.(Я использую rspec с webrat для своих тестов, без огурцов)

В случае тестов, не связанных с интеграцией, шаблон состоит в том, что он перезапускает тесты в том же файле спецификации (или описывают блок?), Если вы изменитетест или каково его описание.Итак, скажем, у нас есть page_controller.rb и page_controller_spec.rb.autotest знает, что если вы измените один из этих файлов, он запускает только тесты в page_controller_spec, а затем, если он проходит, он запускает все тесты.Мне нужно что-то подобное для моих интеграционных тестов - сначала запустите тесты в файле с ошибочным тестом, а затем запустите все тесты, если они пройдут.

мой файл .autotest выглядит следующим образом

require "autotest/growl"
require "autotest/fsevent"

Autotest.add_hook :initialize do |autotest|
  autotest.add_mapping(/^spec\/integration\/.*_spec\.rb$/) do
    autotest.files_matching(/^spec\/integration\/.*_spec\.rb$/)
  end  
end

Ответы [ 2 ]

1 голос
/ 14 апреля 2012

Ваш .autotest является источником проблемы :) В основном говорится, что для любого файла в каталоге /spec/integration, все из них должны быть запущены. Вы должны вернуть только совпадающее имя файла, например:

require "autotest/growl"
require "autotest/fsevent"

Autotest.add_hook :initialize do |autotest|
  autotest.add_mapping(/^spec\/integration\/.*_spec\.rb$/) do |filename|
    filename
  end  
end
0 голосов
/ 01 марта 2011

Извините, у меня нет времени полностью решить вашу проблему, но я думаю, вы можете сделать это самостоятельно, когда прочитаете комментарий метода Autotest # add_mapping. Вы должны немного поиграть с регулярным выражением. Обратите внимание: «+ proc + передается соответствующее имя файла и Regexp.last_match». Вот полный комментарий:

  # Adds a file mapping, optionally prepending the mapping to the
  # front of the list if +prepend+ is true. +regexp+ should match a
  # file path in the codebase. +proc+ is passed a matched filename and
  # Regexp.last_match. +proc+ should return an array of tests to run.
  #
  # For example, if test_helper.rb is modified, rerun all tests:
  #
  #   at.add_mapping(/test_helper.rb/) do |f, _|
  #     at.files_matching(/^test.*rb$/)
  #   end

  def add_mapping regexp, prepend = false, &proc
...