Для управления процессом разработки в проекте Rubinius активно используются
исполняемые спецификации в стиле TDD/BDD. Директория spec
проекта не
без умысла разделена на две части:
spec/ruby
— описывают поведение традиционной реализации
от Мацумото;spec
— описывают поведение Rubinius.Спеки1 в spec/ruby
— это копия RubySpec
соответствующей ревизии. Они регулярно импортируются из проекта RubySpec,
причем сбойные помечаются таким образом, что CI-процесс2 всегда
имеет доступ к набору проверенных валидных спецификаций. Такой подход
позволяет легко удостовериться, что изменения в коде Rubinius не ведут к
регрессиям.
Документацию по проектированию и написанию спеков можно найти на сайте «RubySpec project».
Когда Вы станете писать для Rubinius спеки и соответствующий им код, соблюдайте следующий порядок:
spec/ruby
.rake
, чтобы убедиться, что все CI-спеки выполняются успешно.Изменения в файлах дерева spec/ruby
регулярно отправляются нами в RubySpec.
В то же время свежие обновления, которые присылаются в RubySpec разработчиками
других реализаций Ruby, регулярно вносятся в spec/ruby
. Так же,
соответственно обновлениям RubySpec, обновляются и теги в CI.