- #372: Pytest versions older than 3.6 are no longer supported.
#373: Node setup information is hidden when pytest is run in quiet mode to reduce noise on many-core machines.
#388:
mainargv
is made available inworkerinput
from the host'ssys.argv
.This can be used via
request.config.workerinput["mainargv"]
.
- #332: Fix report of module-level skips (
pytest.skip(reason, allow_module_level=True)
). - #378: Fix support for gevent monkeypatching
- #384: pytest 4.1 support:
ExceptionInfo
API changes. - #390: pytest 4.1 support:
pytest_logwarning
hook removed.
- #349: Correctly handle warnings created with arguments that can't be serialized during the transfer from workers to master node.
- #337: New
--maxprocesses
command-line option that limits the maximum number of workers when using--numprocesses=auto
.
- #351: Fix scheduling deadlock in case of inter-test locking.
- #344: Fix issue where Warnings could cause pytest to fail if they do not set the args attribute correctly.
- #341: Fix warnings transfer between workers and master node with pytest >= 3.8.
- #330: Improve collection performance by reducing the number of events sent to
master
node.
#321: Revert change that dropped support for
pytest<3.4
and requiresix
.This change caused problems in some installations, and was a mistaken in the first place as we should not change version requirements in bug-fix releases unless they fix an actual bug.
#305: Remove last references to obsolete
py.code
.Remove some unnecessary references to
py.builtin
.#316: Workaround cpu detection on Travis CI.
- Fix issue of virtualized or containerized environments not reporting the number of CPUs correctly. (#9)
- Make all classes subclass from
object
and fixsuper()
call inLoadFileScheduling
; (#297)
- Add backward compatibility for
slaveoutput
attribute toWorkerController
instances. (#285)
- Fix issue when using
loadscope
orloadfile
where tests would fail to start if the first scope had only one test. (#257)
- Change terminology used by
pytest-xdist
to master and worker in arguments and messages (for example--max-worker-reset
). (#234)
- Add support for the
pytest_runtest_logfinish
hook which will be released in pytest 3.4. (#266)
- Drop support for EOL Python 2.6. (#259)
- New
--dist=loadfile
option which load-distributes test to workers grouped by the file the tests live in. (#242)
- Fix accidental mutation of test report during serialization causing longrepr string-ification to break. (#241)
- Fix hang when all worker nodes crash and restart limit is reached (#45)
- Fix issue where the -n option would still run distributed tests when pytest was run with the --collect-only option (#5)
xdist
now supports tests to log results multiple times, improving integration with plugins which require it like pytest-rerunfailures and flaky. (#206)
- Fix issue where tests were being incorrectly identified if a worker crashed
during the
teardown
stage of the test. (#124)
- Fix crash when transferring internal pytest warnings from workers to the master node. (#214)
--boxed
functionality has been moved to a separate plugin, pytest-forked. This release now depends on `` pytest-forked`` and provides--boxed
as a backward compatibility option. (#1)
- New
--dist=loadscope
option: sends group of related tests to the same worker. Tests are grouped by module for test functions and by class for test methods. SeeREADME.rst
for more information. (#191) - Warnings are now properly transferred from workers to the master node. (#92)
- Fix serialization of native tracebacks (
--tb=native
). (#196)
- Removal of unnecessary dependency on incorrect version of py. (#105)
- Fix bug in internal event-loop error handler in the master node. This bug would shadow the original errors making extremely hard/impossible for users to diagnose the problem properly. (#175)
- Fixed serialization of
longrepr.sections
during error reporting from workers. (#171) - Fix
ReprLocal
not being unserialized breaking --showlocals usages. (#176)
pytest-xdist
now requirespytest>=3.0.0
.
- Add long option --numprocesses as alternative for -n. (#168)
- Fix serialization and deserialization dropping longrepr details. (#133)
- Hot fix release reverting the change introduced by #124, unfortunately it broke a number of test suites so we are reversing this change while we investigate the problem. (#157)
- Introduced
towncrier
forCHANGELOG
management. (#154) - Added
HOWTORELEASE
documentation. (#155)
- fix #124: xdist would mark test as complete after 'call' step. As a result, xdist could identify the wrong test as failing when test crashes at teardown. To address this issue, xdist now marks test as complete at teardown.
pytest-xdist
now requires pytest 2.7 or later.- Add
worker_id
attribute in the TestReport - new hook:
pytest_xdist_make_scheduler(config, log)
, can return custom tests items distribution logic implementation. You can take a look at built-inLoadScheduling
andEachScheduling
implementations. Note that required scheduler class public API may change in nextpytest-xdist
versions.
- new
worker_id
fixture, returns the id of the worker in a test or fixture. Thanks Jared Hellman for the PR. - display progress during collection only when in a terminal, similar to pytest #1397 issue. Thanks Bruno Oliveira for the PR.
- fix internal error message when
--maxfail
is used (#62, #65). Thanks Collin RM Stocks and Bryan A. Jones for reports and Bruno Oliveira for the PR.
- new hook:
pytest_xdist_node_collection_finished(node, ids)
, called when a worker has finished collection. Thanks Omer Katz for the request and Bruno Oliveira for the PR. - fix README display on pypi
- fix #22: xdist now works if the internal tmpdir plugin is disabled. Thanks Bruno Oliveira for the PR.
- fix #32: xdist now works if looponfail or boxed are disabled. Thanks Bruno Oliveira for the PR.
- fix a regression -n 0 now disables xdist again
extended the tox matrix with the supported py.test versions
split up the plugin into 3 plugin's to prepare the departure of boxed and looponfail.
looponfail will be a part of core and forked boxed will be replaced with a more reliable primitive based on xdist
conforming with new pytest-2.8 behavior of returning non-zero when all tests were skipped or deselected.
new "--max-slave-restart" option that can be used to control maximum number of times pytest-xdist can restart slaves due to crashes. Thanks to Anatoly Bubenkov for the report and Bruno Oliveira for the PR.
release as wheel
"-n" option now can be set to "auto" for automatic detection of number of cpus in the host system. Thanks Suloev Dmitry for the PR.
- fix issue594: properly report errors when the test collection is random. Thanks Bruno Oliveira.
- some internal test suite adaptation (to become forward compatible with the upcoming pytest-2.8)
- fix pytest/xdist issue485 (also depends on py-1.4.22): attach stdout/stderr on --boxed processes that die.
- fix pytest/xdist issue503: make sure that a node has usually two items to execute to avoid scoped fixtures to be torn down pre-maturely (fixture teardown/setup is "nextitem" sensitive). Thanks to Andreas Pelme for bug analysis and failing test.
- restart crashed nodes by internally refactoring setup handling of nodes. Also includes better code documentation. Many thanks to Floris Bruynooghe for the complete PR.
- add glob support for rsyncignores, add command line option to pass additional rsyncignores. Thanks Anatoly Bubenkov.
- fix pytest issue382 - produce "pytest_runtest_logstart" event again in master. Thanks Aron Curzon.
- fix pytest issue419 by sending/receiving indices into the test collection instead of node ids (which are not necessarily unique for functions parametrized with duplicate values)
- send multiple "to test" indices in one network message to a slave and improve heuristics for sending chunks where the chunksize depends on the number of remaining tests rather than fixed numbers. This reduces the number of master -> node messages (but not the reverse direction)
- changed LICENSE to MIT
- fix duplicate reported test ids with --looponfailing (thanks Jeremy Thurgood)
- fix pytest issue41: re-run tests on all file changes, not just randomly select ones like .py/.c.
- fix pytest issue347: slaves running on top of Python3.2 will set PYTHONDONTWRITEYBTECODE to 1 to avoid import concurrency bugs.
- fix pytest-issue93 - use the refined pytest-2.2.1 runtestprotocol interface to perform eager teardowns for test items.
- fix incompatibilities with pytest-2.2.0 (allow multiple pytest_runtest_logreport reports for a test item)
- terser collection reporting
- fix issue34 - distributed testing with -p plugin now works correctly
- fix race condition in looponfail mode where a concurrent file removal could cause a crash
- adapt to and require pytest-2.0 changes, rsyncdirs and rsyncignore can now only be specified in [pytest] sections of ini files, see "py.test -h" for details.
- major internal refactoring to match the pytest-2.0 event refactoring - perform test collection always at slave side instead of at the master - make python2/python3 bridging work, remove usage of pickling
- improve initial reporting by using line-rewriting
- remove all trailing whitespace from source
- perform distributed testing related reporting in the plugin rather than having dist-related code in the generic py.test distribution
- depend on execnet-1.0.7 which adds "env1:NAME=value" keys to gateway specification strings.
- show detailed gateway setup and platform information only when "-v" or "--verbose" is specified.
- fix --looponfailing - it would not actually run against the fully changed source tree when initial conftest files load application state.
- adapt for py-1.3.1's new --maxfailure option
- fix issue79: sessionfinish/teardown hooks are now called systematically on the slave side
- introduce a new data input/output mechanism to allow the master side to send and receive data from a slave.
- fix race condition in underlying pickling/unpickling handling
- use and require new register hooks facility of py.test>=1.3.0
- require improved execnet>=1.0.6 because of various race conditions that can arise in xdist testing modes.
- fix some python3 related pickling related race conditions
- fix PyPI description
- fix an indefinite hang which would wait for events although no events are pending - this happened if items arrive very quickly while the "reschedule-event" tried unconditionally avoiding a busy-loop and not schedule new work.
- moved code out of py-1.1.1 into its own plugin
- use a new, faster and more sensible model to do load-balancing of tests - now no magic "MAXITEMSPERHOST" is needed and load-testing works effectively even with very few tests.
- cleaned up termination handling
- make -x cause hard killing of test nodes to decrease wait time until the traceback shows up on first failure