pytest 8.3.4__tar.gz → 8.3.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pytest-8.3.4 → pytest-8.3.5}/.github/workflows/deploy.yml +11 -5
- {pytest-8.3.4 → pytest-8.3.5}/.github/workflows/prepare-release-pr.yml +9 -2
- {pytest-8.3.4 → pytest-8.3.5}/.github/workflows/test.yml +11 -11
- {pytest-8.3.4 → pytest-8.3.5}/.github/workflows/update-plugin-list.yml +4 -2
- {pytest-8.3.4 → pytest-8.3.5}/.pre-commit-config.yaml +4 -0
- {pytest-8.3.4 → pytest-8.3.5}/AUTHORS +2 -0
- {pytest-8.3.4/src/pytest.egg-info → pytest-8.3.5}/PKG-INFO +4 -3
- {pytest-8.3.4 → pytest-8.3.5}/RELEASING.rst +5 -1
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/index.rst +1 -0
- pytest-8.3.5/doc/en/announce/release-8.3.5.rst +26 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/broken-dep-constraints.txt +0 -4
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/builtin.rst +4 -4
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/changelog.rst +41 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/contact.rst +7 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/parametrize.rst +8 -7
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/pythoncollection.rst +2 -2
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/reportingdemo.rst +9 -9
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/simple.rst +1 -1
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/explanation/flaky.rst +12 -2
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/explanation/index.rst +1 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/explanation/pythonpath.rst +2 -2
- pytest-8.3.5/doc/en/explanation/types.rst +89 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/getting-started.rst +1 -1
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/capture-stdout-stderr.rst +1 -1
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/fixtures.rst +1 -1
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/parametrize.rst +0 -4
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/index.rst +1 -1
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/reference/reference.rst +8 -6
- {pytest-8.3.4 → pytest-8.3.5}/pyproject.toml +2 -1
- {pytest-8.3.4 → pytest-8.3.5}/scripts/release.patch.rst +1 -3
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_version.py +9 -4
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/assertion/rewrite.py +3 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/capture.py +18 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/hookspec.py +1 -1
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/pathlib.py +24 -7
- {pytest-8.3.4 → pytest-8.3.5/src/pytest.egg-info}/PKG-INFO +4 -3
- {pytest-8.3.4 → pytest-8.3.5}/src/pytest.egg-info/SOURCES.txt +2 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/conftest.py +7 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_capture.py +30 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_pathlib.py +83 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_terminal.py +34 -5
- {pytest-8.3.4 → pytest-8.3.5}/tox.ini +0 -6
- {pytest-8.3.4 → pytest-8.3.5}/.coveragerc +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.git-blame-ignore-revs +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.gitattributes +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.github/FUNDING.yml +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.github/ISSUE_TEMPLATE/1_bug_report.md +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.github/ISSUE_TEMPLATE/2_feature_request.md +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.github/chronographer.yml +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.github/config.yml +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.github/dependabot.yml +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.github/labels.toml +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.github/patchback.yml +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.github/workflows/stale.yml +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.gitignore +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/.readthedocs.yaml +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/CHANGELOG.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/CITATION +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/CODE_OF_CONDUCT.md +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/CONTRIBUTING.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/LICENSE +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/OPENCOLLECTIVE.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/README.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/TIDELIFT.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/bench/bench.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/bench/bench_argcomplete.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/bench/empty.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/bench/manyparam.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/bench/skip.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/bench/unit_test.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/bench/xunit.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/changelog/.gitignore +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/changelog/README.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/changelog/_template.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/codecov.yml +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/Makefile +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/_static/pytest-custom.css +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/_static/pytest1.png +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/_templates/links.html +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/adopt.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.0.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.0.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.0.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.0.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.1.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.1.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.1.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.1.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.2.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.2.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.2.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.2.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.3.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.3.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.3.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.3.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.3.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.3.5.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.4.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.4.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.4.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.5.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.5.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.5.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.6.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.6.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.6.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.6.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.7.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.7.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.7.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.8.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.8.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.8.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.8.5.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.8.6.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.8.7.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.9.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.9.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-2.9.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.0.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.0.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.0.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.0.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.0.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.0.5.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.0.6.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.0.7.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.1.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.1.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.1.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.1.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.10.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.10.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.2.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.2.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.2.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.2.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.2.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.2.5.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.3.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.3.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.3.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.4.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.4.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.4.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.5.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.5.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.6.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.6.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.6.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.6.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.6.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.7.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.7.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.7.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.7.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.7.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.8.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.8.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.8.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.9.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.9.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.9.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-3.9.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.0.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.0.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.0.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.1.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.1.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.2.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.2.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.3.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.3.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.4.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.4.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.4.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.5.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.6.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.6.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.6.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.6.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.6.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.6.5.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.6.6.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.6.7.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.6.8.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-4.6.9.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.0.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.0.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.1.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.1.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.1.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.1.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.2.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.2.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.2.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.2.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.2.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.3.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.3.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.3.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.3.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.3.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.3.5.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.4.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.4.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.4.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-5.4.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.0.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.0.0rc1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.0.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.0.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.1.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.1.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.1.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.2.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.2.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.2.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.2.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.2.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-6.2.5.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.0.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.0.0rc1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.0.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.1.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.1.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.1.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.1.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.2.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.2.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.2.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.3.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.3.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.3.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.4.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.4.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.4.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.4.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-7.4.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.0.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.0.0rc1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.0.0rc2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.0.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.0.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.1.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.1.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.1.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.2.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.2.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.2.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.3.0.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.3.1.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.3.2.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.3.3.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/release-8.3.4.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/announce/sprint2016.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/backwards-compatibility.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/conf.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/contents.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/contributing.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/deprecations.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/development_guide.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/assertion/failure_demo.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/assertion/global_testmodule_config/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/assertion/global_testmodule_config/test_hello_world.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/assertion/test_failures.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/assertion/test_setup_flow_example.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/attic.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/customdirectory/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/customdirectory/pytest.ini +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/customdirectory/tests/manifest.json +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/customdirectory/tests/test_first.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/customdirectory/tests/test_second.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/customdirectory/tests/test_third.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/customdirectory.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/fixture_availability.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/fixture_availability_plugins.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_autouse.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_autouse.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_autouse_flat.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_autouse_multiple_scopes.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_autouse_temp_effects.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_dependencies.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_dependencies.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_dependencies_flat.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_dependencies_unclear.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_scope.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_order_scope.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_request_different_scope.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/fixtures/test_fixtures_request_different_scope.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/index.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/markers.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/multipython.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/nonpython/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/nonpython/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/nonpython/test_simple.yaml +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/nonpython.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/pythoncollection.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/special.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/example/xfail_demo.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/explanation/anatomy.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/explanation/ci.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/explanation/fixtures.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/explanation/goodpractices.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/funcarg_compare.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/funcargs.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/historical-notes.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/history.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/assert.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/bash-completion.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/cache.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/capture-warnings.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/doctest.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/existingtestsuite.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/failures.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/index.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/logging.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/mark.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/monkeypatch.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/output.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/plugins.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/skipping.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/tmp_path.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/unittest.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/usage.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/writing_hook_functions.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/writing_plugins.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/how-to/xunit_setup.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/img/cramer2.png +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/img/favicon.png +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/img/freiburg2.jpg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/img/gaynor3.png +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/img/keleshev.png +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/img/pullrequest.png +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/img/pylib.png +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/img/pytest_logo_curves.svg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/img/theuni.png +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/license.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/naming20.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/proposals/parametrize_with_fixtures.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/pytest.ini +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/recwarn.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/reference/customize.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/reference/exit-codes.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/reference/fixtures.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/reference/index.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/reference/plugin_list.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/requirements.txt +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/sponsor.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/talks.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/tidelift.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/doc/en/yieldfixture.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/extra/get_issues.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/scripts/.gitignore +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/scripts/generate-gh-release-notes.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/scripts/prepare-release-pr.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/scripts/release.major.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/scripts/release.minor.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/scripts/release.pre.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/scripts/release.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/scripts/update-plugin-list.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/setup.cfg +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_argcomplete.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_code/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_code/code.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_code/source.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_io/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_io/pprint.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_io/saferepr.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_io/terminalwriter.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_io/wcwidth.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_py/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_py/error.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/_py/path.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/assertion/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/assertion/truncate.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/assertion/util.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/cacheprovider.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/compat.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/config/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/config/argparsing.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/config/compat.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/config/exceptions.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/config/findpaths.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/debugging.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/deprecated.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/doctest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/faulthandler.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/fixtures.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/freeze_support.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/helpconfig.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/junitxml.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/legacypath.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/logging.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/main.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/mark/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/mark/expression.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/mark/structures.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/monkeypatch.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/nodes.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/outcomes.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/pastebin.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/py.typed +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/pytester.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/pytester_assertions.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/python.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/python_api.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/python_path.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/recwarn.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/reports.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/runner.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/scope.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/setuponly.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/setupplan.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/skipping.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/stash.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/stepwise.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/terminal.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/threadexception.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/timing.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/tmpdir.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/unittest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/unraisableexception.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/warning_types.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/_pytest/warnings.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/py.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/pytest/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/pytest/__main__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/pytest/py.typed +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/pytest.egg-info/dependency_links.txt +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/pytest.egg-info/entry_points.txt +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/pytest.egg-info/requires.txt +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/src/pytest.egg-info/top_level.txt +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/_py/test_local.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/acceptance_test.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/code/test_code.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/code/test_excinfo.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/code/test_source.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/deprecated_test.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/README.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/acceptance/fixture_mock_integration.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/collect/collect_init_tests/pytest.ini +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/collect/collect_init_tests/tests/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/collect/collect_init_tests/tests/test_foo.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/collect/package_infinite_recursion/__init__.pyi +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/collect/package_infinite_recursion/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/collect/package_infinite_recursion/tests/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/collect/package_infinite_recursion/tests/test_basic.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/collect/package_init_given_as_arg/pkg/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/collect/package_init_given_as_arg/pkg/test_foo.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/config/collect_pytest_prefix/__init__.pyi +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/config/collect_pytest_prefix/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/config/collect_pytest_prefix/test_foo.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/conftest_usageerror/__init__.pyi +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/conftest_usageerror/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/customdirectory/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/customdirectory/pytest.ini +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/customdirectory/tests/manifest.json +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/customdirectory/tests/test_first.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/customdirectory/tests/test_second.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/customdirectory/tests/test_third.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/dataclasses/test_compare_dataclasses.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/dataclasses/test_compare_dataclasses_field_comparison_off.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/dataclasses/test_compare_dataclasses_verbose.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/dataclasses/test_compare_dataclasses_with_custom_eq.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/dataclasses/test_compare_initvar.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/dataclasses/test_compare_recursive_dataclasses.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/dataclasses/test_compare_two_different_dataclasses.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/doctest/main_py/__main__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/doctest/main_py/test_normal_module.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/custom_item/__init__.pyi +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/custom_item/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/custom_item/foo/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/custom_item/foo/test_foo.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub1/test_in_sub1.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_conftest_funcargs_only_available_in_subdir/sub2/test_in_sub2.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_detect_recursive_dependency_error.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/__init__.pyi +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/__init__.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_conftest/pkg/test_spam.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/__init__.pyi +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_conftest_module/test_extend_fixture_conftest_module.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_extend_fixture_module_class.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_basic.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_classlevel.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookup_modulelevel.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/fill_fixtures/test_funcarg_lookupfails.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/test_fixture_named_request.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/fixtures/test_getfixturevalue_dynamic.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/issue88_initial_file_multinodes/__init__.pyi +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/issue88_initial_file_multinodes/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/issue88_initial_file_multinodes/test_hello.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/issue_519.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/junit-10.xsd +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/marks/marks_considered_keywords/__init__.pyi +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/marks/marks_considered_keywords/conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/marks/marks_considered_keywords/test_marks_as_keywords.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/perf_examples/collect_stats/.gitignore +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/perf_examples/collect_stats/generate_folders.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/perf_examples/collect_stats/template_test.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/pytest.ini +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/tmpdir/tmp_path_fixture.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/unittest/test_parametrized_fixture_error_message.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/unittest/test_setup_skip.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/unittest/test_setup_skip_class.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/unittest/test_setup_skip_module.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/unittest/test_unittest_asyncio.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/unittest/test_unittest_asynctest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/unittest/test_unittest_plain_async.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/warnings/test_group_warnings_by_message.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_1.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/example_scripts/warnings/test_group_warnings_by_message_summary/test_2.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/examples/test_issue519.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/freeze/.gitignore +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/freeze/create_executable.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/freeze/runtests_script.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/freeze/tests/test_doctest.txt +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/freeze/tests/test_trivial.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/freeze/tox_run.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/io/test_pprint.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/io/test_saferepr.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/io/test_terminalwriter.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/io/test_wcwidth.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/logging/test_fixture.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/logging/test_formatter.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/logging/test_reporting.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/.gitignore +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/README.rst +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/bdd_wallet.feature +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/bdd_wallet.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/django_settings.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/pytest.ini +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/pytest_anyio_integration.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/pytest_asyncio_integration.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/pytest_mock_integration.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/pytest_rerunfailures_integration.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/pytest_trio_integration.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/pytest_twisted_integration.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/requirements.txt +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/plugins_integration/simple_integration.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/python/approx.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/python/collect.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/python/fixtures.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/python/integration.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/python/metafunc.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/python/raises.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/python/show_fixtures_per_test.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_argcomplete.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_assertion.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_assertrewrite.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_cacheprovider.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_collection.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_compat.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_config.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_conftest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_debugging.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_doctest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_entry_points.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_error_diffs.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_faulthandler.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_findpaths.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_helpconfig.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_junitxml.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_legacypath.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_link_resolve.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_main.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_mark.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_mark_expression.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_meta.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_monkeypatch.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_nodes.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_parseopt.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_pastebin.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_pluginmanager.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_pytester.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_python_path.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_recwarn.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_reports.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_runner.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_runner_xunit.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_scope.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_session.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_setuponly.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_setupplan.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_skipping.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_stash.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_stepwise.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_threadexception.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_tmpdir.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_unittest.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_unraisableexception.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_warning_types.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/test_warnings.py +0 -0
- {pytest-8.3.4 → pytest-8.3.5}/testing/typing_checks.py +0 -0
|
@@ -31,7 +31,7 @@ jobs:
|
|
|
31
31
|
persist-credentials: false
|
|
32
32
|
|
|
33
33
|
- name: Build and Check Package
|
|
34
|
-
uses: hynek/build-and-inspect-python-package@v2.
|
|
34
|
+
uses: hynek/build-and-inspect-python-package@v2.12.0
|
|
35
35
|
with:
|
|
36
36
|
attest-build-provenance-github: 'true'
|
|
37
37
|
|
|
@@ -46,6 +46,8 @@ jobs:
|
|
|
46
46
|
contents: write
|
|
47
47
|
steps:
|
|
48
48
|
- uses: actions/checkout@v4
|
|
49
|
+
with:
|
|
50
|
+
persist-credentials: true
|
|
49
51
|
|
|
50
52
|
- name: Download Package
|
|
51
53
|
uses: actions/download-artifact@v4
|
|
@@ -54,16 +56,18 @@ jobs:
|
|
|
54
56
|
path: dist
|
|
55
57
|
|
|
56
58
|
- name: Publish package to PyPI
|
|
57
|
-
uses: pypa/gh-action-pypi-publish@v1.12.
|
|
59
|
+
uses: pypa/gh-action-pypi-publish@v1.12.3
|
|
58
60
|
with:
|
|
59
61
|
attestations: true
|
|
60
62
|
|
|
61
63
|
- name: Push tag
|
|
64
|
+
env:
|
|
65
|
+
VERSION: ${{ github.event.inputs.version }}
|
|
62
66
|
run: |
|
|
63
67
|
git config user.name "pytest bot"
|
|
64
68
|
git config user.email "pytestbot@gmail.com"
|
|
65
|
-
git tag --annotate --message=v$
|
|
66
|
-
git push origin $
|
|
69
|
+
git tag --annotate --message=v"$VERSION" "$VERSION" ${{ github.sha }}
|
|
70
|
+
git push origin "$VERSION"
|
|
67
71
|
|
|
68
72
|
release-notes:
|
|
69
73
|
|
|
@@ -98,9 +102,11 @@ jobs:
|
|
|
98
102
|
pip install --upgrade tox
|
|
99
103
|
|
|
100
104
|
- name: Generate release notes
|
|
105
|
+
env:
|
|
106
|
+
VERSION: ${{ github.event.inputs.version }}
|
|
101
107
|
run: |
|
|
102
108
|
sudo apt-get install pandoc
|
|
103
|
-
tox -e generate-gh-release-notes -- $
|
|
109
|
+
tox -e generate-gh-release-notes -- "$VERSION" scripts/latest-release-notes.md
|
|
104
110
|
|
|
105
111
|
- name: Publish GitHub Release
|
|
106
112
|
uses: softprops/action-gh-release@v2
|
|
@@ -30,6 +30,7 @@ jobs:
|
|
|
30
30
|
- uses: actions/checkout@v4
|
|
31
31
|
with:
|
|
32
32
|
fetch-depth: 0
|
|
33
|
+
persist-credentials: false
|
|
33
34
|
|
|
34
35
|
- name: Set up Python
|
|
35
36
|
uses: actions/setup-python@v5
|
|
@@ -43,10 +44,16 @@ jobs:
|
|
|
43
44
|
|
|
44
45
|
- name: Prepare release PR (minor/patch release)
|
|
45
46
|
if: github.event.inputs.major == 'no'
|
|
47
|
+
env:
|
|
48
|
+
BRANCH: ${{ github.event.inputs.branch }}
|
|
49
|
+
PRERELEASE: ${{ github.event.inputs.prerelease }}
|
|
46
50
|
run: |
|
|
47
|
-
tox -e prepare-release-pr -- $
|
|
51
|
+
tox -e prepare-release-pr -- "$BRANCH" ${{ github.token }} --prerelease="$PRERELEASE"
|
|
48
52
|
|
|
49
53
|
- name: Prepare release PR (major release)
|
|
50
54
|
if: github.event.inputs.major == 'yes'
|
|
55
|
+
env:
|
|
56
|
+
BRANCH: ${{ github.event.inputs.branch }}
|
|
57
|
+
PRERELEASE: ${{ github.event.inputs.prerelease }}
|
|
51
58
|
run: |
|
|
52
|
-
tox -e prepare-release-pr -- $
|
|
59
|
+
tox -e prepare-release-pr -- "$BRANCH" ${{ github.token }} --major --prerelease="$PRERELEASE"
|
|
@@ -40,7 +40,7 @@ jobs:
|
|
|
40
40
|
fetch-depth: 0
|
|
41
41
|
persist-credentials: false
|
|
42
42
|
- name: Build and Check Package
|
|
43
|
-
uses: hynek/build-and-inspect-python-package@v2.
|
|
43
|
+
uses: hynek/build-and-inspect-python-package@v2.12.0
|
|
44
44
|
|
|
45
45
|
build:
|
|
46
46
|
needs: [package]
|
|
@@ -55,7 +55,7 @@ jobs:
|
|
|
55
55
|
matrix:
|
|
56
56
|
name: [
|
|
57
57
|
"windows-py38",
|
|
58
|
-
"windows-
|
|
58
|
+
"windows-py39-pluggy",
|
|
59
59
|
"windows-py39",
|
|
60
60
|
"windows-py310",
|
|
61
61
|
"windows-py311",
|
|
@@ -63,7 +63,7 @@ jobs:
|
|
|
63
63
|
"windows-py313",
|
|
64
64
|
|
|
65
65
|
"ubuntu-py38",
|
|
66
|
-
"ubuntu-
|
|
66
|
+
"ubuntu-py39-pluggy",
|
|
67
67
|
"ubuntu-py38-freeze",
|
|
68
68
|
"ubuntu-py39",
|
|
69
69
|
"ubuntu-py310",
|
|
@@ -88,10 +88,10 @@ jobs:
|
|
|
88
88
|
os: windows-latest
|
|
89
89
|
tox_env: "py38-unittestextras"
|
|
90
90
|
use_coverage: true
|
|
91
|
-
- name: "windows-
|
|
92
|
-
python: "3.
|
|
91
|
+
- name: "windows-py39-pluggy"
|
|
92
|
+
python: "3.9"
|
|
93
93
|
os: windows-latest
|
|
94
|
-
tox_env: "
|
|
94
|
+
tox_env: "py39-pluggymain-pylib-xdist"
|
|
95
95
|
- name: "windows-py39"
|
|
96
96
|
python: "3.9"
|
|
97
97
|
os: windows-latest
|
|
@@ -118,10 +118,10 @@ jobs:
|
|
|
118
118
|
os: ubuntu-latest
|
|
119
119
|
tox_env: "py38-lsof-numpy-pexpect"
|
|
120
120
|
use_coverage: true
|
|
121
|
-
- name: "ubuntu-
|
|
122
|
-
python: "3.
|
|
121
|
+
- name: "ubuntu-py39-pluggy"
|
|
122
|
+
python: "3.9"
|
|
123
123
|
os: ubuntu-latest
|
|
124
|
-
tox_env: "
|
|
124
|
+
tox_env: "py39-pluggymain-pylib-xdist"
|
|
125
125
|
- name: "ubuntu-py38-freeze"
|
|
126
126
|
python: "3.8"
|
|
127
127
|
os: ubuntu-latest
|
|
@@ -192,9 +192,9 @@ jobs:
|
|
|
192
192
|
contains(
|
|
193
193
|
fromJSON(
|
|
194
194
|
'[
|
|
195
|
-
"windows-
|
|
195
|
+
"windows-py39-pluggy",
|
|
196
196
|
"windows-py313",
|
|
197
|
-
"ubuntu-
|
|
197
|
+
"ubuntu-py39-pluggy",
|
|
198
198
|
"ubuntu-py38-freeze",
|
|
199
199
|
"ubuntu-py313",
|
|
200
200
|
"macos-py38",
|
|
@@ -23,12 +23,14 @@ jobs:
|
|
|
23
23
|
uses: actions/checkout@v4
|
|
24
24
|
with:
|
|
25
25
|
fetch-depth: 0
|
|
26
|
+
persist-credentials: false
|
|
26
27
|
|
|
27
28
|
- name: Setup Python
|
|
28
29
|
uses: actions/setup-python@v5
|
|
29
30
|
with:
|
|
30
31
|
python-version: "3.11"
|
|
31
32
|
cache: pip
|
|
33
|
+
|
|
32
34
|
- name: requests-cache
|
|
33
35
|
uses: actions/cache@v4
|
|
34
36
|
with:
|
|
@@ -41,7 +43,6 @@ jobs:
|
|
|
41
43
|
python -m pip install --upgrade pip
|
|
42
44
|
pip install packaging requests tabulate[widechars] tqdm requests-cache platformdirs
|
|
43
45
|
|
|
44
|
-
|
|
45
46
|
- name: Update Plugin List
|
|
46
47
|
run: python scripts/update-plugin-list.py
|
|
47
48
|
|
|
@@ -61,8 +62,9 @@ jobs:
|
|
|
61
62
|
- name: Instruct the maintainers to trigger CI by undrafting the PR
|
|
62
63
|
env:
|
|
63
64
|
GITHUB_TOKEN: ${{ github.token }}
|
|
65
|
+
PULL_REQUEST_NUMBER: ${{ steps.pr.outputs.pull-request-number }}
|
|
64
66
|
run: >-
|
|
65
67
|
gh pr comment
|
|
66
68
|
--body 'Please mark the PR as ready for review to trigger PR checks.'
|
|
67
69
|
--repo '${{ github.repository }}'
|
|
68
|
-
|
|
70
|
+
"$PULL_REQUEST_NUMBER"
|
|
@@ -11,6 +11,10 @@ repos:
|
|
|
11
11
|
- id: trailing-whitespace
|
|
12
12
|
- id: end-of-file-fixer
|
|
13
13
|
- id: check-yaml
|
|
14
|
+
- repo: https://github.com/woodruffw/zizmor-pre-commit
|
|
15
|
+
rev: v0.9.2
|
|
16
|
+
hooks:
|
|
17
|
+
- id: zizmor
|
|
14
18
|
- repo: https://github.com/adamchainz/blacken-docs
|
|
15
19
|
rev: 1.18.0
|
|
16
20
|
hooks:
|
|
@@ -255,6 +255,7 @@ lovetheguitar
|
|
|
255
255
|
Lukas Bednar
|
|
256
256
|
Luke Murphy
|
|
257
257
|
Maciek Fijalkowski
|
|
258
|
+
Maggie Chung
|
|
258
259
|
Maho
|
|
259
260
|
Maik Figura
|
|
260
261
|
Mandeep Bhutani
|
|
@@ -353,6 +354,7 @@ Ran Benita
|
|
|
353
354
|
Raphael Castaneda
|
|
354
355
|
Raphael Pierzina
|
|
355
356
|
Rafal Semik
|
|
357
|
+
Reza Mousavi
|
|
356
358
|
Raquel Alegre
|
|
357
359
|
Ravi Chandra
|
|
358
360
|
Reagan Lee
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: pytest
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.5
|
|
4
4
|
Summary: pytest: simple powerful testing with Python
|
|
5
5
|
Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin, Others (See AUTHORS)
|
|
6
6
|
License: MIT
|
|
7
7
|
Project-URL: Changelog, https://docs.pytest.org/en/stable/changelog.html
|
|
8
|
+
Project-URL: Contact, https://docs.pytest.org/en/stable/contact.html
|
|
9
|
+
Project-URL: Funding, https://docs.pytest.org/en/stable/sponsor.html
|
|
8
10
|
Project-URL: Homepage, https://docs.pytest.org/en/latest/
|
|
9
11
|
Project-URL: Source, https://github.com/pytest-dev/pytest
|
|
10
12
|
Project-URL: Tracker, https://github.com/pytest-dev/pytest/issues
|
|
11
|
-
Project-URL: Twitter, https://twitter.com/pytestdotorg
|
|
12
13
|
Keywords: test,unittest
|
|
13
14
|
Classifier: Development Status :: 6 - Mature
|
|
14
15
|
Classifier: Intended Audience :: Developers
|
|
@@ -170,4 +170,8 @@ Both automatic and manual processes described above follow the same steps from t
|
|
|
170
170
|
* python-announce-list@python.org (all releases)
|
|
171
171
|
* testing-in-python@lists.idyll.org (only major/minor releases)
|
|
172
172
|
|
|
173
|
-
And announce it
|
|
173
|
+
And announce it with the ``#pytest`` hashtag on:
|
|
174
|
+
|
|
175
|
+
* `Bluesky <https://bsky.app>`_
|
|
176
|
+
* `Fosstodon <https://fosstodon.org>`_
|
|
177
|
+
* `Twitter/X <https://x.com>`_
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
pytest-8.3.5
|
|
2
|
+
=======================================
|
|
3
|
+
|
|
4
|
+
pytest 8.3.5 has just been released to PyPI.
|
|
5
|
+
|
|
6
|
+
This is a bug-fix release, being a drop-in replacement.
|
|
7
|
+
|
|
8
|
+
The full changelog is available at https://docs.pytest.org/en/stable/changelog.html.
|
|
9
|
+
|
|
10
|
+
Thanks to all of the contributors to this release:
|
|
11
|
+
|
|
12
|
+
* Bruno Oliveira
|
|
13
|
+
* Florian Bruhin
|
|
14
|
+
* John Litborn
|
|
15
|
+
* Kenny Y
|
|
16
|
+
* Ran Benita
|
|
17
|
+
* Sadra Barikbin
|
|
18
|
+
* Vincent (Wen Yu) Ge
|
|
19
|
+
* delta87
|
|
20
|
+
* dongfangtianyu
|
|
21
|
+
* mwychung
|
|
22
|
+
* 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
Happy testing,
|
|
26
|
+
The pytest Development Team
|
|
@@ -1,6 +1,2 @@
|
|
|
1
1
|
# This file contains transitive dependencies that need to be pinned for some reason.
|
|
2
2
|
# Eventually this file will be empty, but in this case keep it around for future use.
|
|
3
|
-
|
|
4
|
-
# Pin towncrier temporarily due to incompatibility with sphinxcontrib-towncrier:
|
|
5
|
-
# https://github.com/sphinx-contrib/sphinxcontrib-towncrier/issues/92
|
|
6
|
-
towncrier<24.7
|
|
@@ -33,7 +33,7 @@ For information about fixtures, see :ref:`fixtures`. To see a complete list of a
|
|
|
33
33
|
|
|
34
34
|
Values can be any object handled by the json stdlib module.
|
|
35
35
|
|
|
36
|
-
capsysbinary -- .../_pytest/capture.py:
|
|
36
|
+
capsysbinary -- .../_pytest/capture.py:1024
|
|
37
37
|
Enable bytes capturing of writes to ``sys.stdout`` and ``sys.stderr``.
|
|
38
38
|
|
|
39
39
|
The captured output is made available via ``capsysbinary.readouterr()``
|
|
@@ -51,7 +51,7 @@ For information about fixtures, see :ref:`fixtures`. To see a complete list of a
|
|
|
51
51
|
captured = capsysbinary.readouterr()
|
|
52
52
|
assert captured.out == b"hello\n"
|
|
53
53
|
|
|
54
|
-
capfd -- .../_pytest/capture.py:
|
|
54
|
+
capfd -- .../_pytest/capture.py:1052
|
|
55
55
|
Enable text capturing of writes to file descriptors ``1`` and ``2``.
|
|
56
56
|
|
|
57
57
|
The captured output is made available via ``capfd.readouterr()`` method
|
|
@@ -69,7 +69,7 @@ For information about fixtures, see :ref:`fixtures`. To see a complete list of a
|
|
|
69
69
|
captured = capfd.readouterr()
|
|
70
70
|
assert captured.out == "hello\n"
|
|
71
71
|
|
|
72
|
-
capfdbinary -- .../_pytest/capture.py:
|
|
72
|
+
capfdbinary -- .../_pytest/capture.py:1080
|
|
73
73
|
Enable bytes capturing of writes to file descriptors ``1`` and ``2``.
|
|
74
74
|
|
|
75
75
|
The captured output is made available via ``capfd.readouterr()`` method
|
|
@@ -87,7 +87,7 @@ For information about fixtures, see :ref:`fixtures`. To see a complete list of a
|
|
|
87
87
|
captured = capfdbinary.readouterr()
|
|
88
88
|
assert captured.out == b"hello\n"
|
|
89
89
|
|
|
90
|
-
capsys -- .../_pytest/capture.py:
|
|
90
|
+
capsys -- .../_pytest/capture.py:996
|
|
91
91
|
Enable text capturing of writes to ``sys.stdout`` and ``sys.stderr``.
|
|
92
92
|
|
|
93
93
|
The captured output is made available via ``capsys.readouterr()`` method
|
|
@@ -31,6 +31,47 @@ with advance notice in the **Deprecations** section of releases.
|
|
|
31
31
|
|
|
32
32
|
.. towncrier release notes start
|
|
33
33
|
|
|
34
|
+
pytest 8.3.5 (2025-03-02)
|
|
35
|
+
=========================
|
|
36
|
+
|
|
37
|
+
Bug fixes
|
|
38
|
+
---------
|
|
39
|
+
|
|
40
|
+
- `#11777 <https://github.com/pytest-dev/pytest/issues/11777>`_: Fixed issue where sequences were still being shortened even with ``-vv`` verbosity.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
- `#12888 <https://github.com/pytest-dev/pytest/issues/12888>`_: Fixed broken input when using Python 3.13+ and a ``libedit`` build of Python, such as on macOS or with uv-managed Python binaries from the ``python-build-standalone`` project. This could manifest e.g. by a broken prompt when using ``Pdb``, or seeing empty inputs with manual usage of ``input()`` and suspended capturing.
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
- `#13026 <https://github.com/pytest-dev/pytest/issues/13026>`_: Fixed :class:`AttributeError` crash when using ``--import-mode=importlib`` when top-level directory same name as another module of the standard library.
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
- `#13053 <https://github.com/pytest-dev/pytest/issues/13053>`_: Fixed a regression in pytest 8.3.4 where, when using ``--import-mode=importlib``, a directory containing py file with the same name would cause an ``ImportError``
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
- `#13083 <https://github.com/pytest-dev/pytest/issues/13083>`_: Fixed issue where pytest could crash if one of the collected directories got removed during collection.
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
Improved documentation
|
|
57
|
+
----------------------
|
|
58
|
+
|
|
59
|
+
- `#12842 <https://github.com/pytest-dev/pytest/issues/12842>`_: Added dedicated page about using types with pytest.
|
|
60
|
+
|
|
61
|
+
See :ref:`types` for detailed usage.
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
Contributor-facing changes
|
|
66
|
+
--------------------------
|
|
67
|
+
|
|
68
|
+
- `#13112 <https://github.com/pytest-dev/pytest/issues/13112>`_: Fixed selftest failures in ``test_terminal.py`` with Pygments >= 2.19.0
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
- `#13256 <https://github.com/pytest-dev/pytest/issues/13256>`_: Support for Towncier versions released in 2024 has been re-enabled
|
|
72
|
+
when building Sphinx docs -- by :user:`webknjaz`.
|
|
73
|
+
|
|
74
|
+
|
|
34
75
|
pytest 8.3.4 (2024-12-01)
|
|
35
76
|
=========================
|
|
36
77
|
|
|
@@ -24,6 +24,13 @@ Chat
|
|
|
24
24
|
<https://web.libera.chat/#pytest>`_)
|
|
25
25
|
- ``#pytest`` `on Matrix <https://matrix.to/#/#pytest:matrix.org>`_.
|
|
26
26
|
|
|
27
|
+
Microblogging
|
|
28
|
+
-------------
|
|
29
|
+
|
|
30
|
+
- Bluesky: `@pytest.org <https://bsky.app/profile/pytest.org>`_
|
|
31
|
+
- Mastodon: `@pytest@fosstodon.org <https://fosstodon.org/@pytest>`_
|
|
32
|
+
- Twitter/X: `@pytestdotorg <https://x.com/pytestdotorg>`_
|
|
33
|
+
|
|
27
34
|
Mail
|
|
28
35
|
----
|
|
29
36
|
|
|
@@ -162,7 +162,7 @@ objects, they are still using the default pytest representation:
|
|
|
162
162
|
rootdir: /home/sweet/project
|
|
163
163
|
collected 8 items
|
|
164
164
|
|
|
165
|
-
<Dir parametrize.rst-
|
|
165
|
+
<Dir parametrize.rst-206>
|
|
166
166
|
<Module test_time.py>
|
|
167
167
|
<Function test_timedistance_v0[a0-b0-expected0]>
|
|
168
168
|
<Function test_timedistance_v0[a1-b1-expected1]>
|
|
@@ -239,7 +239,7 @@ If you just collect tests you'll also nicely see 'advanced' and 'basic' as varia
|
|
|
239
239
|
rootdir: /home/sweet/project
|
|
240
240
|
collected 4 items
|
|
241
241
|
|
|
242
|
-
<Dir parametrize.rst-
|
|
242
|
+
<Dir parametrize.rst-206>
|
|
243
243
|
<Module test_scenarios.py>
|
|
244
244
|
<Class TestSampleWithScenarios>
|
|
245
245
|
<Function test_demo1[basic]>
|
|
@@ -318,7 +318,7 @@ Let's first see how it looks like at collection time:
|
|
|
318
318
|
rootdir: /home/sweet/project
|
|
319
319
|
collected 2 items
|
|
320
320
|
|
|
321
|
-
<Dir parametrize.rst-
|
|
321
|
+
<Dir parametrize.rst-206>
|
|
322
322
|
<Module test_backends.py>
|
|
323
323
|
<Function test_db_initialized[d1]>
|
|
324
324
|
<Function test_db_initialized[d2]>
|
|
@@ -503,11 +503,12 @@ Running it results in some skips if we don't have all the python interpreters in
|
|
|
503
503
|
.. code-block:: pytest
|
|
504
504
|
|
|
505
505
|
. $ pytest -rs -q multipython.py
|
|
506
|
-
|
|
506
|
+
sssssssssssssssssssssssssss [100%]
|
|
507
507
|
========================= short test summary info ==========================
|
|
508
|
-
SKIPPED [
|
|
509
|
-
SKIPPED [
|
|
510
|
-
|
|
508
|
+
SKIPPED [9] multipython.py:67: 'python3.9' not found
|
|
509
|
+
SKIPPED [9] multipython.py:67: 'python3.10' not found
|
|
510
|
+
SKIPPED [9] multipython.py:67: 'python3.11' not found
|
|
511
|
+
27 skipped in 0.12s
|
|
511
512
|
|
|
512
513
|
Parametrization of optional implementations/imports
|
|
513
514
|
---------------------------------------------------
|
|
@@ -152,7 +152,7 @@ The test collection would look like this:
|
|
|
152
152
|
configfile: pytest.ini
|
|
153
153
|
collected 2 items
|
|
154
154
|
|
|
155
|
-
<Dir pythoncollection.rst-
|
|
155
|
+
<Dir pythoncollection.rst-207>
|
|
156
156
|
<Module check_myapp.py>
|
|
157
157
|
<Class CheckMyApp>
|
|
158
158
|
<Function simple_check>
|
|
@@ -215,7 +215,7 @@ You can always peek at the collection tree without running tests like this:
|
|
|
215
215
|
configfile: pytest.ini
|
|
216
216
|
collected 3 items
|
|
217
217
|
|
|
218
|
-
<Dir pythoncollection.rst-
|
|
218
|
+
<Dir pythoncollection.rst-207>
|
|
219
219
|
<Dir CWD>
|
|
220
220
|
<Module pythoncollection.py>
|
|
221
221
|
<Function test_function>
|
|
@@ -568,12 +568,12 @@ Here is a nice run of several failures and how ``pytest`` presents things:
|
|
|
568
568
|
E + where False = <built-in method startswith of str object at 0xdeadbeef0027>('456')
|
|
569
569
|
E + where <built-in method startswith of str object at 0xdeadbeef0027> = '123'.startswith
|
|
570
570
|
E + where '123' = <function TestMoreErrors.test_startswith_nested.<locals>.f at 0xdeadbeef0029>()
|
|
571
|
-
E + and '456' = <function TestMoreErrors.test_startswith_nested.<locals>.g at
|
|
571
|
+
E + and '456' = <function TestMoreErrors.test_startswith_nested.<locals>.g at 0xdeadbeef0003>()
|
|
572
572
|
|
|
573
573
|
failure_demo.py:237: AssertionError
|
|
574
574
|
_____________________ TestMoreErrors.test_global_func ______________________
|
|
575
575
|
|
|
576
|
-
self = <failure_demo.TestMoreErrors object at
|
|
576
|
+
self = <failure_demo.TestMoreErrors object at 0xdeadbeef002a>
|
|
577
577
|
|
|
578
578
|
def test_global_func(self):
|
|
579
579
|
> assert isinstance(globf(42), float)
|
|
@@ -584,18 +584,18 @@ Here is a nice run of several failures and how ``pytest`` presents things:
|
|
|
584
584
|
failure_demo.py:240: AssertionError
|
|
585
585
|
_______________________ TestMoreErrors.test_instance _______________________
|
|
586
586
|
|
|
587
|
-
self = <failure_demo.TestMoreErrors object at
|
|
587
|
+
self = <failure_demo.TestMoreErrors object at 0xdeadbeef002b>
|
|
588
588
|
|
|
589
589
|
def test_instance(self):
|
|
590
590
|
self.x = 6 * 7
|
|
591
591
|
> assert self.x != 42
|
|
592
592
|
E assert 42 != 42
|
|
593
|
-
E + where 42 = <failure_demo.TestMoreErrors object at
|
|
593
|
+
E + where 42 = <failure_demo.TestMoreErrors object at 0xdeadbeef002b>.x
|
|
594
594
|
|
|
595
595
|
failure_demo.py:244: AssertionError
|
|
596
596
|
_______________________ TestMoreErrors.test_compare ________________________
|
|
597
597
|
|
|
598
|
-
self = <failure_demo.TestMoreErrors object at
|
|
598
|
+
self = <failure_demo.TestMoreErrors object at 0xdeadbeef002c>
|
|
599
599
|
|
|
600
600
|
def test_compare(self):
|
|
601
601
|
> assert globf(10) < 5
|
|
@@ -605,7 +605,7 @@ Here is a nice run of several failures and how ``pytest`` presents things:
|
|
|
605
605
|
failure_demo.py:247: AssertionError
|
|
606
606
|
_____________________ TestMoreErrors.test_try_finally ______________________
|
|
607
607
|
|
|
608
|
-
self = <failure_demo.TestMoreErrors object at
|
|
608
|
+
self = <failure_demo.TestMoreErrors object at 0xdeadbeef002d>
|
|
609
609
|
|
|
610
610
|
def test_try_finally(self):
|
|
611
611
|
x = 1
|
|
@@ -616,7 +616,7 @@ Here is a nice run of several failures and how ``pytest`` presents things:
|
|
|
616
616
|
failure_demo.py:252: AssertionError
|
|
617
617
|
___________________ TestCustomAssertMsg.test_single_line ___________________
|
|
618
618
|
|
|
619
|
-
self = <failure_demo.TestCustomAssertMsg object at
|
|
619
|
+
self = <failure_demo.TestCustomAssertMsg object at 0xdeadbeef002e>
|
|
620
620
|
|
|
621
621
|
def test_single_line(self):
|
|
622
622
|
class A:
|
|
@@ -631,7 +631,7 @@ Here is a nice run of several failures and how ``pytest`` presents things:
|
|
|
631
631
|
failure_demo.py:263: AssertionError
|
|
632
632
|
____________________ TestCustomAssertMsg.test_multiline ____________________
|
|
633
633
|
|
|
634
|
-
self = <failure_demo.TestCustomAssertMsg object at
|
|
634
|
+
self = <failure_demo.TestCustomAssertMsg object at 0xdeadbeef002f>
|
|
635
635
|
|
|
636
636
|
def test_multiline(self):
|
|
637
637
|
class A:
|
|
@@ -650,7 +650,7 @@ Here is a nice run of several failures and how ``pytest`` presents things:
|
|
|
650
650
|
failure_demo.py:270: AssertionError
|
|
651
651
|
___________________ TestCustomAssertMsg.test_custom_repr ___________________
|
|
652
652
|
|
|
653
|
-
self = <failure_demo.TestCustomAssertMsg object at
|
|
653
|
+
self = <failure_demo.TestCustomAssertMsg object at 0xdeadbeef0030>
|
|
654
654
|
|
|
655
655
|
def test_custom_repr(self):
|
|
656
656
|
class JSON:
|
|
@@ -164,7 +164,7 @@ Now we'll get feedback on a bad argument:
|
|
|
164
164
|
|
|
165
165
|
$ pytest -q --cmdopt=type3
|
|
166
166
|
ERROR: usage: pytest [options] [file_or_dir] [file_or_dir] [...]
|
|
167
|
-
pytest: error: argument --cmdopt: invalid choice: 'type3' (choose from
|
|
167
|
+
pytest: error: argument --cmdopt: invalid choice: 'type3' (choose from type1, type2)
|
|
168
168
|
|
|
169
169
|
|
|
170
170
|
If you need to provide more detailed error messages, you can use the
|
|
@@ -117,8 +117,11 @@ This is a limited list, please submit an issue or pull request to expand it!
|
|
|
117
117
|
|
|
118
118
|
* Gao, Zebao, Yalan Liang, Myra B. Cohen, Atif M. Memon, and Zhen Wang. "Making system user interactive tests repeatable: When and what should we control?." In *Software Engineering (ICSE), 2015 IEEE/ACM 37th IEEE International Conference on*, vol. 1, pp. 55-65. IEEE, 2015. `PDF <http://www.cs.umd.edu/~atif/pubs/gao-icse15.pdf>`__
|
|
119
119
|
* Palomba, Fabio, and Andy Zaidman. "Does refactoring of test smells induce fixing flaky tests?." In *Software Maintenance and Evolution (ICSME), 2017 IEEE International Conference on*, pp. 1-12. IEEE, 2017. `PDF in Google Drive <https://drive.google.com/file/d/10HdcCQiuQVgW3yYUJD-TSTq1NbYEprl0/view>`__
|
|
120
|
-
*
|
|
121
|
-
*
|
|
120
|
+
* Bell, Jonathan, Owolabi Legunsen, Michael Hilton, Lamyaa Eloussi, Tifany Yung, and Darko Marinov. "DeFlaker: Automatically detecting flaky tests." In *Proceedings of the 2018 International Conference on Software Engineering*. 2018. `PDF <https://www.jonbell.net/icse18-deflaker.pdf#section-Research>`__
|
|
121
|
+
* Dutta, Saikat and Shi, August and Choudhary, Rutvik and Zhang, Zhekun and Jain, Aryaman and Misailovic, Sasa. "Detecting flaky tests in probabilistic and machine learning applications." In *Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA)*, pp. 211-224. ACM, 2020. `PDF <https://www.cs.cornell.edu/~saikatd/papers/flash-issta20.pdf>`__
|
|
122
|
+
* Habchi, Sarra and Haben, Guillaume and Sohn, Jeongju and Franci, Adriano and Papadakis, Mike and Cordy, Maxime and Le Traon, Yves. "What Made This Test Flake? Pinpointing Classes Responsible for Test Flakiness." In Proceedings of the 38th IEEE International Conference on Software Maintenance and Evolution (ICSME), IEEE, 2022. `PDF <https://arxiv.org/abs/2207.10143>`__
|
|
123
|
+
* Lamprou, Sokrates. "Non-deterministic tests and where to find them: Empirically investigating the relationship between flaky tests and test smells by examining test order dependency." Bachelor thesis, Department of Computer and Information Science, Linköping University, 2022. LIU-IDA/LITH-EX-G–19/056–SE. `PDF <https://www.diva-portal.org/smash/get/diva2:1713691/FULLTEXT01.pdf>`__
|
|
124
|
+
* Leinen, Fabian and Elsner, Daniel and Pretschner, Alexander and Stahlbauer, Andreas and Sailer, Michael and Jürgens, Elmar. "Cost of Flaky Tests in Continuous Integration: An Industrial Case Study." Technical University of Munich and CQSE GmbH, Munich, Germany, 2023. `PDF <https://mediatum.ub.tum.de/doc/1730194/1730194.pdf>`__
|
|
122
125
|
|
|
123
126
|
Resources
|
|
124
127
|
^^^^^^^^^
|
|
@@ -137,5 +140,12 @@ Resources
|
|
|
137
140
|
* `Flaky Tests at Google and How We Mitigate Them <https://testing.googleblog.com/2016/05/flaky-tests-at-google-and-how-we.html>`_ by John Micco, 2016
|
|
138
141
|
* `Where do Google's flaky tests come from? <https://testing.googleblog.com/2017/04/where-do-our-flaky-tests-come-from.html>`_ by Jeff Listfield, 2017
|
|
139
142
|
|
|
143
|
+
* Dropbox:
|
|
144
|
+
* `Athena: Our automated build health management system <https://dropbox.tech/infrastructure/athena-our-automated-build-health-management-system>`_ by Utsav Shah, 2019
|
|
145
|
+
* `How To Manage Flaky Tests in your CI Workflows <https://mill-build.org/blog/4-flaky-tests.html>`_ by Li Haoyi, 2025
|
|
146
|
+
|
|
147
|
+
* Uber:
|
|
148
|
+
* `Handling Flaky Unit Tests in Java <https://www.uber.com/blog/handling-flaky-tests-java/>`_ by Uber Engineering, 2021
|
|
149
|
+
* `Flaky Tests Overhaul at Uber <https://www.uber.com/blog/flaky-tests-overhaul/>`_ by Uber Engineering, 2024
|
|
140
150
|
|
|
141
151
|
.. _pytest-xdist: https://github.com/pytest-dev/pytest-xdist
|
|
@@ -8,7 +8,7 @@ pytest import mechanisms and ``sys.path``/``PYTHONPATH``
|
|
|
8
8
|
Import modes
|
|
9
9
|
------------
|
|
10
10
|
|
|
11
|
-
pytest as a testing framework
|
|
11
|
+
pytest as a testing framework needs to import test modules and ``conftest.py`` files for execution.
|
|
12
12
|
|
|
13
13
|
Importing files in Python is a non-trivial process, so aspects of the
|
|
14
14
|
import process can be controlled through the ``--import-mode`` command-line flag, which can assume
|
|
@@ -78,7 +78,7 @@ these values:
|
|
|
78
78
|
|
|
79
79
|
For non-test modules, this will work if they are accessible via :py:data:`sys.path`. So
|
|
80
80
|
for example, ``.env/lib/site-packages/app/core.py`` will be importable as ``app.core``.
|
|
81
|
-
This
|
|
81
|
+
This happens when plugins import non-test modules (for example doctesting).
|
|
82
82
|
|
|
83
83
|
If this step succeeds, the module is returned.
|
|
84
84
|
|