diff options
author | Michael Lumish <mlumish@google.com> | 2015-12-01 19:38:59 -0800 |
---|---|---|
committer | Michael Lumish <mlumish@google.com> | 2015-12-01 19:38:59 -0800 |
commit | f8766235dd00bf545e09220e5e5d81bae1ce34aa (patch) | |
tree | 1149577f4e6ca919182589ec895fc6c2f1a79a6c | |
parent | 9f4554ef94b354f4dc3117e8706b02a224c152e7 (diff) | |
parent | 7ef1e531ff3db375f292e1dfa5645d1f4c319874 (diff) |
Merge pull request #4229 from nicolasnoble/ruby-gcov
Ruby gcov support.
-rw-r--r-- | src/ruby/ext/grpc/extconf.rb | 4 | ||||
-rwxr-xr-x | tools/run_tests/post_tests_ruby.sh | 46 | ||||
-rwxr-xr-x | tools/run_tests/run_tests.py | 2 |
3 files changed, 51 insertions, 1 deletions
diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb index 7972272e2d..db9385e961 100644 --- a/src/ruby/ext/grpc/extconf.rb +++ b/src/ruby/ext/grpc/extconf.rb @@ -94,6 +94,10 @@ else end $CFLAGS << ' -I' + File.join(grpc_root, 'include') $LDFLAGS << ' -L' + grpc_lib_dir + if grpc_config == 'gcov' + $CFLAGS << ' -O0 -fprofile-arcs -ftest-coverage' + $LDFLAGS << ' -fprofile-arcs -ftest-coverage -rdynamic' + end raise 'gpr not found' unless have_library('gpr', 'gpr_now') raise 'grpc not found' unless have_library('grpc', 'grpc_channel_destroy') end diff --git a/tools/run_tests/post_tests_ruby.sh b/tools/run_tests/post_tests_ruby.sh new file mode 100755 index 0000000000..66a9fbc534 --- /dev/null +++ b/tools/run_tests/post_tests_ruby.sh @@ -0,0 +1,46 @@ +#!/bin/bash +# Copyright 2015, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set -ex + +if [ "$CONFIG" != "gcov" ] ; then exit ; fi + +root=$(readlink -f $(dirname $0)/../..) +out=$root/reports/ruby_ext_coverage +tmp1=$(mktemp) +tmp2=$(mktemp) +cd $root +lcov --capture --directory . --output-file $tmp1 +lcov --extract $tmp1 "$root/src/ruby/*" --output-file $tmp2 +genhtml $tmp2 --output-directory $out +rm $tmp2 +rm $tmp1 + +cp -rv $root/src/ruby/coverage $root/reports/ruby diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 47f949bdf3..f1595ac98f 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -322,7 +322,7 @@ class RubyLanguage(object): return [['tools/run_tests/build_ruby.sh']] def post_tests_steps(self): - return [] + return [['tools/run_tests/post_tests_ruby.sh']] def makefile_name(self): return 'Makefile' |