autotest
Если вы пишете для своего кода на Ruby тесты либо спеки, то вам непременно пригодится autotest из гема ZenTest. Эта утилита запускается из корня проекта и следит за изменениями в тестах/спеках. Если таковые имеются, то она запускает только эти измененные файлы. За счет этого достигается скорость тестирования (прогонять переиодически кучу тестов — не быстрое занятие), и мы всегда знаем, когда у нас что-то сломалось.
Для этой утилиты существует плагин RedGreen, который подсвечивает зеленым или красным результаты прогона тестов, дабы одного взгляда хватило, чтобы увидеть ситуацию. Однако этот плагин не работает при тестирвоании спек, так как у них отличается формат вывода сообщения об ошибках. Если поместить следующий код в файл .autotest в вашем корневом каталоге или в каталоге с проектом, откуда запускаем тесты, то все будет работать как хочется.
module Autotest::RedGreen
BAR = "=" * 80
Autotest.add_hook :ran_command do |at|
# was if at.results.last =~ /^.* (\d+) failures, (\d+) errors$/
# changed because if we have pendings, output will look like "5 examples, 1 failure, 2 pending"
# and this condition will not work
if at.results.last =~ /^.* ((\d+) failures?|(\d+) errors?)/
code = ($2 != "0" or (not $3.nil? && $3 != "0")) ? 31 : 32
puts "\e[#{code}m#{BAR}\e[0m\n\n"
end
end
end
0 comments
Jump to comment form