Commit Graph

77 Commits

Author SHA1 Message Date
Bruno Oliveira
475b346fd9 Run pyupgrade --py39-plus on all files 2024-12-07 08:47:25 -03:00
Aleksandr Mezin
9788f12e9e Make 'steal' command atomic (#1144)
Either unschedule all requested tests, or none if it's not possible -
if some of the requested tests have already been processed by the time
the request arrives. It may happen if the worker runs tests faster than
the controller receives and processes status updates. But in this case
maybe it's just better to let the worker keep running.

This is a prerequisite for group/scope support in worksteal scheduler -
so they won't be broken up incorrectly.

This change could break schedulers that use "steal" command. However:

1) worksteal scheduler doesn't need any adjustments.

2) I'm not aware of any external schedulers relying on this command yet.

So I think it's better to keep the protocol simple, not complicate it for
imaginary compatibility with some unknown and likely non-existent
schedulers.

Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
2024-10-30 14:00:10 -03:00
Zac Medico
20e3ac774e Use execnet main_thread_only execmodel (#1027)
Use the execnet main_thread_only execmodel so that code which expects
to run in the main thread will just work.  This execmodel has been
merged to the execnet master branch via pytest-dev/execnet#243, so this
patch should not be merged until there is a released version of execnet
supporting the main_thread_only execmodel.

Closes #620
2024-04-19 08:03:32 -03:00
Ran Benita
b78cf1c0ce Improve typing
Fix #1057
2024-04-15 23:30:17 +03:00
Ran Benita
31de42ffa5 Bump min pytest to 7.0.0
Refs #1057
2024-04-05 11:50:11 +03:00
Ran Benita
816c9dcda1 Use ruff instead of black, flake8, autoflake, pyupgrade
Config adapted from pytest.
2024-04-03 00:19:32 +03:00
Ran Benita
e3b69d4f29 Sort imports
Using pytest's style.
2024-04-03 00:19:31 +03:00
Ran Benita
00dc8eeaff Remove pytest InvocationParams backward compat
It's available since pytest 5.2, and pytest-xdist requires pytest>=6.2.
2024-03-23 20:40:54 +02:00
Aleksandr Mezin
6abcdfc22e Fix hang caused by steal command with empty test queue
Fixes #884
2023-03-09 16:44:34 +02:00
Aleksandr Mezin
d1dfad3e92 Implement work-stealing scheduler (#862)
Closes #858
2023-01-11 08:38:57 -03:00
Bruno Oliveira
4a33933e30 Use ternary operator to remove mypy error
Otherwise we would get this error:

```
error: Function "Callable[[Any, bool, Optional[float]], None]" could always be true in boolean context  [truthy-function]
```
2022-11-14 23:13:38 -03:00
Bruno Oliveira
d7d396a7f9 Run pyupgrade --py37-plus 2022-11-05 12:01:07 -03:00
Bruno Oliveira
25cc1a4119 Replace py.path.local usages by pathlib.Path 2022-10-21 22:54:17 -03:00
Ran Benita
9ddb274f23 Update test suite to modern pytest
- Use pytest>=6.2 features (same as install_requires).
  When we can require >=7, can fix some more typing omissions and
  version checks.
- Replace testdir with pytester
- Replace py.test with pytest
- Replace tmpdir with tmp_path
- Remove (almost) all other uses of py
- Add some type annotations (not checked yet)

Ref #722.
2021-11-01 09:05:28 +02:00
Thomas Grainger
02f971d45f swap docstring 2021-06-03 21:46:21 +01:00
Thomas Grainger
56e631b4bb fix sys.path for local workers Fixes #421 2021-06-03 21:20:11 +01:00
Adam Johnson
f02aa70c95 Upgrade pre-commit hooks
Use `pre-commit autoupdate` to upgrade, and follow the message from `pre-commit-hooks` to move to the official `flake8` hook.
2021-03-20 11:13:59 -03:00
Hugo
dddac7c7e9 Remove six library 2020-08-03 22:52:18 +10:00
Sven-Hendrik Haase
2183d741bb Add global session uuid (fixes #524) 2020-04-30 19:43:16 +02:00
Hugo
157871c026 Upgrade Python syntax with pyupgrade 2019-12-02 17:57:38 +02:00
Bruno Oliveira
89d07a5cf2 Use serialization hooks from pytest 4.4 2019-04-01 18:37:03 -03:00
Bruno Oliveira
6d544cef9a Fix linting 2019-02-15 08:37:57 -02:00
Jiri Kuncar
93780dcccc Simpler usage error in test_remote_usage_prog 2019-02-15 10:54:18 +01:00
Bruno Oliveira
ca58e5e7ed Fix test_remote_usage_prog after changes in pytest features branch 2019-02-13 15:20:32 -02:00
Bruno Oliveira
1dec9dc246 ReprEntry objects no longer have the localssep attribute
The attribute was not used anywhere and has been removed in
pytest-dev/pytest#4615
2019-01-14 21:59:05 -02:00
Bruno Oliveira
2b65800738 Fix test_remote_usage_prog which started to break with pytest@features 2018-12-12 18:25:04 -02:00
Daniel Hahler
a70dace69c Pass and use original sys.argv to/with workers
This gets used e.g. by argparse for the "prog" part.

We could explicitly pass it through and/or set it on
config._parser.prog, but that is a bit tedious just for this use case,
and it looks like "simulating" the main prog here appears to not be that
bad of a hack after all.
2018-12-11 06:41:18 +01:00
Bruno Oliveira
f9a13fe53b Drop support to old pytest versions and test with python 3.7 2018-11-11 11:27:30 -02:00
Bruno Oliveira
3292e0ede0 Fix handling of skipped modules with pytest.skip at module level
Fix #332
2018-11-10 18:20:13 -02:00
Bruno Oliveira
9bcd0e4352 Optimize collection performance
Only send failed collection reports, as master is only interested in failed
reports.

Fix #330
2018-08-18 23:09:00 -03:00
Bruno Oliveira
fced1645cb Run pre-commit: black, whitespaces, rst 2018-07-27 17:50:55 -03:00
Bruno Oliveira
fe1f239612 Remove last references to obsolete py.code
Also remove some unnecessary references to py.builtin

Fix #305
2018-07-23 17:36:03 -03:00
Anthony Sottile
78fcf725cf Factor out py.std 2018-07-05 15:35:39 -07:00
feuillemorte
b04703b6ba #234 Fix flake 8 and fix comments 2018-01-17 23:34:39 +03:00
feuillemorte
40491279ef #234 Added master/worker terminology 2018-01-17 23:07:29 +03:00
feuillemorte
f1e6dc4344 use master/worker terminology 2018-01-16 21:46:43 +03:00
thou
2eb1002781 Issue #241 Make copy during serialization of reprtraceback and reprcrash to avoid mutating. 2017-11-21 12:33:07 -06:00
Bruno Oliveira
435e5e8ac5 Fix serialization report tests
No idea why using "-n1" on one of the those tests makes the
second test to fail.

See pytest-dev/pytest-xdist#202 for a full description.
2017-08-07 20:21:40 -03:00
Bruno Oliveira
5dc87143ad Fix serialization of native tracebacks
Fix #196
2017-08-04 20:13:30 -03:00
Bruno Oliveira
64f8ad5469 Fix internal handling in process_from_remote
Fix #175
2017-07-27 20:50:09 -03:00
thou
530c9b234a Unserialize reprlocals to a ReprLocal instance 2017-06-30 15:00:50 -05:00
thou
5c1a35fee4 Serialization / Deserialization was dropping longrepr.sections 2017-06-27 16:30:49 -05:00
thou
4a1f1d879b Updated serialize_report and unserialize_report to pass entire exception info using ReprExceptionInfo.
This addresses issue #130.
2017-06-21 13:36:58 -05:00
Bruno Oliveira
d498cb3e0f Add env variables to identify workers 2016-08-04 21:53:13 -03:00
Bruno Oliveira
7d124ecf87 Replace "pytest_funcarg__" by @pytest.fixture 2016-08-04 20:26:08 -03:00
Bruno Oliveira
8ec8d29cbf Mark test_remoteinitconfig as xfail
#59
2016-05-11 22:25:12 -03:00
Bruno Oliveira
96506867d1 Refactor tox and ci scripts
Make sure a plain "tox" command works in all platforms without failures,
which facilitates making releases using a "devpi upload/test" workflow

* Fix small flakes failures
* Limit py35 testing to pytest>=2.7, as pytest<2.7 does not work on py35
* pexpect environments only work on Linux platforms and should be skipped on Windows
* Simplify AppVeyor script by running all tox environments: no need to have a build matrix
  because AppVeyor does not execute builds in parallel
* Add all environments to travis.yml, obtained from "tox --listenvs"
2016-01-30 16:47:07 -02:00
Ronny Pfannschmidt
0f5ef95be8 flake8 cleanup 2015-09-01 22:37:51 +02:00
holger krekel
cc237b0d8e fix various flakes issues and add "flakes" to tox tests 2014-07-20 16:56:21 +02:00
holger krekel
e26d4486fc 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)
2014-01-27 11:37:40 +01:00