diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 64311f7e0e..beaa4a7209 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -110,6 +110,10 @@ jobs: working-directory: analyzer run: make test_unit test_functional + - name: Analyzer unit tests coverage + working-directory: analyzer + run: make test_unit_cov + common: name: Common libraries runs-on: ubuntu-18.04 @@ -129,6 +133,10 @@ jobs: working-directory: codechecker_common/tests run: make -C unit test_unit + - name: Run unit tests coverage + working-directory: codechecker_common/tests + run: make -C unit test_unit_cov + web: name: Web runs-on: ubuntu-18.04 @@ -175,6 +183,10 @@ jobs: make -C web test_matrix_${{ matrix.database }} + - name: Run unit tests coverage + working-directory: web + run: make test_unit_cov + gui: name: GUI runs-on: ubuntu-18.04 diff --git a/Makefile b/Makefile index a53eaf5438..222637f985 100644 --- a/Makefile +++ b/Makefile @@ -223,10 +223,19 @@ test_unit: BUILD_DIR=$(BUILD_DIR) $(MAKE) -C $(CC_WEB) test_unit BUILD_DIR=$(BUILD_DIR) $(MAKE) -C $(CC_COMMON)/tests/unit test_unit +test_unit_cov: + BUILD_DIR=$(BUILD_DIR) $(MAKE) -C $(CC_ANALYZER) test_unit_cov + BUILD_DIR=$(BUILD_DIR) $(MAKE) -C $(CC_WEB) test_unit_cov + BUILD_DIR=$(BUILD_DIR) $(MAKE) -C $(CC_COMMON)/tests/unit test_unit_cov + test_unit_in_env: BUILD_DIR=$(BUILD_DIR) $(MAKE) -C $(CC_ANALYZER) test_unit_in_env BUILD_DIR=$(BUILD_DIR) $(MAKE) -C $(CC_WEB) test_unit_in_env +test_unit_cov_in_env: + BUILD_DIR=$(BUILD_DIR) $(MAKE) -C $(CC_ANALYZER) test_unit_cov_in_env + BUILD_DIR=$(BUILD_DIR) $(MAKE) -C $(CC_WEB) test_unit_cov_in_env + test_functional: BUILD_DIR=$(BUILD_DIR) $(MAKE) -C $(CC_ANALYZER) test_functional BUILD_DIR=$(BUILD_DIR) $(MAKE) -C $(CC_WEB) test_functional diff --git a/analyzer/requirements_py/dev/requirements.txt b/analyzer/requirements_py/dev/requirements.txt index b4b6abde1e..0dc4335bb8 100644 --- a/analyzer/requirements_py/dev/requirements.txt +++ b/analyzer/requirements_py/dev/requirements.txt @@ -7,3 +7,4 @@ pylint==2.4.4 mkdocs==1.1.2 PyYAML==5.4.1 mypy_extensions==0.4.3 +coverage==5.5.0 diff --git a/analyzer/tests/Makefile b/analyzer/tests/Makefile index 0d47aa3971..8a47851282 100644 --- a/analyzer/tests/Makefile +++ b/analyzer/tests/Makefile @@ -40,13 +40,20 @@ run_test_in_env: venv_dev nosetests $(NOSECFG) ${TEST} || exit 1 UNIT_TEST_CMD = $(REPO_ROOT) nosetests $(NOSECFG) tests/unit +UNIT_TEST_COV_CMD = $(REPO_ROOT) coverage run -m nose $(NOSECFG) tests/unit && coverage report && coverage html test_unit: $(UNIT_TEST_CMD) +test_unit_cov: + $(UNIT_TEST_COV_CMD) + test_unit_in_env: venv_dev $(ACTIVATE_DEV_VENV) && $(UNIT_TEST_CMD) +test_unit_cov_in_env: venv_dev + $(ACTIVATE_DEV_VENV) && $(UNIT_TEST_COV_CMD) + FUNCTIONAL_TEST_CMD = $(REPO_ROOT) $(TEST_PROJECT) \ nosetests $(NOSECFG) tests/functional || exit 1 diff --git a/codechecker_common/requirements_py/dev/requirements.txt b/codechecker_common/requirements_py/dev/requirements.txt index ccd71c5cd9..d8111d9143 100644 --- a/codechecker_common/requirements_py/dev/requirements.txt +++ b/codechecker_common/requirements_py/dev/requirements.txt @@ -1,2 +1,3 @@ nose==1.3.7 portalocker==2.2.1 +coverage==5.5.0 diff --git a/codechecker_common/tests/unit/Makefile b/codechecker_common/tests/unit/Makefile index 17e7d0b14d..5a893c8454 100644 --- a/codechecker_common/tests/unit/Makefile +++ b/codechecker_common/tests/unit/Makefile @@ -12,9 +12,16 @@ test_in_env: test_unit_in_env test: test_unit UNIT_TEST_CMD = $(REPO_ROOT) nosetests $(NOSECFG) . +UNIT_TEST_COV_CMD = $(REPO_ROOT) coverage run -m nose $(NOSECFG) . && coverage report && coverage html test_unit: $(UNIT_TEST_CMD) +test_unit_cov: + $(UNIT_TEST_COV_CMD) + test_unit_in_env: venv_dev $(ACTIVATE_DEV_VENV) && $(UNIT_TEST_CMD) + +test_unit_cov_in_env: venv_dev + $(ACTIVATE_DEV_VENV) && $(UNIT_TEST_COV_CMD) diff --git a/web/client/tests/Makefile b/web/client/tests/Makefile index fdd9a14360..2fea93ec1f 100644 --- a/web/client/tests/Makefile +++ b/web/client/tests/Makefile @@ -1,7 +1,15 @@ CLIENT_UNIT_TEST_CMD = $(REPO_ROOT) BUILD_DIR=$(BUILD_DIR) nosetests $(NOSECFG) -w client tests/unit +CLIENT_UNIT_TEST_COV_CMD = $(REPO_ROOT) BUILD_DIR=$(BUILD_DIR) coverage run -m nose $(NOSECFG) -w client tests/unit && coverage report && coverage html + test_unit_client: $(CLIENT_UNIT_TEST_CMD) +test_unit_cov_client: + $(CLIENT_UNIT_TEST_COV_CMD) + test_unit_client_in_env: venv_dev $(ACTIVATE_DEV_VENV) && $(CLIENT_UNIT_TEST_CMD) + +test_unit_cov_client_in_env: venv_dev + $(ACTIVATE_DEV_VENV) && $(CLIENT_UNIT_TEST_COV_CMD) diff --git a/web/requirements_py/dev/requirements.txt b/web/requirements_py/dev/requirements.txt index 3412d63aa4..5b29fd7bee 100644 --- a/web/requirements_py/dev/requirements.txt +++ b/web/requirements_py/dev/requirements.txt @@ -11,6 +11,7 @@ nose==1.3.7 mockldap==0.3.0 mkdocs==1.1.2 mypy_extensions==0.4.3 +coverage==5.5.0 ./api/py/codechecker_api/dist/codechecker_api.tar.gz ./api/py/codechecker_api_shared/dist/codechecker_api_shared.tar.gz diff --git a/web/server/tests/Makefile b/web/server/tests/Makefile index c5b7738c7e..c57ccff424 100644 --- a/web/server/tests/Makefile +++ b/web/server/tests/Makefile @@ -1,7 +1,14 @@ SERVER_UNIT_TEST_CMD = $(REPO_ROOT) BUILD_DIR=$(BUILD_DIR) nosetests $(NOSECFG) -w server tests/unit +SERVER_UNIT_TEST_COV_CMD = $(REPO_ROOT) BUILD_DIR=$(BUILD_DIR) coverage run -m nose $(NOSECFG) -w server tests/unit && coverage report && coverage html test_unit_server: $(SERVER_UNIT_TEST_CMD) +test_unit_cov_server: + $(SERVER_UNIT_TEST_COV_CMD) + test_unit_server_in_env: venv_dev $(ACTIVATE_DEV_VENV) && $(SERVER_UNIT_TEST_CMD) + +test_unit_cov_server_in_env: venv_dev + $(ACTIVATE_DEV_VENV) && $(SERVER_UNIT_TEST_COV_CMD) diff --git a/web/tests/Makefile b/web/tests/Makefile index 7f42ad6f88..e3df9394a7 100644 --- a/web/tests/Makefile +++ b/web/tests/Makefile @@ -98,8 +98,12 @@ run_test_in_env: venv_dev test_unit: test_unit_server test_unit_client +test_unit_cov: test_unit_cov_server test_unit_cov_client + test_unit_in_env: test_unit_server_in_env test_unit_client_in_env +test_unit_cov_in_env: test_unit_cov_server_in_env test_unit_cov_client_in_env + test_functional: test_sqlite test_psql test_functional_in_env: test_sqlite_in_env test_psql_in_env