Skip to content

Commit

Permalink
chore: Add tox.ini, update pytest config
Browse files Browse the repository at this point in the history
  • Loading branch information
effigies committed Dec 14, 2024
1 parent 3ab0a45 commit 087d867
Show file tree
Hide file tree
Showing 2 changed files with 142 additions and 2 deletions.
17 changes: 15 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,22 @@ per-file-ignores = [
]

[tool.pytest.ini_options]
minversion = "6"
testpaths = ["sdcflows"]
log_cli_level = "INFO"
xfail_strict = true
norecursedirs = [".git"]
addopts = "-svx --doctest-modules --strict-markers"
addopts = [
"-svx",
"-ra",
"--strict-config",
"--strict-markers",
"--doctest-modules",
# Config pytest-cov
"--cov=sdcflows",
"--cov-report=xml",
"--cov-config=pyproject.toml",
]
doctest_optionflags = "ALLOW_UNICODE NORMALIZE_WHITESPACE ELLIPSIS"
env = "PYTHONHASHSEED=0"
filterwarnings = ["ignore::DeprecationWarning"]
Expand All @@ -164,7 +178,6 @@ markers = [

[tool.coverage.run]
branch = true
concurrency = 'multiprocessing'
omit = [
'*/tests/*',
'*/__init__.py',
Expand Down
127 changes: 127 additions & 0 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
[tox]
requires =
tox>=4
tox-uv
envlist =
py3{9,10,11,12,13}-latest
py39-min
py3{11,12,13}-pre
style
spellcheck
skip_missing_interpreters = true

# Configuration that allows us to split tests across GitHub runners effectively
[gh-actions]
python =
3.9: py39
3.10: py310
3.11: py311
3.12: py312
3.13: py313

[gh-actions:env]
DEPENDS =
min: min
latest: latest
pre: pre

[testenv]
description = Pytest with coverage
labels = test
pip_pre =
pre: true
pass_env =
TEMPLATEFLOW_HOME
# Freesurfer variables searched for
FREESURFER_HOME
SUBJECTS_DIR
FS_LICENSE
# CI variables
TEST_DATA_HOME
TEST_OUTPUT_DIR
TEST_WORK_DIR
FMRIPREP_REGRESSION_SOURCE
CACHED_WORK_DIRECTORY
# CircleCI-specific
CIRCLE_NPROCS
SAVE_CIRCLE_ARTIFACTS
# getpass.getuser() sources for Windows:
LOGNAME
USER
LNAME
USERNAME
# Pass user color preferences through
PY_COLORS
FORCE_COLOR
NO_COLOR
CLICOLOR
CLICOLOR_FORCE
PYTHON_GIL
deps =
# Waiting on a release
py313: traits @ git+https://github.com/enthought/traits.git@10954eb
extras = tests
setenv =
pre: PIP_EXTRA_INDEX_URL=https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
pre: UV_EXTRA_INDEX_URL=https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
uv_resolution =
min: lowest-direct

commands =
pytest --durations=20 --durations-min=1.0 --cov-report term-missing {posargs:-n auto}

[testenv:style]
description = Check our style guide
labels = check
deps =
ruff
skip_install = true
commands =
ruff check --diff
ruff format --diff

[testenv:style-fix]
description = Auto-apply style guide to the extent possible
labels = pre-release
deps =
ruff
skip_install = true
commands =
ruff check --fix
ruff format
ruff check --select ISC001

[testenv:spellcheck]
description = Check spelling
labels = check
deps =
codespell[toml]
skip_install = true
commands =
codespell . {posargs}

[testenv:build{,-strict}]
labels =
check
pre-release
deps =
build
twine
skip_install = true
set_env =
# Ignore specific known warnings:
# https://github.com/pypa/pip/issues/11684
# https://github.com/pypa/pip/issues/12243
strict: PYTHONWARNINGS=error,once:pkg_resources is deprecated as an API.:DeprecationWarning:pip._internal.metadata.importlib._envs,once:Unimplemented abstract methods {'locate_file'}:DeprecationWarning:pip._internal.metadata.importlib._dists
commands =
python -m build
python -m twine check dist/*

[testenv:publish]
depends = build
labels = release
deps =
twine
skip_install = true
commands =
python -m twine upload dist/*

0 comments on commit 087d867

Please sign in to comment.