diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e7d95e5..a67ad5e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,7 +21,8 @@ from the repo: ``` $ python3 -m venv .venv $ . .venv/bin/activate -(.venv) $ pip3 install .[dev,test] +(.venv) $ pip3 install .[test] +(.venv) $ pip3 install -r requirements-dev.txt (.venv) $ check_patroni ``` @@ -48,4 +49,26 @@ The `README.md` can be geneated with `./docs/make_readme.sh`. ## Executing Tests The pytests are in `./tests` and use a moker to provide a json response instead -of having to call the patroni API. +of having to call the patroni API. To manually run the tests use one of these +commands : + +``` +pytest ./tests # just the tests +tox # pytests for all supported version of python + mypy + flake8 +tox -e py # pytests + mypy + flake8 or the default version of python +``` + +The tests are executed automatically for each PR using the ci (see +`.github/workflow/lint.yml` and `.github/workflow/tests.yml`). + +## Release + +The package is generated and uploaded to pypi when a `v*` tag is created (see +`.github/workflow/publish.yml`). + +Alternatively, the release can be done manually with: + +``` +tox -e build +tox -e upload +``` diff --git a/setup.py b/setup.py index d631268..60ed932 100644 --- a/setup.py +++ b/setup.py @@ -44,21 +44,10 @@ setup( "click >= 8.0.1", ], extras_require={ - "dev": [ - "black", - "check-manifest", - "flake8", - "mypy == 0.961", - ], "test": [ "pytest", "pytest-mock", ], - "release": [ - "wheel", - "setuptools", - "twine", - ], }, entry_points={ "console_scripts": [ diff --git a/tox.ini b/tox.ini index 4fe7bee..573ca8b 100644 --- a/tox.ini +++ b/tox.ini @@ -3,7 +3,9 @@ envlist = lint, mypy, py36, py37, py38, py39, py310 skip_missing_interpreters = True [testenv] -extras = test +deps = + pytest + pytest-mock commands = pytest {toxinidir}/check_patroni {toxinidir}/tests {posargs:-vv} @@ -21,3 +23,24 @@ deps = mypy == 0.961 commands = mypy {toxinidir}/check_patroni + +[testenv:build] +deps = + wheel + setuptools + twine +allowlist_externals = + rm +commands = + rm --verbose --recursive --force {toxinidir}/dist/ + python setup.py check + python setup.py sdist bdist_wheel + python -m twine check dist/* + +[testenv:upload] +# requires a check_patroni section in ~/.pypirc +skip_install = True +deps = + twine +commands = + python -m twine upload --repository check_patroni dist/*