From 0ff1957a5bb30f6ba0a461ce077f4b94ab0d6f63 Mon Sep 17 00:00:00 2001 From: Matt Kwong Date: Thu, 30 Mar 2017 18:22:21 -0700 Subject: Fix test coverage reporting --- .../test/multilang_jessie_x64/Dockerfile | 4 +++ tools/run_tests/helper_scripts/post_tests_php.sh | 2 +- .../run_tests/helper_scripts/post_tests_python.sh | 39 ++++++++++++++++++++++ tools/run_tests/run_tests.py | 9 +++-- 4 files changed, 51 insertions(+), 3 deletions(-) create mode 100755 tools/run_tests/helper_scripts/post_tests_python.sh (limited to 'tools') diff --git a/tools/dockerfile/test/multilang_jessie_x64/Dockerfile b/tools/dockerfile/test/multilang_jessie_x64/Dockerfile index 5d0c1686f1..ea57d88c87 100644 --- a/tools/dockerfile/test/multilang_jessie_x64/Dockerfile +++ b/tools/dockerfile/test/multilang_jessie_x64/Dockerfile @@ -135,6 +135,10 @@ RUN pip install pip --upgrade RUN pip install virtualenv RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 +# Install coverage for Python test coverage reporting +RUN pip install coverage +ENV PATH ~/.local/bin:$PATH + # Prepare ccache RUN ln -s /usr/bin/ccache /usr/local/bin/gcc RUN ln -s /usr/bin/ccache /usr/local/bin/g++ diff --git a/tools/run_tests/helper_scripts/post_tests_php.sh b/tools/run_tests/helper_scripts/post_tests_php.sh index 23dc202322..43b665e23e 100755 --- a/tools/run_tests/helper_scripts/post_tests_php.sh +++ b/tools/run_tests/helper_scripts/post_tests_php.sh @@ -43,4 +43,4 @@ genhtml $tmp2 --output-directory $out rm $tmp2 rm $tmp1 -cp -rv $root/src/php/coverage $root/reports/php +# todo(mattkwong): generate coverage report for php and copy to reports/php diff --git a/tools/run_tests/helper_scripts/post_tests_python.sh b/tools/run_tests/helper_scripts/post_tests_python.sh new file mode 100755 index 0000000000..4f5986b3a1 --- /dev/null +++ b/tools/run_tests/helper_scripts/post_tests_python.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Copyright 2017, 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 + +# change to directory of Python coverage files +cd $(dirname $0)/../../../src/python/grpcio_tests/ + +coverage combine . +coverage html -i -d ./../../../reports/python diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 00dd4ca605..0b4f26ca44 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -614,7 +614,10 @@ class PythonLanguage(object): return [config.build for config in self.pythons] def post_tests_steps(self): - return [] + if self.config != 'gcov': + return [] + else: + return [['tools/run_tests/helper_scripts/post_tests_python.sh']] def makefile_name(self): return 'Makefile' @@ -1270,7 +1273,9 @@ if any(language.make_options() for language in languages): print('languages with custom make options cannot be built simultaneously with other languages') sys.exit(1) else: - language_make_options = next(iter(languages)).make_options() + # Combining make options is not clean and just happens to work. It allows C/C++ and C# to build + # together, and is only used under gcov. All other configs should build languages individually. + language_make_options = list(set([make_option for lang in languages for make_option in lang.make_options()])) if args.use_docker: if not args.travis: -- cgit v1.2.3