From 5e41af77f35439bb61cfbaa32a890ac9b9375d93 Mon Sep 17 00:00:00 2001 From: "Bruno P. Kinoshita" Date: Thu, 2 Feb 2023 15:28:53 +0100 Subject: [PATCH 1/2] Fix nose coverage command, add it to GitLab CICD --- .gitignore | 8 ++++++-- .gitlab-ci.yml | 3 +-- test/unit/test_db_manager.py | 16 +++++++++------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 3ae30e424..61e511ab0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,8 +3,6 @@ .*.sw* .*.pyc* .*.log* -/cover/ -/.coverage autosubmit/miniTest.py autosubmit/simple_test.py .vscode/ @@ -15,3 +13,9 @@ docs/build/ dist/ build/ .cache + +# Coverage files +/cover/ +/.coverage +test/coverage.xml + diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cae120891..68aa35dc4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,9 +25,8 @@ test_python3: - git submodule update --init --recursive - conda env update -f environment.yml -n autosubmit3 python=3.7.3 - source activate autosubmit3 - - python3 -m 'nose' --exclude=regression --verbosity=3 test/unit + - python3 -m 'nose' --exclude=regression --verbosity=3 test/unit --with-coverage --cover-package=autosubmit --cover-inclusive --cover-xml --cover-xml-file=test/coverage.xml -#--with-coverage --cover-package=autosubmit --cover-inclusive --cover-xml --cover-xml-file=test/coverage.xml # report_codacy: # stage: report # script: diff --git a/test/unit/test_db_manager.py b/test/unit/test_db_manager.py index afcad6061..a46133c9f 100644 --- a/test/unit/test_db_manager.py +++ b/test/unit/test_db_manager.py @@ -2,7 +2,7 @@ from unittest import TestCase import os import sys -from mock import Mock +from mock import MagicMock from mock import patch from autosubmit.database.db_manager import DbManager @@ -50,11 +50,13 @@ class TestDbManager(TestCase): self.assertEqual(expected_command, command) def test_when_database_already_exists_then_is_not_initialized_again(self): - sys.modules['os'].path.exists = Mock(return_value=True) - connection_mock = Mock() - cursor_mock = Mock() - cursor_mock.side_effect = Exception('This method shoudn\'t be called') - connection_mock.cursor = Mock(return_value=cursor_mock) - sys.modules['sqlite3'].connect = Mock(return_value=connection_mock) + sys.modules['os'].path.exists = MagicMock(return_value=True) + connection_mock = MagicMock() + cursor_mock = MagicMock() + cursor_mock.side_effect = Exception('This method should not be called') + connection_mock.cursor = MagicMock(return_value=cursor_mock) + original_connect = sys.modules['sqlite3'].connect + sys.modules['sqlite3'].connect = MagicMock(return_value=connection_mock) DbManager('dummy-path', 'dummy-name', 999) connection_mock.cursor.assert_not_called() + sys.modules['sqlite3'].connect = original_connect -- GitLab From cac7adce061581bb1786953d8fbe9674e2d4d5e5 Mon Sep 17 00:00:00 2001 From: "Bruno P. Kinoshita" Date: Thu, 2 Feb 2023 15:52:08 +0100 Subject: [PATCH 2/2] Use GitLab CICD coverage reporting --- .gitignore | 2 +- .gitlab-ci.yml | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 61e511ab0..eb86c7600 100644 --- a/.gitignore +++ b/.gitignore @@ -15,7 +15,7 @@ build/ .cache # Coverage files -/cover/ +coverage/ /.coverage test/coverage.xml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 68aa35dc4..c06571926 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,13 +26,15 @@ test_python3: - conda env update -f environment.yml -n autosubmit3 python=3.7.3 - source activate autosubmit3 - python3 -m 'nose' --exclude=regression --verbosity=3 test/unit --with-coverage --cover-package=autosubmit --cover-inclusive --cover-xml --cover-xml-file=test/coverage.xml - -# report_codacy: -# stage: report -# script: -# - source activate autosubmit2 -# - pip install codacy-coverage --upgrade -# - python-codacy-coverage -r test/coverage.xml + coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/' + # These artifacts are saved with every build in GitLab and can be reviewed later. If + # we have a folder with HTML files, as in this example, users can navigate with their + # browser. + artifacts: + reports: + coverage_report: + coverage_format: cobertura + path: test/coverage.xml clean: stage: clean -- GitLab