Для управления процессом разработки в проекте 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.