From 337c979175486e618bdb30ea971eb4ab83044347 Mon Sep 17 00:00:00 2001 From: Ichlasul Affan <ichlaffterlalu@gmail.com> Date: Wed, 4 Dec 2019 14:58:28 +0700 Subject: [PATCH 1/8] Set "cover package" parameter in NOSE_ARGS to core instead of core.views --- kape/settings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kape/settings.py b/kape/settings.py index 7e8f3f4a..92e328f3 100755 --- a/kape/settings.py +++ b/kape/settings.py @@ -61,7 +61,7 @@ TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' # Tell nose to measure coverage on the 'foo' and 'bar' apps NOSE_ARGS = [ '--with-coverage', - '--cover-package=core.views', + '--cover-package=core', '--cover-html-dir=test/backend', '--cover-html', '--cover-xml', @@ -201,4 +201,4 @@ MAX_UPLOAD_SIZE = 5242880 API_MAHASISWA = "https://api.cs.ui.ac.id/siakngcs/mahasiswa/" API_RIWAYAT_MAHASISWA = API_MAHASISWA+'{npm}/riwayat/' -API_VERIFY_USER = "https://akun.cs.ui.ac.id/oauth/token/verify/" \ No newline at end of file +API_VERIFY_USER = "https://akun.cs.ui.ac.id/oauth/token/verify/" -- GitLab From ebfc3dabc39d9bcd95898ccdb80be526cf9ed062 Mon Sep 17 00:00:00 2001 From: Ichlasul Affan <ichlaffterlalu@gmail.com> Date: Wed, 4 Dec 2019 15:11:24 +0700 Subject: [PATCH 2/8] Avoid tests running twice by making core/tests/__init__.py empty --- core/tests/__init__.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/core/tests/__init__.py b/core/tests/__init__.py index 27b5e544..e69de29b 100755 --- a/core/tests/__init__.py +++ b/core/tests/__init__.py @@ -1,6 +0,0 @@ -# __init__.py - -from core.tests.test_accounts import LoginTests, RegisterTests, ProfileUpdateTests -from core.tests.test_vacancies import ApplicationTests, BookmarkApplicationTests, CompanyListsTests, VacancyTest -from core.tests.test_create_vacancies import CreateAndUpdateVacancyTest -from core.tests.test_feedbacks import FeedbacksTests -- GitLab From b4b31be6d656c7c0f46204c3c9074f0281ef167b Mon Sep 17 00:00:00 2001 From: Ichlasul Affan <ichlaffterlalu@gmail.com> Date: Wed, 4 Dec 2019 15:15:26 +0700 Subject: [PATCH 3/8] Remove core.rekomendasiIPK as it is not being used --- core/rekomendasiIPK.py | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 core/rekomendasiIPK.py diff --git a/core/rekomendasiIPK.py b/core/rekomendasiIPK.py deleted file mode 100644 index c7ac2c7d..00000000 --- a/core/rekomendasiIPK.py +++ /dev/null @@ -1,3 +0,0 @@ -nilai_mahasiswa = (3.4, 3.5, 3.6) -descending = "".join(sorted(str(nilai_mahasiswa), reverse = True)) -print(descending) \ No newline at end of file -- GitLab From 1293297bfec55d7371d0f5a573c06e74db2ab8cd Mon Sep 17 00:00:00 2001 From: Ichlasul Affan <ichlaffterlalu@gmail.com> Date: Wed, 4 Dec 2019 16:12:49 +0700 Subject: [PATCH 4/8] Try --cover-erase to troubleshoot models line coverage In regular Django test, models should be all covered from the beginning except self-defined functions --- kape/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/kape/settings.py b/kape/settings.py index 92e328f3..6c36b919 100755 --- a/kape/settings.py +++ b/kape/settings.py @@ -65,6 +65,7 @@ NOSE_ARGS = [ '--cover-html-dir=test/backend', '--cover-html', '--cover-xml', + '--cover-erase', '--cover-xml-file=test/backend/coverage.xml' ] -- GitLab From 6171a460bd6b85e6affb1331ce3a18e1ba54ded0 Mon Sep 17 00:00:00 2001 From: Ichlasul Affan <ichlaffterlalu@gmail.com> Date: Wed, 4 Dec 2019 17:22:45 +0700 Subject: [PATCH 5/8] Fix django-nose bug, coverage should run before any modules load See https://github.com/jazzband/django-nose/issues/180#issuecomment-93371418 for more info. --- kape/settings.py | 1 - manage.py | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/kape/settings.py b/kape/settings.py index 6c36b919..a5df8d06 100755 --- a/kape/settings.py +++ b/kape/settings.py @@ -60,7 +60,6 @@ TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' # Tell nose to measure coverage on the 'foo' and 'bar' apps NOSE_ARGS = [ - '--with-coverage', '--cover-package=core', '--cover-html-dir=test/backend', '--cover-html', diff --git a/manage.py b/manage.py index 408e1c8a..a2611660 100755 --- a/manage.py +++ b/manage.py @@ -19,4 +19,22 @@ if __name__ == "__main__": "forget to activate a virtual environment?" ) raise + + is_testing = 'test' in sys.argv + if is_testing: + import coverage + from kape.settings import NOSE_ARGS + sources = [] + for x in NOSE_ARGS: + if "--cover-package=" in x: + sources.extend(x.replace("--cover-package=", "").split(",")) + cov = coverage.coverage(source=sources, omit=['*/tests/*']) + cov.erase() + cov.start() + execute_from_command_line(sys.argv) + + if is_testing: + cov.stop() + cov.save() + cov.report() -- GitLab From d19aa143e7dc7c294be8bb10ae01a867fbf2a096 Mon Sep 17 00:00:00 2001 From: Ichlasul Affan <ichlaffterlalu@gmail.com> Date: Wed, 4 Dec 2019 17:43:07 +0700 Subject: [PATCH 6/8] Update again manage.py and settings.py to generate report --- kape/settings.py | 2 +- manage.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/kape/settings.py b/kape/settings.py index a5df8d06..9c340aac 100755 --- a/kape/settings.py +++ b/kape/settings.py @@ -60,11 +60,11 @@ TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' # Tell nose to measure coverage on the 'foo' and 'bar' apps NOSE_ARGS = [ + '--cover-erase', '--cover-package=core', '--cover-html-dir=test/backend', '--cover-html', '--cover-xml', - '--cover-erase', '--cover-xml-file=test/backend/coverage.xml' ] diff --git a/manage.py b/manage.py index a2611660..a4eb9b7e 100755 --- a/manage.py +++ b/manage.py @@ -38,3 +38,15 @@ if __name__ == "__main__": cov.stop() cov.save() cov.report() + if "--cover-html" in NOSE_ARGS: + html_dir = None + for x in NOSE_ARGS: + if "--cover-html-dir=" in x: + html_dir = x.replace("--cover-html-dir=", "") + cov.html_report(directory=html_dir) + if "--cover-xml" in NOSE_ARGS: + xml_file = None + for x in NOSE_ARGS: + if "--cover-xml-file=" in x: + xml_file = x.replace("--cover-xml-file=", "") + cov.xml_report(outfile=xml_file) -- GitLab From a268922ed52aa0351c44f3337e6ad233d24652d7 Mon Sep 17 00:00:00 2001 From: Ichlasul Affan <ichlaffterlalu@gmail.com> Date: Wed, 4 Dec 2019 20:03:48 +0700 Subject: [PATCH 7/8] Drop django-nose at the expense of logs are not being grouped for each tests. --- kape/settings.py | 17 ++++------------- manage.py | 32 +++++++++++++++----------------- requirements.txt | 1 - 3 files changed, 19 insertions(+), 31 deletions(-) diff --git a/kape/settings.py b/kape/settings.py index 9c340aac..e4b241aa 100755 --- a/kape/settings.py +++ b/kape/settings.py @@ -36,7 +36,6 @@ INSTALLED_APPS = [ 'webpack_loader', 'core', 'rest_framework', - 'django_nose', 'rest_framework_swagger', 'silk', 'django_filters' @@ -55,18 +54,10 @@ MIDDLEWARE = [ ROOT_URLCONF = 'kape.urls' -# Use nose to run all tests -TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' - -# Tell nose to measure coverage on the 'foo' and 'bar' apps -NOSE_ARGS = [ - '--cover-erase', - '--cover-package=core', - '--cover-html-dir=test/backend', - '--cover-html', - '--cover-xml', - '--cover-xml-file=test/backend/coverage.xml' -] +# Coverage parameters +TEST_COVER_PACKAGE = ['core'] +TEST_COVERAGE_RESULT_HTML_DIR = 'test/backend' +TEST_COVERAGE_RESULT_XML = 'test/backend/coverage.xml' TEMPLATES = [ { diff --git a/manage.py b/manage.py index a4eb9b7e..6c986d74 100755 --- a/manage.py +++ b/manage.py @@ -20,15 +20,14 @@ if __name__ == "__main__": ) raise - is_testing = 'test' in sys.argv + is_testing = 'test' in sys.argv and 'help' not in sys.argv if is_testing: import coverage - from kape.settings import NOSE_ARGS - sources = [] - for x in NOSE_ARGS: - if "--cover-package=" in x: - sources.extend(x.replace("--cover-package=", "").split(",")) - cov = coverage.coverage(source=sources, omit=['*/tests/*']) + try: + from kape.settings import TEST_COVER_PACKAGE as sources + cov = coverage.coverage(source=sources, omit=['*/tests/*']) + except ImportError: + cov = coverage.coverage(omit=['*/tests/*']) cov.erase() cov.start() @@ -38,15 +37,14 @@ if __name__ == "__main__": cov.stop() cov.save() cov.report() - if "--cover-html" in NOSE_ARGS: - html_dir = None - for x in NOSE_ARGS: - if "--cover-html-dir=" in x: - html_dir = x.replace("--cover-html-dir=", "") + try: + from kape.settings import TEST_COVERAGE_RESULT_HTML_DIR as html_dir cov.html_report(directory=html_dir) - if "--cover-xml" in NOSE_ARGS: - xml_file = None - for x in NOSE_ARGS: - if "--cover-xml-file=" in x: - xml_file = x.replace("--cover-xml-file=", "") + except ImportError: + pass + + try: + from kape.settings import TEST_COVERAGE_RESULT_XML as xml_file cov.xml_report(outfile=xml_file) + except ImportError: + pass diff --git a/requirements.txt b/requirements.txt index c83f8feb..0aa37fd4 100755 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,6 @@ appdirs>=1,<2 coverage Django>=2.2,<3 django-filter>=2.2,<3 -django-nose django-rest-swagger django-silk django-webpack-loader>=0.4,<1 -- GitLab From 418b521753472316959448f9234949d82e16aa10 Mon Sep 17 00:00:00 2001 From: Ichlasul Affan <ichlaffterlalu@gmail.com> Date: Thu, 5 Dec 2019 12:34:17 +0700 Subject: [PATCH 8/8] Update GitLab CI to add more verbosity on test It mimics the easiness of debugging like Django Nose --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 850559ad..2247b249 100755 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ test-backend: - pip install -r requirements.txt - python3 manage.py makemigrations - python3 manage.py migrate - - python3 manage.py test + - python3 manage.py test -v 2 artifacts: paths: - test/ -- GitLab