Testing Ruby

Test suites

There are several test suites in the Ruby codebase:

We can run any of the make scripts in parallel to speed them up.

  1. bootstraptest/

    This is a small test suite that runs on Miniruby (see building Ruby). We can run it with:

    make btest
    

    To run it with logs, we can use:

    make btest OPTS=-v
    

    If we want to run the bootstrap test suite on Ruby (not Miniruby), we can use:

    make test
    

    To run it with logs, we can use:

    make test OPTS=-v
    
  2. test/

    This is a more comprehensive test suite that runs on Ruby. We can run it with:

    make test-all
    

    We can run a specific test file in this suite using the TESTS environment variable, for example:

    make test-all TESTS=test/ruby/test_array.rb

    We can run a specific test in this suite using the TESTS environment variable, specifying first the file name, and then the test name, prefixed with --name. For example:

    make test-all TESTS="../test/ruby/test_alias.rb --name=/test_aias_with_zsuper_method/"

    To run these specs with logs, we can use:

    make test-all TESTS=-v

    If we would like to run both the test/ and bootstraptest/ test suites, we can run

    make check
    
  3. spec/ruby

    This is a test suite that exists in the Ruby spec repository and is mirrored into the spec/ruby directory in the Ruby repository. It tests the behavior of the Ruby programming language. We can run this using:

    make test-spec
    

    To run a specific file, we can use MSPECOPT to specify the file:

    make test-spec MSPECOPT=spec/ruby/core/array/any_spec.rb

    To run a specific test, we can use the --example flag to match against the test name:

    make test-spec MSPECOPT="../spec/ruby/core/array/any_spec.rb --example='is false if the array is empty'"

    To run these specs with logs, we can use:

    make test-spec MSPECOPT=-Vfs
  4. spec/bundler

    The bundler test suite exists in the RubyGems repository and is mirrored into the spec/bundler directory in the Ruby repository. We can run this using:

    make test-bundler