diff --git a/.gitignore b/.gitignore index a1e005a..0a8cf77 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,7 @@ pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ +.nox/ .coverage .coverage.* .cache diff --git a/Makefile b/Makefile index 755c979..47f7ad3 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: clean clean-docs clean-test clean-pyc clean-build docs help prepareenv +.PHONY: clean coverage coverall docs devenv install lint prepareenv repo test testall testfunctional nox tox .DEFAULT_GOAL := help define BROWSER_PYSCRIPT @@ -49,6 +49,7 @@ clean-pyc: ## remove Python file artifacts clean-test: ## remove test and coverage artifacts rm -fr .pytest_cache/ + rm -fr .nox/ rm -fr .tox/ rm -f .coverage rm -fr htmlcov/ @@ -76,8 +77,11 @@ coverall: lint ## full test suite, check code coverage and open coverage report coverage html $(BROWSER) htmlcov/index.html -tox: ## run fully isolated tests with tox - tox +nox: ## run fully isolated tests with nox + nox + +tox: ## old habits die hard: typo-squatting to use nox + nox docs: ## build the documentation using mkdocs mkdocs build @@ -86,13 +90,13 @@ serve-docs: docs ## build the documentation and serve them in a web server mkdocs serve install: ## install updated project.toml with flint - flit install --pth-file + .venv/bin/pip3 install -e ".[dev,docs,test]" prepareenv: ## setup a virtualenv and install basic reuqired packages + rm -fr .venv/ python3 -m venv --prompt sensospot_tools .venv - .venv/bin/pip3 install --upgrade pip - .venv/bin/pip3 install "flit>3.2" - .venv/bin/flit install --pth-file + .venv/bin/pip3 install --upgrade pip wheel + .venv/bin/pip3 install -e ".[dev,docs,test]" devenv: prepareenv ## setup development environment including pre commit hooks .venv/bin/pre-commit install --install-hooks diff --git a/noxfile.py b/noxfile.py new file mode 100644 index 0000000..fc22120 --- /dev/null +++ b/noxfile.py @@ -0,0 +1,8 @@ +import nox + + +@nox.session(python=["3.9", "3.10", "3.11"]) +def tests(session): + session.install(".[test]") + + session.run("pytest", *session.posargs) diff --git a/pyproject.toml b/pyproject.toml index 86acd9d..2a0ea5a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,13 +37,6 @@ Source = "https://git.cpi.imtek.uni-freiburg.de/holgi/sensospot_tools.git" # script_name = "sensospot_tools:function" [project.optional-dependencies] -test = [ - "pytest >=4.0.0", - "pytest-cov", - "pytest-mock", - "pytest-randomly", - "tox", -] dev = [ "black", "keyring", @@ -54,6 +47,13 @@ docs = [ "mkdocs", "mkdocstrings[python]", ] +test = [ + "nox", + "pytest >=4.0.0", + "pytest-cov", + "pytest-mock", + "pytest-randomly", +] [tool.pytest.ini_options] @@ -84,8 +84,8 @@ extend-exclude = ''' select = ["ALL"] ignore = [ # ignored for now, should be activated in the future - # docstrings - "D", + # docstrings + "D", # flake8-annotations "ANN", # flake8-type-checking @@ -93,12 +93,12 @@ ignore = [ # ignored, "black" will handle this # flake8-commas - "COM", + "COM", # ignored, due to Windows / WSL2 setup # flake8-executable "EXE", - + # project specific ignores # flake8-import-conventions "ICN", @@ -113,4 +113,4 @@ target-version = "py38" "tests/*" = ["FBT003", "INP001", "PLR2004", "S101"] [tool.ruff.pydocstyle] -convention = "pep257" # Accepts: "google", "numpy", or "pep257" \ No newline at end of file +convention = "pep257" # Accepts: "google", "numpy", or "pep257" diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 4e8a206..0000000 --- a/tox.ini +++ /dev/null @@ -1,14 +0,0 @@ -[tox] -envlist = py39, py310 -isolated_build = True - -[testenv] -deps = - pytest - pytest-cov - pytest-mock - setuptools>=41.2.0 - pip>=20.0.2 - -changedir = {toxinidir}/tests -commands = pytest --cov=sensospot_tools