Как глобально настроить RSpec, чтобы опции «--color» и «--format specdoc» были включены

156

Как мне установить глобальную конфигурацию для RSpec в Ubuntu.

В частности, --color и --format specdoc остаются включенными во всех моих проектах (т.е. каждый раз, когда я запускаю rspec в любом месте).

Evolve
источник

Ответы:

238

Как вы можете видеть в документации здесь , предполагаемое использование создает ~/.rspecи включает в себя ваши параметры, такие как--color .

Чтобы быстро создать ~/.rspecфайл с --colorопцией, просто запустите:

echo '--color' >> ~/.rspec 
abyx
источник
17
--ttyтакже требуется, если вы хотите цвет даже при использовании пейджеров.
Адам Спайерс
2
Каковы плюсы / минусы использования .rspecили spec_helper.rb? @shamaoke @christoph
Ян Воан
2
Одним из больших преимуществ ~/.rspecрешения является мобильность. Например, наш CI-сервер не очень хорошо справляется с выводом цвета. С помощью файла конфигурации пользователя dir мы можем легко адаптироваться к различным средам.
Кристоф Петшниг
2
Еще одно важное замечание: вы можете создать файл .rspec на уровне проекта и применить его только к этому проекту. Просто подумал, что некоторые могут захотеть узнать это и здесь.
Ник Гронов
Перемещение параметров конфигурации из spec_helper.rb в .rspec решило эту проблему для меня.
Эдвард Андерсон
149

Можно также использовать spec_helper.rbфайл во всех проектах. Файл должен включать следующее:

RSpec.configure do |config|
  # Use color in STDOUT
  config.color = true

  # Use color not only in STDOUT but also in pagers and files
  config.tty = true

  # Use the specified formatter
  config.formatter = :documentation # :progress, :html,
                                    # :json, CustomFormatterClass
end

Любой файл примера должен требовать, чтобы помощник мог использовать эти параметры.

Shamaoke
источник
1
Первоначальный вопрос требует глобальной конфигурации, это зависит от проекта. Полезный, но не правильный ответ, в отличие от абикса, который указывает на .rspecфайл.
Оливье Лакан
8
Поиск информации о конфигурации и форматировщиках RSpec приводит к появлению этой страницы, поэтому я оценил этот ответ, даже если он был не на тот вопрос :-)
phatmann
3
color_enabledсейчасcolor
elado
12

В вашем spec_helper.rbфайле включите следующую опцию:

RSpec.configure do |config|
  config.color_enabled = true
end

Затем вы должны указать в каждом *_spec.rbфайле, который должен использовать эту опцию.

Кристоф Петшниг
источник
Привет, спасибо. Не могли бы вы уточнить следующее: «В каждом файле * _spec.rb, который должен использовать эту опцию, необходимо указывать». я не понимаю
BKSpurgeon
Каждый ваш файл * _spec.rb обычно начинается с require "spec_helper", вы не должны об этом забывать.
Кристоф Петшниг
6

Если вы используете rake для запуска тестов rspec, вы можете отредактировать spec / spec.opts

http://rspec.info/rails/runners.html

fernyb
источник
9
./spec.opts был удален. Rails 3 хочет, чтобы файл назывался ./.rspec или ~ / .rspec
Аарон Уилер
2

Или просто добавьте alias spec=spec --color --format specdocв ваш файл ~ / .bashrc, как я.

zzeroo
источник
5
Это решение не очень портативно. Правильный ответ - @abyx с использованием .rspec, так как при его проверке в проекте все остальные, получившие его, получат те же настройки.
Ян Воан
1
Но вопрос был о «глобальной конфигурации для RSpec в Ubuntu», «во всех моих проектах», а не в портативном или кооперативном режиме.
zzeroo
3
Хм, я думаю, вы правы, ваш ответ имеет непосредственное отношение к ОП. Я думал об общей картине, но я все еще думаю, что лучшим ответом был @abyx, если ОП привыкнет правильно конфигурировать проекты, тогда другие выиграют, может быть, не сейчас, поскольку он может работать в одиночку, но хорошие практики - это просто так. Извините, немного ненормальный, просто мой образ мыслей.
Ян Воан
1
@zzeroo @Ian: Обратите внимание, что размещение .rspecфайла в домашнем каталоге пользователя (как я уже упоминал в моем ответе) работает глобально для всех вызовов пользователя rspec. Это на самом деле более надежно, чем использование псевдонимов, так как некоторые гемы / другие псевдонимы / инструменты, которые может использовать пользователь, не обязательно будут использовать псевдоним
abyx
1
Теперь, возвращаясь к этому вопросу и будучи немного старше и мудрее, я бы согласился, что настройка точечного файла .rspec теперь является лучшим вариантом. Обновление моего одобренного ответа на Abyx, большое спасибо zzero за лучший ответ на мой вопрос еще в 2010 году. :)
Evolve
1

Следует помнить о влиянии различных способов запуска RSpec.

Я пытался включить опцию с помощью следующего кода в spec / spec_helper.rb -

Rspec.configure do |config|
  config.tty = $stdout.tty?
end
  1. Вызов двоичного файла rspec напрямую - или как «bundle exec rspec» и проверка $ stdout.tty? вернет истину.
  2. вызывая задачу 'rake spec' - или как 'bundle exec rake spec' - Rake будет вызывать rspec в отдельном процессе, а $ stdout.tty? вернет ложь.

В конце концов, я использовал параметр ~ / .rspec, просто используя --tty в качестве его содержимого. Хорошо работает для меня и поддерживает чистоту вывода нашего CI-сервера.

Лейф
источник