Bug #12237 » 0001-Demonstrate-Coverage-bug.patch
| ChangeLog | ||
|---|---|---|
| Thu Mar 31 22:43:59 2016  Benoit Daloze  <eregontp@gmail.com> | ||
| Thu Mar 31 19:16:16 2016  Koichi Sasada  <ko1@atdot.net> | ||
| 	* gc.c: need to set initial value of GC_HEAP_FREE_SLOTS_GOAL_RATIO. | ||
| test/coverage/test_coverage.rb | ||
|---|---|---|
|         # so coverage is not recorded. | ||
|         Coverage.start | ||
|         coverage_test_method | ||
|         assert_equal 0, Coverage.result[tmp + '/test.rb'].size | ||
|         assert_equal 0, p(Coverage.result)[tmp + '/test.rb'].size | ||
|         # Restart coverage and '/test2.rb' is required after restart, | ||
|         # so coverage is recorded. | ||
|         Coverage.start | ||
|         coverage_test_method | ||
|         require tmp + '/test2.rb' | ||
|         assert_equal 4, Coverage.result[tmp + '/test2.rb'].size | ||
|         assert_equal 4, p(Coverage.result)[tmp + '/test2.rb'].size | ||
|       } | ||
|     } | ||
|   ensure | ||
| ... | ... | |
|   end | ||
|   def test_big_code | ||
|     skip | ||
|     loaded_features = $".dup | ||
|     Dir.mktmpdir {|tmp| | ||
| ... | ... | |
|       } | ||
|     } | ||
|   ensure | ||
|     $".replace loaded_features | ||
|     #$".replace loaded_features | ||
|   end | ||
| end unless ENV['COVERAGE'] | ||
| thread.c | ||
|---|---|---|
|     if (RB_TYPE_P(coverage, T_ARRAY) && !RBASIC_CLASS(coverage)) { | ||
| 	long line = rb_sourceline() - 1; | ||
| 	long count; | ||
| 	// if (line >= RARRAY_LEN(coverage)) { | ||
| 	if (RARRAY_AREF(coverage, line) == Qnil) { | ||
| 	    return; | ||
| 	} | ||
| 	count = FIX2LONG(RARRAY_AREF(coverage, line)) + 1; | ||
| 	printf("Updating cov for %s:%ld : %ld size=%ld\n", rb_sourcefile(), line+1, count, RARRAY_LEN(coverage)); | ||
| 	if (POSFIXABLE(count)) { | ||
| 	    RARRAY_ASET(coverage, line, LONG2FIX(count)); | ||
| 	} | ||