memgraph coverage (lcov setup in progress...)
Summary: first version of coverage (will be polished) Reviewers: dgleich, mferencevic, florijan, teon.banek Reviewed By: dgleich Subscribers: pullbot, buda Differential Revision: https://phabricator.memgraph.io/D76
This commit is contained in:
parent
57740bcf95
commit
b834cdc94a
@ -9,12 +9,15 @@ if(NOT UNIX)
|
|||||||
message(FATAL "Unsupported operating system.")
|
message(FATAL "Unsupported operating system.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#look for ccache and set it up
|
# ccache setup
|
||||||
find_program(CCACHE_FOUND ccache)
|
# ccache isn't enabled all the time because it makes some problem
|
||||||
if(CCACHE_FOUND)
|
# during the code coverage process
|
||||||
|
option(USE_CCACHE "ccache:" ON)
|
||||||
|
message(STATUS "CCache: ${USE_CCACHE}")
|
||||||
|
if(CCACHE_FOUND AND USE_CCACHE)
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
||||||
endif(CCACHE_FOUND)
|
endif(CCACHE_FOUND AND USE_CCACHE)
|
||||||
|
|
||||||
# choose a compiler
|
# choose a compiler
|
||||||
# NOTE: must be choosen before use of project() or enable_language() ----------
|
# NOTE: must be choosen before use of project() or enable_language() ----------
|
||||||
|
37
coverage
Executable file
37
coverage
Executable file
@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
working_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
# coverage applies only on unit tests
|
||||||
|
unit_test_dir='build/tests/unit'
|
||||||
|
coverage_dir='build/coverage'
|
||||||
|
coverage_file='coverage.info'
|
||||||
|
|
||||||
|
# execute unit tests to generate coverage files
|
||||||
|
pushd ${unit_test_dir}
|
||||||
|
ctest -R unit
|
||||||
|
popd
|
||||||
|
|
||||||
|
# generate coverage info files for each unit test binary
|
||||||
|
# + exclude stl, tests and libs
|
||||||
|
binary_path="${unit_test_dir}/CMakeFiles"
|
||||||
|
all_coverage_info=""
|
||||||
|
for dir in $binary_path/*.dir; do
|
||||||
|
pushd ${dir}
|
||||||
|
lcov --gcov-tool ${working_dir}/llvm-gcov -c -d . -o ${coverage_file}
|
||||||
|
lcov -r ${coverage_file} '/usr/*' '*/libs/*' -o ${coverage_file}
|
||||||
|
all_coverage_info+=" -a ${working_dir}/${dir}/${coverage_file}"
|
||||||
|
popd
|
||||||
|
done
|
||||||
|
|
||||||
|
# merge all info files into total coverage info and generate html
|
||||||
|
echo ${all_coverage_info}
|
||||||
|
mkdir -p ${coverage_dir}
|
||||||
|
pushd ${coverage_dir}
|
||||||
|
lcov ${all_coverage_info} -o ${coverage_file}
|
||||||
|
genhtml ${coverage_file}
|
||||||
|
popd
|
||||||
|
|
||||||
|
# generage coberatura xml file (compatible with Jenkins)
|
||||||
|
python libs/lcov-to-cobertura-xml/lcov_cobertura/lcov_cobertura.py \
|
||||||
|
${coverage_dir}/${coverage_file} -o ${coverage_dir}/coverage.xml
|
@ -3,10 +3,16 @@
|
|||||||
# This scrips runs clang-format recursively on all files under specified
|
# This scrips runs clang-format recursively on all files under specified
|
||||||
# directories. Formatting configuration is defined in .clang-format.
|
# directories. Formatting configuration is defined in .clang-format.
|
||||||
|
|
||||||
|
# Format isn't enforced. Code reviewer has to ensure that a code format is
|
||||||
|
# valid and appropriate for the project.
|
||||||
|
|
||||||
clang_format="clang-format"
|
clang_format="clang-format"
|
||||||
|
|
||||||
for directory in src tests
|
for directory in src tests
|
||||||
do
|
do
|
||||||
|
# If somebody wants to exclude a file from default formating here is a place
|
||||||
|
# for that
|
||||||
echo "formatting code under $directory/"
|
echo "formatting code under $directory/"
|
||||||
find "$directory" \( -name '*.hpp' -or -name '*.cpp' \) -print0 | xargs -0 "${clang_format}" -i
|
find "$directory" \( -name '*.hpp' -or -name '*.cpp' \) -print0 | xargs -0 "${clang_format}" -i
|
||||||
done
|
done
|
||||||
|
|
@ -1,7 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "START"
|
||||||
|
|
||||||
# install all dependencies on debian based operating systems
|
# install all dependencies on debian based operating systems
|
||||||
for pkg in wget git cmake uuid-dev clang-3.8; do
|
for pkg in wget git cmake uuid-dev clang-3.8 llvm-3.8 clang-format-3.8 doxygen; do
|
||||||
dpkg -s $pkg 2>/dev/null >/dev/null || sudo apt-get -y install $pkg
|
dpkg -s $pkg 2>/dev/null >/dev/null || sudo apt-get -y install $pkg
|
||||||
done
|
done
|
||||||
|
|
@ -46,3 +46,10 @@ yaml_cpp_tag="519d33fea3fbcbe7e1f89f97ee0fa539cec33eb7" # master 18 Aug 2016
|
|||||||
cd yaml-cpp
|
cd yaml-cpp
|
||||||
git checkout ${yaml_cpp_tag}
|
git checkout ${yaml_cpp_tag}
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
|
# lcov-to-coberatura-xml
|
||||||
|
git clone https://github.com/eriwen/lcov-to-cobertura-xml.git
|
||||||
|
lcov_to_xml_tag="59584761cb5da4687693faec05bf3e2b74e9dde9" # Dec 6, 2016
|
||||||
|
cd lcov-to-cobertura-xml
|
||||||
|
git checkout ${lcov_to_xml_tag}
|
||||||
|
cd ..
|
||||||
|
@ -19,6 +19,8 @@ foreach(test_cpp ${test_type_cpps})
|
|||||||
# build exec file
|
# build exec file
|
||||||
add_executable(${target_name} ${test_cpp})
|
add_executable(${target_name} ${test_cpp})
|
||||||
set_property(TARGET ${target_name} PROPERTY CXX_STANDARD ${cxx_standard})
|
set_property(TARGET ${target_name} PROPERTY CXX_STANDARD ${cxx_standard})
|
||||||
|
set_target_properties(${target_name} PROPERTIES COMPILE_FLAGS "-g -O0 -Wall --coverage -fprofile-arcs -ftest-coverage")
|
||||||
|
set_target_properties(${target_name} PROPERTIES LINK_FLAGS "--coverage -fprofile-arcs -ftest-coverage")
|
||||||
|
|
||||||
# OUTPUT_NAME sets the real name of a target when it is built and can be
|
# OUTPUT_NAME sets the real name of a target when it is built and can be
|
||||||
# used to help create two targets of the same name even though CMake
|
# used to help create two targets of the same name even though CMake
|
||||||
@ -38,10 +40,12 @@ foreach(test_cpp ${test_type_cpps})
|
|||||||
target_link_libraries(${target_name} fmt)
|
target_link_libraries(${target_name} fmt)
|
||||||
# yaml parser lib
|
# yaml parser lib
|
||||||
target_link_libraries(${target_name} yaml-cpp)
|
target_link_libraries(${target_name} yaml-cpp)
|
||||||
# antlr
|
# antlr
|
||||||
target_link_libraries(${target_name} antlr_opencypher_parser_lib)
|
target_link_libraries(${target_name} antlr_opencypher_parser_lib)
|
||||||
# dynamic lib
|
# dynamic lib
|
||||||
target_link_libraries(${target_name} dl)
|
target_link_libraries(${target_name} dl)
|
||||||
|
# for code coverage
|
||||||
|
target_link_libraries(${target_name} gcov)
|
||||||
|
|
||||||
# register test
|
# register test
|
||||||
set(output_path ${CMAKE_BINARY_DIR}/test_results/unit/${target_name}.xml)
|
set(output_path ${CMAKE_BINARY_DIR}/test_results/unit/${target_name}.xml)
|
||||||
|
Loading…
Reference in New Issue
Block a user