Traditionally, method coverage measurement was implemented by inserting
`trace2` instruction to the head of method iseq. So, it just measured
methods defined by `def` keyword.
This commit drastically changes the measuring mechanism of method
coverage; at `RUBY_EVENT_CALL`, it keeps a hash from rb_method_entry_t*
to runs (i.e., it counts the runs per method entry), and at
`Coverage.result`, it creates the result hash by enumerating all
`rb_method_entry_t*` objects (by `ObjectSpace.each_object`).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61023 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk: download emoji-data.txt. As emoji data files are
located in a separate directory in Unicode.org site, reearranged
Unicode data files directories same as the site.
* tool/enc-unicode.rb (get_file): search emoji data files in the
second argument path.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60977 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/enc-unicode.rb: support for gperf 3.1, which defines length
arguments as `size_t` but a local variable as `unsigned int`.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/instruction.rb: create `trace_` prefix instructions.
* compile.c (ADD_TRACE): do not add `trace` instructions but add
TRACE link elements. TRACE elements will be unified with a next
instruction as instruction information.
* vm_trace.c (update_global_event_hook): modify all ISeqs when
hooks are enabled.
* iseq.c (rb_iseq_trace_set): added to toggle `trace_` instructions.
* vm_insnhelper.c (vm_trace): added.
This function is a body of `trace_` prefix instructions.
* vm_insnhelper.h (JUMP): save PC to a control frame.
* insns.def (trace): removed.
* vm_exec.h (INSN_ENTRY_SIG): add debug output (disabled).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/rbinstall.rb (#install_default_gem): show categories of
default gems, pure ruby libraries and libraries with extensions.
[ruby-core:83600] [Bug #14065]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60578 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/fetch-bundled_gems.rb: get rid of tool/git-refresh which
requries Bourne shell.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/vcs.rb (VCS::GIT.get_revisions): use last revision also as
changed revision when the head does not have svn ID.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
`test-bundled-gems` invoke test suite of bundled gems with
build environment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/runruby.rb: add RUNRUBY_USE_GDB environment variable.
If RUNRUBY_USE_GDB=true then use 'gdb --args'.
If there is 'run.gdb' file (made by 'make run.gdb') on current directory,
run gdb with this file ('gdb -x run.gdb --args').
This envval is useful when you want to run test-all (and so on) with gdb.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/colorize.rb: remove highlight attribute from "pass" to make
distinguishable from "fail" by other than red-green colors.
* tool/ifchange: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60179 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This patch is provided by @gyugyu (Yusuke Yagyu)
* Remove README* entry from no_install that there is no README* files except README.md.tt
* Rename .travis.yml.tt to travis.yml.tt like gitignore.tt
[Bug #13975][ruby-dev:50278][fix GH-1710]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60122 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/sync_default_gems.rb: removed ubygems.rb from sync target.
* test/rubygems/test_gem.rb: only enable "-rubygems" option when
running under the Ruby 1.9.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ext/psych/yaml/LICENSE: Integrate libyaml license to LEGAL and
removed this file from repository.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59995 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/make-snapshot (package): fix missing after-update for
libffi and so on. [ruby-dev:50244] [Bug #13897]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59942 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
The second value of key of branch/method coverage is unique ID, not
lineno.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk, configure.in: rename the bin directory to run build
executable as exe, to get rid of overwriting true files at the
installation. [ruby-dev:50250] [Bug #13911]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
To measure coverage of C code:
`./configure --enable-gcov && make && make exam && make lcov`
To measure coverage of Ruby code:
`./configure && make && make exam COVERAGE=true && make lcov`
To measure coverage of both languages at a time:
`./configure --enable-gcov && make && make exam COVERAGE=true && make lcov`
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* tool/merger.rb: separate each commit logs by an empty line.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59824 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
`./configure --enable-gcov && make exam && make lcov` will create
`lcov-c-out/index.html` for coverage of C code of the interpreter.
`make exam COVERAGE=true && make lcov` will create
`lcov-rb-out/index.html` for coverage of Ruby stdlib code.
Using both `--enable-gcov` and `COVERAGE=true` will create
`lcov-out/index.html` for total coverage.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
rubygems 2.7.x depends bundler-1.15.x. This is preparation for
rubygems and bundler migration.
* lib/bundler.rb, lib/bundler/*: files of bundler-1.15.4
* spec/bundler/*: rspec examples of bundler-1.15.4. I applied patches.
* https://github.com/bundler/bundler/pull/6007
* Exclude not working examples on ruby repository.
* Fake ruby interpriter instead of installed ruby.
* Makefile.in: Added test task named `test-bundler`. This task is only
working macOS/linux yet. I'm going to support Windows environment later.
* tool/sync_default_gems.rb: Added sync task for bundler.
[Feature #12733][ruby-core:77172]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Now `make test-all COVERAGE=true` measures the test coverage by using
`coverage.so` directly, and visualize the result by simplecov-html.
There has been some problems in coverage measurement with SimpleCov.
(They are not SimpleCov's fault, though.)
(1) It is difficult to extract the measured data as a machine-readable
format, such as Marshal. I want to visualize the coverage data with
other coverage tools, such as LCOV and Cobertura.
(I know we can use SimpleCov's formatter mechanism, but I don't want
to depend upon SimpleCov so much.)
(2) SimpleCov seems to miss some coverage data. For example,
`lib/cgi.rb` and `lib/ostruct.rb` are dropped. I don't know why.
(3) I have a plan to enhance `coverage.so` with branch coverage.
It would be difficult to continue to only use SimpleCov as is.
This is the most important reason.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This version fixed strange behavior of ruby code parser.
We will list all of impromovement to Changelog when 6.0.0 releasing.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59686 b2dd03c8-39d4-4d8f-98ff-823fe69b080e