mirror of https://github.com/caronc/apprise
184 lines
4.1 KiB
INI
184 lines
4.1 KiB
INI
[global]
|
|
alwayscopy = True
|
|
|
|
[gh]
|
|
use_discover = False
|
|
|
|
[tox]
|
|
envlist =
|
|
clean
|
|
i18n
|
|
compile
|
|
minimal
|
|
build
|
|
release
|
|
validate
|
|
twine-check
|
|
minversion = 4.0
|
|
requires = virtualenv>=20.0.0
|
|
isolated_build = True
|
|
|
|
[testenv]
|
|
skip_install = false
|
|
usedevelop = true
|
|
changedir = {toxinidir}
|
|
allowlist_externals = *
|
|
ensurepip = true
|
|
setenv =
|
|
COVERAGE_RCFILE = {toxinidir}/pyproject.toml
|
|
|
|
[testenv:build-rpm]
|
|
description = Run RPM packaging via Docker
|
|
allowlist_externals =
|
|
docker
|
|
bash
|
|
commands =
|
|
docker compose run --user root --rm rpmbuild.el9 bash build-rpm.sh
|
|
|
|
[testenv:lint]
|
|
description = Run static analysis using Ruff
|
|
deps = ruff
|
|
commands = ruff check . {posargs}
|
|
|
|
[testenv:format]
|
|
description = Auto-format code using Ruff
|
|
deps = ruff
|
|
commands = ruff check . --fix {posargs}
|
|
|
|
# - This defines a CLI script entry point for packaging.
|
|
# - It ensures that pip install . or python -m build includes
|
|
# a working apprise command.
|
|
# - This is required for proper packaging and end-user usage
|
|
[project.scripts]
|
|
apprise = "apprise.cli:main"
|
|
|
|
[testenv:apprise]
|
|
description = Run Apprise CLI with args
|
|
commands =
|
|
apprise {posargs}
|
|
|
|
[testenv:cli]
|
|
description = Sanity-check Apprise CLI invocation
|
|
commands =
|
|
apprise --version
|
|
|
|
[testenv:checkdone]
|
|
description = Lint + full test run to ensure PR readiness
|
|
extras = dev,all-plugins
|
|
commands =
|
|
pip install --no-cache-dir -e ".[dev,all-plugins]"
|
|
ruff check .
|
|
coverage run --source=apprise -m pytest tests {posargs}
|
|
coverage report
|
|
|
|
[testenv:qa]
|
|
description = Full tests with all plugins + code coverage
|
|
extras = dev,all-plugins
|
|
commands =
|
|
pip install --no-cache-dir -e ".[dev,all-plugins]"
|
|
coverage run --source=apprise -m pytest tests {posargs}
|
|
coverage report
|
|
|
|
[testenv:minimal]
|
|
description = Minimal dependencies + code coverage
|
|
extras = dev
|
|
commands =
|
|
pip install --no-cache-dir -e ".[dev]"
|
|
coverage run --source=apprise -m pytest tests {posargs}
|
|
coverage report
|
|
|
|
[testenv:test]
|
|
description = Run simplified tests without coverage
|
|
extras = dev,all-plugins
|
|
commands =
|
|
pip install --no-cache-dir -e ".[dev,all-plugins]"
|
|
pytest --tb=short -q {posargs}
|
|
|
|
[testenv:clean]
|
|
description = Remove build artifacts and cache files
|
|
skip_install = true
|
|
allowlist_externals =
|
|
find
|
|
rm
|
|
commands =
|
|
find . -type f -name "*.pyc" -delete
|
|
find . -type f -name "*.pyo" -delete
|
|
find . -type f -name "*.orig" -delete
|
|
find . -type d -name "__pycache__" -delete
|
|
rm -rf BUILD SOURCES SRPMS BUILDROOT .cache .ruff_cache .coverage-reports .coverage coverage.xml dist build apprise.egg-info .mypy_cache .pytest_cache
|
|
|
|
[testenv:i18n]
|
|
description = Extract and update .pot/.po files for translation
|
|
extras = dev
|
|
deps = Babel
|
|
ensurepip = true
|
|
commands =
|
|
mkdir -p apprise/i18n
|
|
pybabel extract -F babel.cfg -o apprise/i18n/apprise.pot apprise
|
|
pybabel update -i apprise/i18n/apprise.pot -d apprise/i18n
|
|
|
|
[testenv:compile]
|
|
description = Compile .mo files
|
|
deps = Babel
|
|
commands =
|
|
pybabel compile -d apprise/i18n
|
|
|
|
[testenv:build]
|
|
description = Build sdist and wheel (assumes translations compiled)
|
|
deps =
|
|
build
|
|
commands =
|
|
python -m build
|
|
|
|
[testenv:build-sdist]
|
|
deps = build
|
|
commands = python -m build --sdist
|
|
|
|
[testenv:build-wheel]
|
|
deps = build
|
|
commands = python -m build --wheel
|
|
|
|
[testenv:validate]
|
|
description = Validate pyproject.toml against PEP 621/508
|
|
deps =
|
|
rpmlint
|
|
validate-pyproject
|
|
packaging
|
|
commands =
|
|
validate-pyproject pyproject.toml
|
|
rpmlint packaging/redhat/python-apprise.spec
|
|
|
|
[testenv:twine-check]
|
|
description = Run twine check on dist artifacts
|
|
deps =
|
|
build
|
|
twine
|
|
commands =
|
|
rm -rf dist
|
|
python -m build
|
|
twine check dist/*
|
|
|
|
[testenv:man]
|
|
description = Rebuild the Apprise man page
|
|
allowlist_externals = docker
|
|
commands =
|
|
docker compose run --rm rpmbuild.el9 ronn \
|
|
--organization="Chris Caron <lead2gold@gmail.com>" \
|
|
packaging/man/apprise.md
|
|
|
|
[testenv:release]
|
|
description = Prepare translations, compile, and build all artifacts
|
|
deps =
|
|
validate-pyproject
|
|
packaging
|
|
Babel
|
|
build
|
|
twine
|
|
commands =
|
|
tox -e clean
|
|
tox -e validate
|
|
tox -e i18n
|
|
tox -e compile
|
|
tox -e build
|
|
tox -e twine-check
|