From de1f66a94bf6ff65cb1385c59313ebceaeb23c2b Mon Sep 17 00:00:00 2001 From: Luciano Date: Mon, 5 Mar 2018 14:38:13 -0500 Subject: [PATCH] Coverage of the testsuite (#297) * coverage rule in Makefile * coverage in cmake * clean coverage rule * it looks like there is a proper way to remove the coverage data * cmake: coverage_erase * Add coverage target to cmake, fix typo * Fix travis osx brew python (now upgrade) --- .travis.yml | 2 +- CMakeLists.txt | 1 + Makefile | 9 ++++++++- cmake/code-qa.cmake | 21 ++++++++++++++++++++- requirements-dev.txt | 1 + 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 169d0aba35..4cc42b20ca 100644 --- a/.travis.yml +++ b/.travis.yml @@ -72,7 +72,7 @@ stage_osx: &stage_osx # installed manually. | if [ ${TRAVIS_OS_NAME} = "osx" ]; then - brew install python3 + brew upgrade python3 brew install gcc@6 brew link --overwrite gcc@6 virtualenv env -p python3 diff --git a/CMakeLists.txt b/CMakeLists.txt index eca22499fb..1ad7c22f91 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,4 +27,5 @@ if (ENABLE_TARGETS_QA) add_lint_target() add_code_style_target() add_doc_target(html "./" "_build/") + add_coverage_target() endif() diff --git a/Makefile b/Makefile index 1a6f0ac946..22bd95614e 100644 --- a/Makefile +++ b/Makefile @@ -41,6 +41,10 @@ test: profile: python3 -m unittest discover -p "profile*.py" -v +coverage: + coverage3 run --source qiskit -m unittest discover -s test -q + coverage3 report + doc: export PYTHONPATH=$(PWD); \ for LANGUAGE in "." "ja"; do \ @@ -53,7 +57,10 @@ sim: make -C src/cpp-simulator/src clean make -C src/cpp-simulator/src -clean: +coverage_erase: + coverage erase + +clean: coverage_erase make -C doc clean make -C doc -e BUILDDIR="_build/ja" -e SOURCEDIR="./ja" clean make -C src/cpp-simulator/src clean diff --git a/cmake/code-qa.cmake b/cmake/code-qa.cmake index b82509fe6e..76bb58decb 100644 --- a/cmake/code-qa.cmake +++ b/cmake/code-qa.cmake @@ -30,6 +30,25 @@ function(add_code_style_target) WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) endfunction() +function(add_coverage_target) + find_program(COV3 "coverage3") + if (NOT COV3) + message(FATAL_ERROR "Couldn't find coverage3 in your system. Please, install it and try again.") + endif() + + add_custom_target(coverage_erase) + add_custom_command(TARGET coverage_erase + COMMAND ${COV3} erase + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) + add_custom_target(coverage) + add_custom_command(TARGET coverage + COMMAND ${COV3} run --source qiskit -m unittest discover -s test -q + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) + add_custom_command(TARGET coverage + COMMAND ${COV3} report + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) +endfunction() + function(add_doc_target DOC_FORMAT SOURCE_DIR BUILD_DIR) find_program(PYTHON python) if(NOT PYTHON) @@ -74,4 +93,4 @@ function(add_doc_target DOC_FORMAT SOURCE_DIR BUILD_DIR) ${SPHINX} -M ${DOC_FORMAT} "${SOURCE_DIR}${lang_dir}" "${BUILD_DIR}${lang_dir}" WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/doc) endforeach() -endfunction() \ No newline at end of file +endfunction() diff --git a/requirements-dev.txt b/requirements-dev.txt index 33f8fe1f36..040353faa6 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,3 +3,4 @@ pycodestyle Sphinx>=1.6,<1.7 better-apidoc==0.1.2 sphinxcontrib-fulltoc==1.2.0 +coverage>=4.4.0