This commit is contained in:
Yusuke Endoh 2020-01-24 10:29:33 +09:00
Родитель 6b86549df8
Коммит db82c680cd
1 изменённых файлов: 89 добавлений и 0 удалений

89
doc/make-cheetsheet.md Normal file
Просмотреть файл

@ -0,0 +1,89 @@
# 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` accumlates 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