diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0d944e6..7c33570 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,7 +40,10 @@ jobs: python: "3.8" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 + with: + # Needed to fetch tags, which are required by setuptools-scm. + fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v2 with: @@ -62,7 +65,10 @@ jobs: needs: build steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 + with: + # Needed to fetch tags, which are required by setuptools-scm. + fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v2 with: diff --git a/CHANGELOG.rst b/CHANGELOG.rst index c2d680a..9357cce 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,3 +1,81 @@ +pytest-xdist 3.0.2 (2022-10-25) +=============================== + +Bug Fixes +--------- + +- `#813 `_: Cancel shutdown when a crashed worker is restarted. + + +Deprecations +------------ + +- `#825 `_: The ``--rsyncdir`` command line argument and ``rsyncdirs`` config variable are deprecated. + + The rsync feature will be removed in pytest-xdist 4.0. + +- `#826 `_: The ``--looponfail`` command line argument and ``looponfailroots`` config variable are deprecated. + + The loop-on-fail feature will be removed in pytest-xdist 4.0. + + +Improved Documentation +---------------------- + +- `#791 `_: Document the ``pytest_xdist_auto_num_workers`` hook. + +- `#796 `_: Added known limitations section to documentation. + +- `#829 `_: Document the ``-n logical`` option. + + +Features +-------- + +- `#792 `_: The environment variable ``PYTEST_XDIST_AUTO_NUM_WORKERS`` can now be used to + specify the default for ``-n auto`` and ``-n logical``. + +- `#812 `_: Partially restore old initial batch distribution algorithm in ``LoadScheduling``. + + pytest orders tests for optimal sequential execution - i. e. avoiding + unnecessary setup and teardown of fixtures. So executing tests in consecutive + chunks is important for optimal performance. + + In v1.14, initial test distribution in ``LoadScheduling`` was changed to + round-robin, optimized for the corner case, when the number of tests is less + than ``2 * number of nodes``. At the same time, it became worse for all other + cases. + + For example: if some tests use some "heavy" fixture, and these tests fit into + the initial batch, with round-robin distribution the fixture will be created + ``min(n_tests, n_workers)`` times, no matter how many other tests there are. + + With the old algorithm (before v1.14), if there are enough tests not using + the fixture, the fixture was created only once. + + So restore the old behavior for typical cases where the number of tests is + much greater than the number of workers (or, strictly speaking, when there + are at least 2 tests for every node). + + +Removals +-------- + +- `#468 `_: The ``--boxed`` command-line option has been removed. If you still need this functionality, install `pytest-forked `__ separately. + + +Trivial Changes +--------------- + +- `#468 `_: The ``py`` dependency has been dropped. + +- `#822 `_: Replace internal usage of ``py.log`` with a custom solution (but with the same interface). + +- `#823 `_: Remove usage of ``py._pydir`` as an rsync candidate. + +- `#824 `_: Replace internal usages of ``py.path.local`` by ``pathlib.Path``. + + pytest-xdist 2.5.0 (2021-12-10) =============================== diff --git a/changelog/468.removal.rst b/changelog/468.removal.rst deleted file mode 100644 index c4bdfc2..0000000 --- a/changelog/468.removal.rst +++ /dev/null @@ -1 +0,0 @@ -The ``--boxed`` command-line option has been removed. If you still need this functionality, install `pytest-forked `__ separately. diff --git a/changelog/468.trivial.rst b/changelog/468.trivial.rst deleted file mode 100644 index 5104593..0000000 --- a/changelog/468.trivial.rst +++ /dev/null @@ -1 +0,0 @@ -The ``py`` dependency has been dropped. diff --git a/changelog/791.doc b/changelog/791.doc deleted file mode 100644 index adc3e65..0000000 --- a/changelog/791.doc +++ /dev/null @@ -1 +0,0 @@ -Document the ``pytest_xdist_auto_num_workers`` hook. diff --git a/changelog/792.feature b/changelog/792.feature deleted file mode 100644 index a971233..0000000 --- a/changelog/792.feature +++ /dev/null @@ -1,2 +0,0 @@ -The environment variable ``PYTEST_XDIST_AUTO_NUM_WORKERS`` can now be used to -specify the default for ``-n auto`` and ``-n logical``. diff --git a/changelog/796.doc.rst b/changelog/796.doc.rst deleted file mode 100644 index 28a10bc..0000000 --- a/changelog/796.doc.rst +++ /dev/null @@ -1 +0,0 @@ -Added known limitations section to documentation. diff --git a/changelog/812.feature b/changelog/812.feature deleted file mode 100644 index 3eca0b3..0000000 --- a/changelog/812.feature +++ /dev/null @@ -1,21 +0,0 @@ -Partially restore old initial batch distribution algorithm in ``LoadScheduling``. - -pytest orders tests for optimal sequential execution - i. e. avoiding -unnecessary setup and teardown of fixtures. So executing tests in consecutive -chunks is important for optimal performance. - -In v1.14, initial test distribution in ``LoadScheduling`` was changed to -round-robin, optimized for the corner case, when the number of tests is less -than ``2 * number of nodes``. At the same time, it became worse for all other -cases. - -For example: if some tests use some "heavy" fixture, and these tests fit into -the initial batch, with round-robin distribution the fixture will be created -``min(n_tests, n_workers)`` times, no matter how many other tests there are. - -With the old algorithm (before v1.14), if there are enough tests not using -the fixture, the fixture was created only once. - -So restore the old behavior for typical cases where the number of tests is -much greater than the number of workers (or, strictly speaking, when there -are at least 2 tests for every node). diff --git a/changelog/813.bugfix b/changelog/813.bugfix deleted file mode 100644 index 251cf4b..0000000 --- a/changelog/813.bugfix +++ /dev/null @@ -1 +0,0 @@ -Cancel shutdown when a crashed worker is restarted. diff --git a/changelog/822.trivial.rst b/changelog/822.trivial.rst deleted file mode 100644 index 844453a..0000000 --- a/changelog/822.trivial.rst +++ /dev/null @@ -1 +0,0 @@ -Replace internal usage of ``py.log`` with a custom solution (but with the same interface). diff --git a/changelog/823.trivial.rst b/changelog/823.trivial.rst deleted file mode 100644 index f09b4b6..0000000 --- a/changelog/823.trivial.rst +++ /dev/null @@ -1 +0,0 @@ -Remove usage of ``py._pydir`` as an rsync candidate. diff --git a/changelog/824.trivial.rst b/changelog/824.trivial.rst deleted file mode 100644 index e6c6c85..0000000 --- a/changelog/824.trivial.rst +++ /dev/null @@ -1 +0,0 @@ -Replace internal usages of ``py.path.local`` by ``pathlib.Path``. diff --git a/changelog/826.deprecation.rst b/changelog/826.deprecation.rst deleted file mode 100644 index e69de29..0000000 diff --git a/changelog/829.doc b/changelog/829.doc deleted file mode 100644 index b779bf9..0000000 --- a/changelog/829.doc +++ /dev/null @@ -1 +0,0 @@ -Document the ``-n logical`` option. diff --git a/pyproject.toml b/pyproject.toml index 863e7db..19ee000 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,37 +16,23 @@ directory = "changelog/" title_format = "pytest-xdist {version} ({project_date})" template = "changelog/_template.rst" - [[tool.towncrier.type]] - directory = "removal" - name = "Removals" - showcontent = true +[tool.towncrier.fragment.removal] +name = "Removals" - [[tool.towncrier.type]] - directory = "deprecation" - name = "Deprecations" - showcontent = true +[tool.towncrier.fragment.deprecation] +name = "Deprecations" - [[tool.towncrier.type]] - directory = "feature" - name = "Features" - showcontent = true +[tool.towncrier.fragment.feature] +name = "Features" - [[tool.towncrier.type]] - directory = "bugfix" - name = "Bug Fixes" - showcontent = true +[tool.towncrier.fragment.bugfix] +name = "Bug Fixes" - [[tool.towncrier.type]] - directory = "vendor" - name = "Vendored Libraries" - showcontent = true +[tool.towncrier.fragment.vendor] +name = "Vendored Libraries" - [[tool.towncrier.type]] - directory = "doc" - name = "Improved Documentation" - showcontent = true +[tool.towncrier.fragment.doc] +name = "Improved Documentation" - [[tool.towncrier.type]] - directory = "trivial" - name = "Trivial Changes" - showcontent = true +[tool.towncrier.fragment.trivial] +name = "Trivial Changes" diff --git a/tox.ini b/tox.ini index 0c1655b..20ffd99 100644 --- a/tox.ini +++ b/tox.ini @@ -47,7 +47,7 @@ passenv = * deps = towncrier commands = - towncrier --version {posargs} --yes + towncrier build --version {posargs} --yes [testenv:docs] basepython = python3