ruby/spec

An executable specification for the Ruby programming language

Overview

The ruby/spec project aims to write a complete executable specification for the Ruby programming language that is syntax-compatible with RSpec. RSpec is essentially a DSL (domain-specific language) for describing the behavior of code. This project contains specs that describe Ruby language syntax, core library classes, and standard library classes.

The specs generally serve two purposes: 1) to drive development, and 2) as a verification mechanism. These goal can sometimes be at odds. During development, the code and specs evolve together. For verification, it is desirable to have a highly stable set of specs that ideally have been audited for correctness. The specs have been extensively used and developed BDD style in the Rubinius project for almost 4.5 years with numerous contributions by other projects like JRuby. Consequently, the specs have attained a high degree of stability. However, there are a number of core library classes and numerous standard library classes for which specs still need to be written.

The following documents describe how the Rubinius specs are organized, the style used to write them, and special measures (guards) used to write a single body of specs that accommodates numerous different Ruby implementations.