https://github.com/astropy/astropy
Raw File
Tip revision: 0a06e9aef297dbc3d9334afad57b79acaa540fd3 authored by P. L. Lim on 05 April 2024, 20:35:05 UTC
Merge pull request #16277 from eerovaher/coord-matching-tests
Tip revision: 0a06e9a
tox.ini
[tox]
envlist =
    py{310,311,312,dev}-test{,-recdeps,-alldeps,-oldestdeps,-devdeps,-devinfra,-predeps,-numpy123,-numpy124,-numpy125,-mpl334}{,-cov}{,-clocale}{,-fitsio}{,-noscipy}
    # Only these two exact tox environments have corresponding figure hash files.
    py310-test-image-mpl334-cov
    py310-test-image-mpldev-cov
    build_docs
    linkcheck
    codestyle
    flynt

[testenv]
# Pass through the following environment variables which are needed for the CI
passenv = HOME,WINDIR,LC_ALL,LC_CTYPE,CC,CI,IS_CRON,ARCH_ON_CI

setenv =
    NUMPY_WARN_IF_NO_MEM_POLICY = 1
    # For coverage, we need to pass extra options to the C compiler
    cov: CFLAGS = --coverage -fno-inline-functions -O0
    image: MPLFLAGS = -m "mpl_image_compare" --mpl --mpl-generate-summary=html --mpl-results-path={toxinidir}/results --mpl-hash-library={toxinidir}/astropy/tests/figures/{envname}.json --mpl-baseline-path=https://raw.githubusercontent.com/astropy/astropy-figure-tests/astropy-main/figures/{envname}/ --remote-data -W ignore::DeprecationWarning
    !image: MPLFLAGS =
    clocale: LC_CTYPE = C.ascii
    clocale: LC_ALL = C
    devdeps: PIP_EXTRA_INDEX_URL = https://pypi.anaconda.org/liberfa/simple https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
    mpldev: PIP_EXTRA_INDEX_URL = https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
    fitsio: ASTROPY_ALWAYS_TESTS_FITSIO = "true"

# Run the tests in a temporary directory to make sure that we don't import
# astropy from the source tree
changedir = .tmp/{envname}

# tox environments are constructed with so-called 'factors' (or terms)
# separated by hyphens, e.g. test-devdeps-cov. Lines below starting with factor:
# will only take effect if that factor is included in the environment name. To
# see a list of example environments that can be run, along with a description,
# run:
#
#     tox -l -v
#
description =
    run tests
    recdeps: with recommended optional dependencies
    alldeps: with all optional and test dependencies
    devdeps: with the latest developer version of key dependencies
    devinfra: like devdeps but also dev version of infrastructure
    oldestdeps: with the oldest supported version of key dependencies
    cov: and test coverage
    numpy123: with numpy 1.23.*
    numpy124: with numpy 1.24.*
    numpy125: with numpy 1.25.*
    image: with image tests
    mpl334: with matplotlib 3.3.4
    mpldev: with the latest developer version of matplotlib
    double: twice in a row to check for global state changes
    noscipy: without scipy-dev

deps =
    numpy123: numpy==1.23.*
    numpy124: numpy==1.24.*
    numpy125: numpy==1.25.*

    mpl334: matplotlib==3.3.4

    image: latex
    image: scipy
    image: pytest-mpl>=0.17

    # Some FITS tests use fitsio as a comparison
    fitsio: fitsio

    # The oldestdeps factor is intended to be used to install the oldest versions of all
    # dependencies that have a minimum version.
    oldestdeps: pyerfa==2.0.*
    oldestdeps: numpy==1.23.*
    oldestdeps: matplotlib==3.3.*
    oldestdeps: asdf-astropy==0.3.*
    oldestdeps: scipy==1.8.*
    oldestdeps: pyyaml==3.13
    oldestdeps: ipython==4.2.*
    oldestdeps: pandas==1.4.*
    # ipython did not pin traitlets, so we have to
    oldestdeps: traitlets<4.1

    # The devdeps factor is intended to be used to install the latest developer version
    # or nightly wheel of key dependencies.
    devdeps-!noscipy: scipy>=0.0.dev0
    devdeps: numpy>=0.0.dev0
    devdeps-!noscipy: matplotlib>=0.0.dev0
    devdeps: pyerfa>=0.0.dev0

    mpldev: matplotlib>=0.0.dev0

    # Latest developer version of infrastructure packages.
    devinfra: git+https://github.com/pytest-dev/pytest.git
    devinfra: git+https://github.com/astropy/extension-helpers.git
    devinfra: git+https://github.com/scientific-python/pytest-doctestplus.git
    devinfra: git+https://github.com/astropy/pytest-remotedata.git
    devinfra: git+https://github.com/astropy/pytest-astropy-header.git
    devinfra: git+https://github.com/astropy/pytest-arraydiff.git
    devinfra: git+https://github.com/astropy/pytest-filter-subpackage.git
    devinfra: git+https://github.com/matplotlib/pytest-mpl.git
    devinfra: git+https://github.com/astropy/pytest-astropy.git

# The following indicates which [project.optional-dependencies] from pyproject.toml will be installed
extras =
    test: test
    recdeps: recommended
    recdeps: test_all
    alldeps: all
    alldeps: test_all

install_command =
    !devdeps: python -I -m pip install
    devdeps: python -I -m pip install -v --pre

commands =
    pip freeze
    !cov-!double: pytest --pyargs astropy {toxinidir}/docs {env:MPLFLAGS} {posargs}
    cov-!double: pytest --pyargs astropy {toxinidir}/docs {env:MPLFLAGS} --cov astropy --cov-config={toxinidir}/pyproject.toml --cov-report xml:{toxinidir}/coverage.xml {posargs}

    double: python -c 'import sys; from astropy import test; test(); sys.exit(test())'

pip_pre =
    predeps: true
    !predeps: false


# This lets developers use tox to build docs and ignores warnings.
# This is not used in CI; For that, we have RTD PR builder.
[testenv:build_docs]
changedir = docs
description = invoke sphinx-build to build the HTML docs
extras = docs
commands =
    pip freeze
    sphinx-build -b html . _build/html {posargs:-j auto}

[testenv:linkcheck]
changedir = docs
description = check the links in the HTML docs
extras = docs
commands =
    pip freeze
    sphinx-build -b linkcheck . _build/html {posargs:-W}

[testenv:codestyle]
skip_install = true
description = Run all style and file checks with pre-commit
deps =
    pre-commit
commands =
    pre-commit install-hooks
    pre-commit run {posargs:--color always --all-files --show-diff-on-failure}

[testenv:flynt]
skip_install = true
description = Run flynt to convert old string formatting to f-strings
deps =
    flynt
commands =
    flynt -f {toxinidir}

[testenv:pyinstaller]
# Check that astropy can be included in a PyInstaller bundle without any issues. This
# also serves as a test that tests do not import anything from outside the tests
# directories with relative imports, since we copy the tests out to a separate directory
# to run them.
description = check that astropy can be included in a pyinstaller bundle
changedir = .pyinstaller
deps =
    pyinstaller
    pytest-mpl
    matplotlib
extras = test
commands =
    pyinstaller --onefile run_astropy_tests.py \
                --distpath . \
                --additional-hooks-dir hooks \
                --exclude-module tkinter \
                --collect-submodules=py \
                --hidden-import pytest \
                --hidden-import pytest_astropy.plugin \
                --hidden-import pytest_remotedata.plugin \
                --hidden-import pytest_doctestplus.plugin \
                --hidden-import pytest_mpl.plugin
    ./run_astropy_tests --astropy-root {toxinidir}
back to top