From 95d949d5717301fec39b8b2e5b817b64761afdf1 Mon Sep 17 00:00:00 2001 From: mame Date: Fri, 1 Sep 2017 14:58:52 +0000 Subject: [PATCH] ext/coverage/coverage.c: add Coverage.enabled? * ext/coverage/coverage.c (rb_coverage_running): add to quickly check if coverage is enabled. patched by Burke Libbey in [ruby-core:81726]. [Feature #13667] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/coverage/coverage.c | 15 +++++++++++++++ test/coverage/test_coverage.rb | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/ext/coverage/coverage.c b/ext/coverage/coverage.c index 9a9011a7da..d2077a969e 100644 --- a/ext/coverage/coverage.c +++ b/ext/coverage/coverage.c @@ -75,6 +75,20 @@ rb_coverage_result(VALUE klass) return ncoverages; } +/* + * call-seq: + * Coverage.running? => bool + * + * Returns true if coverage stats are currently being collected (after + * Coverage.start call, but before Coverage.result call) + */ +static VALUE +rb_coverage_running(VALUE klass) +{ + VALUE coverages = rb_get_coverages(); + return RTEST(coverages) ? Qtrue : Qfalse; +} + /* Coverage provides coverage measurement feature for Ruby. * This feature is experimental, so these APIs may be changed in future. * @@ -115,4 +129,5 @@ Init_coverage(void) rb_define_module_function(rb_mCoverage, "start", rb_coverage_start, 0); rb_define_module_function(rb_mCoverage, "result", rb_coverage_result, 0); rb_define_module_function(rb_mCoverage, "peek_result", rb_coverage_peek_result, 0); + rb_define_module_function(rb_mCoverage, "running?", rb_coverage_running, 0); } diff --git a/test/coverage/test_coverage.rb b/test/coverage/test_coverage.rb index b0392135fd..58b942804b 100644 --- a/test/coverage/test_coverage.rb +++ b/test/coverage/test_coverage.rb @@ -23,6 +23,16 @@ class TestCoverage < Test::Unit::TestCase end end + def test_coverage_running? + refute Coverage.running? + Coverage.start + assert Coverage.running? + Coverage.peek_result + assert Coverage.running? + Coverage.result + refute Coverage.running? + end + def test_coverage_snapshot loaded_features = $".dup