Commit b3e0bad4 authored by Daniel Scheffler's avatar Daniel Scheffler
Browse files

Merge branch 'enhancement/migrate_to_pytest' into 'master'

Enhancement/migrate to pytest

See merge request !24
parents c906618c 7536a8fe
Pipeline #36267 passed with stages
in 13 minutes and 53 seconds
......@@ -3,8 +3,11 @@
branch = False
concurrency = multiprocessing
parallel = True
omit = */site-packages/*,*/tests/*,*/.eggs/*
[report]
show_missing = True
# Regexes for lines to exclude from consideration
exclude_lines =
# Have to re-enable the standard pragma
......
......@@ -13,21 +13,28 @@ test_arosics:
script:
- source /root/mambaforge/bin/activate ci_env
- pip install pytest pytest-cov pytest-reporter-html1 # TODO remove after recreating CI runner
# update py_tools_ds and geoarray
- pip install -U py_tools_ds -q
- pip install -U geoarray -q
# run tests
- make nosetests
- make pytest
# create the docs
- make docs
artifacts:
expose_as: 'Test and coverage report'
paths:
- htmlcov/
- report.html
- docs/_build/html/
- nosetests.html
- nosetests.xml
reports:
cobertura: coverage.xml
junit: report.xml
expire_in: 30 days
when: always
......@@ -87,7 +94,7 @@ pages: # this job must be called 'pages' to advise GitLab to upload content to
- mkdir -p public/doc
- mkdir -p public/images/
- mkdir -p public/coverage
- mkdir -p public/nosetests_reports
- mkdir -p public/test_reports
# Copy over the docs
- cp -r docs/_build/html/* public/doc/
......@@ -96,14 +103,14 @@ pages: # this job must be called 'pages' to advise GitLab to upload content to
# Copy over the coverage reports
- cp -r htmlcov/* public/coverage/
# Copy over the nosetests reports
- cp nosetests.* public/nosetests_reports/
# Copy over the test reports
- cp report.html public/test_reports/
# Check if everything is working great
- ls -al public
- ls -al public/doc
- ls -al public/coverage
- ls -al public/nosetests_reports
- ls -al public/test_reports
artifacts:
paths:
- public
......
......@@ -2,6 +2,12 @@
History
=======
1.7.4 (2021-12-15)
------------------
* Migrated test calls from nosetests to pytest and implemented new test report (!24).
1.7.3 (2021-12-02)
------------------
......
.PHONY: clean clean-test clean-pyc clean-build docs help nosetests
.PHONY: clean clean-test clean-pyc clean-build docs help pytest
.DEFAULT_GOAL := help
define BROWSER_PYSCRIPT
import os, webbrowser, sys
......@@ -49,8 +49,11 @@ clean-test: ## remove test and coverage artifacts
rm -f .coverage
rm -fr .coverage.*
rm -fr htmlcov/
rm -fr nosetests.html
rm -fr nosetests.xml
rm -fr report.html
rm -fr report.xml
rm -fr coverage.xml
rm -fr .pytest_cache
lint: ## check style with flake8
flake8 --max-line-length=120 . tests > ./tests/linting/flake8.log || \
......@@ -84,6 +87,23 @@ nosetests: clean-test ## Runs nosetests with coverage, xUnit and nose-html-outpu
nosetests -vv --with-coverage --cover-package=arosics --cover-erase --cover-html --cover-html-dir=htmlcov \
--with-html --with-xunit --rednose --force-color
pytest: clean-test ## Runs pytest with coverage and creates coverage and test report
## - puts the coverage results in the folder 'htmlcov'
## - generates cobertura 'coverage.xml' (needed to show coverage in GitLab MR changes)
## - generates 'report.html' based on pytest-reporter-html1
## - generates JUnit 'report.xml' to show the test report as a new tab in a GitLab MR
## NOTE: additional options pytest and coverage (plugin pytest-cov) are defined in .pytest.ini and .coveragerc
pytest tests \
--verbosity=3 \
--color=yes \
--tb=short \
--cov=arosics \
--cov-report html:htmlcov \
--cov-report term-missing \
--cov-report xml:coverage.xml \
--template=html1/index.html --report=report.html \
--junitxml report.xml
docs: ## generate Sphinx HTML documentation, including API docs
rm -f docs/arosics.rst
rm -f docs/modules.rst
......
......@@ -100,7 +100,7 @@ Credits
-------
AROSICS was developed by Daniel Scheffler (German Research Centre of Geosciences) within the context of the
`GeoMultiSens <http://www.geomultisens.de/>`__ project funded by the German Federal Ministry of Education and Research
`GeoMultiSens <http://www.geomultisens.gfz-potsdam.de/>`__ project funded by the German Federal Ministry of Education and Research
(project grant code: 01 IS 14 010 A-C).
This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.
......
......@@ -403,6 +403,8 @@ class Tie_Point_Grid(object):
# COREG and is not raised
results = results.get()
break
pool.close() # needed to make coverage work in multiprocessing
pool.join()
else:
# declare global variables needed for self._get_spatial_shifts()
......@@ -974,6 +976,8 @@ class Tie_Point_Grid(object):
#
# with multiprocessing.Pool() as pool:
# self.kriged = pool.map(self.Kriging_mp,args_kwargs_dicts)
# pool.close() # needed to make coverage work in multiprocessing
# pool.join()
# else:
# self.Kriging_sp(attrName,skip_nodata=skip_nodata,skip_nodata_col=skip_nodata_col,
# outGridRes=outGridRes,fName_out=fName_out,tilepos=tilepos)
......
......@@ -67,7 +67,7 @@ req_setup = [
req_intplot = ['holoviews', 'ipython']
req_test = ['coverage', 'nose', 'nose2', 'nose-htmloutput', 'rednose', 'urlchecker'] + req_intplot
req_test = ['pytest', 'pytest-cov', 'pytest-reporter-hmtl1', 'urlchecker'] + req_intplot
req_doc = ['sphinx-argparse', 'sphinx_rtd_theme', 'sphinx-autodoc-typehints']
......
......@@ -31,15 +31,13 @@ dependencies:
- geojson
# doc requirements
- coverage
- flake8
- nose
- nose2
- nose-htmloutput
- pycodestyle
- pydocstyle
- pylint
- rednose
- pytest
- pytest-cov
- pytest-reporter-html1
- sphinx-argparse
- sphinx-autodoc-typehints
- sphinx_rtd_theme
......
......@@ -359,5 +359,5 @@ class CompleteWorkflow_INTER1_S2A_S2A(unittest.TestCase):
if __name__ == '__main__':
import nose2
nose2.main()
import pytest
pytest.main()
......@@ -201,5 +201,5 @@ class CompleteWorkflow_INTER1_S2A_S2A(unittest.TestCase):
if __name__ == '__main__':
import nose2
nose2.main()
import pytest
pytest.main()
......@@ -134,5 +134,5 @@ class Test_Tie_Point_Grid(unittest.TestCase):
if __name__ == '__main__':
import nose2
nose2.main()
import pytest
pytest.main()
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment