1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/doc/make_cheatsheet.md
2020-01-24 15:59:45 +09:00

1.9 KiB

How to use "configure" and "make" commands for Ruby

This is for developers of Ruby. If you are a user of Ruby, please see README.md.

In-place build

$ autoconf
$ ./configure --prefix=$PWD/local
$ make
$ make install
$ ./local/bin/ruby -e 'puts "Hello"'
Hello

Out-of-place build

$ autoconf
$ mkdir ../ruby-build
$ cd ../ruby-build
$ ../ruby-src/configure --prefix=$PWD/local
$ make
$ make install
$ ./local/bin/ruby -e 'puts "Hello"'
Hello

How to run the whole test suite

$ make check

It runs (about) three test suites:

  • make test (a test suite for the interpreter core)
  • make test-all : (for all builtin classes and libraries)
  • make test-spec : (a conformance test suite for Ruby implementations)

How to run the test suite with log

$ make test OPTS=-v

$ make test-all TESTS=-v

$ make test-spec MSPECOPT=-Vfs

How to run a part of the test suite

# Runs a directory
$ make test-all TESTS=test/rubygems
$ make test-all TESTS=rubygems

# Runs a file
$ make test-all TESTS=test/ruby/test_foo.rb
$ make test-all TESTS=ruby/foo

# Runs a test whose name includes test_bar
$ make test-all TESTS="test/ruby/test_foo.rb -n /test_bar/"

How to measure coverage of C and Ruby code

You need to be able to use gcc (gcov) and lcov visualizer.

$ autoconf
$ ./configure --enable-gcov
$ make
$ make update-coverage
$ rm -f test-coverage.dat
$ make test-all COVERAGE=true
$ make lcov
$ open lcov-out/index.html

If you need only C code coverage, you can remove COVERAGE=true from the above process. You can also use gcov command directly to get per-file coverage.

If you need only Ruby code coverage, you can remove --enable-gcov. Note that test-coverage.dat accumulates all runs of make test-all. Make sure that you remove the file if you want to measure one test run.

You can see the coverage result of CI: https://rubyci.org/coverage