Mihail Milushev
a47fcb4873
code review: kwarg-only `match`, replace `recursive` with `depth`
2023-09-17 22:28:32 +01:00
Mihail Milushev
ab8f5ce7f4
Add new `ExceptionInfo.group_contains` assertion helper method
...
Tests if a captured exception group contains an expected exception.
Will raise `AssertionError` if the wrapped exception is not an exception group.
Supports recursive search into nested exception groups.
2023-09-17 22:28:32 +01:00
Bruno Oliveira
e2acc1a99b
Fix --import-mode=importlib when root contains `__init__.py` file ( #11420 )
...
We cannot have an empty module name when importing a `__init__.py` file that
is at the rootdir.
Fixes #11417
2023-09-10 09:57:40 -03:00
Warren Markham
71f265f1f3
Refactor: use division operator to join paths ( #11413 )
...
Starting with `resolve_package_path` and its associated tests,
this refactoring seeks to make path concatenation more
readable and consistent within tests/functions.
As discussed in #11413 :
- code is free to use either `/` and `joinpath`
- consistency within a function is more important than consistency across the codebase
- it is nice to use `/` when it is more readable
- it is nice to use `joinpath` when there is little context
- be mindful that `joinpath` may be clearer when joining multiple segments
2023-09-09 09:16:22 -03:00
Marc Mueller
7259e8db98
Fix assert rewriting with assignment expressions ( #11414 )
...
Fixes #11239
2023-09-09 09:09:31 -03:00
Ran Benita
6ad9499c9c
doctest: some missing type annotations
2023-09-08 15:59:17 +03:00
Ran Benita
2ed2e9208d
doctest: remove unnecessary Optionals
2023-09-08 15:59:17 +03:00
Ran Benita
ab63ebb3dc
doctest: inline `_setup_fixtures`, make more similar to `Function`
...
There used to be two callers to `_setup_fixtures()`, now there's only
one, so inline it and make `DoctestItem` more similar to `Function`.
(Eventually we may want to generalize `TopRequest` from taking
`Function` directly to some "fixture-supporting item", removing the
remaining `type: ignore` here and allowing plugins to do it in a stable
manner).
2023-09-08 15:59:17 +03:00
Ran Benita
b3a981d385
fixtures: remove `getfixtureinfo(funcargs)` in favor of None `func`
...
Since we already broke plugins using this (private) interface in this
version (pytest-play, pytest-wdl), might as well do a cleanup.
2023-09-08 15:59:17 +03:00
Sadra Barikbin
48b0395648
fixtures: clean up getfixtureclosure()
...
Some code cleanups - no functional changes.
2023-09-08 15:53:49 +03:00
Ran Benita
9c11275553
fixtures: change getfixtureclosure(ignore_args) to a set
...
Only used for containment checks so a Set is more appropriate than a
list.
2023-09-08 15:53:49 +03:00
Bruno Oliveira
5936a79fdb
Use _pytest.pathlib.safe_exists in get_dirs_from_args ( #11407 )
...
Related to #11394
2023-09-07 15:44:47 -03:00
Bruno Oliveira
28ccf476b9
Fix crash when passing a very long cmdline argument ( #11404 )
...
Fixes #11394
2023-09-07 12:49:25 -03:00
Fraser Stark
333e4eba6b
Change PytestReturnNotNoneWarning to return a normal warning ( #11211 )
...
Fixes #10465
2023-09-07 15:11:59 +00:00
Ronny Pfannschmidt
e787d2ed48
Merge pull request #11317 from tjsmart/fix-issue-11237
...
Fix doctest collection of `functools.cached_property` objects.
2023-09-07 14:39:02 +02:00
Ran Benita
faa8f2ea08
Merge pull request #11393 from pytest-dev/fixtures-tweaks
...
Fixtures tweaks
2023-09-06 09:15:28 +03:00
Bruno Oliveira
194a782e38
Fix import_path for packages ( #11390 )
...
For packages, `import_path` receives the path to the package's `__init__.py` file, however module names (as they live in `sys.modules`) should not include the `__init__` part.
For example, `app/core/__init__.py` should be imported as `app.core`, not as `app.core.__init__`.
Fix #11306
2023-09-05 19:42:40 -03:00
Ran Benita
bc71561ad9
python: avoid an Any
2023-09-05 22:32:46 +03:00
Ran Benita
574e0f45d9
fixtures: avoid using the mildly expensive `fixturenames` property
...
Avoid creating a list copy + 2 sets + a linear search through the list
(in the common case).
2023-09-05 22:15:37 +03:00
Ran Benita
b8906b29a7
fixtures: require `item.fixturenames` to exist in `_fillfixtures`
...
I could find 2 plugins that would be broken by this (pytest-play and
pytest-wdl), but they will be better served by just copying
`_fillfixtures` instead of use the private function.
2023-09-05 22:15:37 +03:00
Ran Benita
d2b5177dd6
fixtures: avoid some redundant work in `_fillfixtures`
2023-09-05 22:15:37 +03:00
Ran Benita
65c01f531b
fixtures: use the item `fixturenames` in `request.fixturenames`
...
`_pyfuncitem.fixturenames` is just an alias for
`_pyfuncitem._fixtureinfo.names_closure` (at least in core pytest), so
let's do the less abstraction-breaking thing.
2023-09-05 22:15:37 +03:00
Ran Benita
82bd63d318
doctest: add `fixturenames` field to `DoctestItem`
...
The field is used in `_fillfixtures`, in preference to
`request.fixturenames`, which also includes already-computed which is
not needed.
2023-09-05 22:15:37 +03:00
Ran Benita
d4872f5df7
fixtures: tiny code cleanup
2023-09-05 22:15:37 +03:00
Ran Benita
8d815ca55b
python: type some CallSpec2 fields as immutable
...
Knowing that a field is immutable makes it easier to understand the
code.
2023-09-05 22:15:37 +03:00
Israel Fruchter
917ce9aa01
Fix user_properties not saved to XML if fixture errors during teardown
...
Move handling of user_properties to `finalize()`.
Previously if a fixture failed during teardown, `pytest_runtest_logreport` would not be called with "teardown", resulting in the user properties not being saved on the JUnit XML file.
Fixes : #11367
2023-09-03 14:33:54 -03:00
Sean Patrick Malloy
76ba7db6ce
Improve docs for last-failed-no-failures
...
Improve documentation for last-failed-no-failures to make the different options and the functionality more clear.
Closes #11354
2023-08-29 00:14:45 +00:00
Warren Markham
ff23347f1f
Fix platform-dependent type-check errors ( #11345 )
...
Use more explicit `sys.platform` checks, instead of the previous check using `in`, which mypy understands.
Fixes #11343
2023-08-27 09:40:24 -03:00
Ran Benita
77f7f59b2a
Fixes for typed pluggy
...
Since version 1.3 pluggy added typing, which requires some fixes to
please mypy.
2023-08-26 22:13:24 +03:00
Jon Parise
7500fe44b2
Correct the spelling of ArgSource.INVOCATION_DIR ( #11333 )
...
Config.ArgsSource.INCOVATION_DIR remains as a backwards compatibility
alias.
2023-08-23 09:21:17 +00:00
Ran Benita
43d1398fc7
Merge pull request #11334 from WarrenTheRabbit/fix-docstring-spelling-in-pytester-1
...
doc: fix docstring spelling in pytester
2023-08-22 14:44:06 +03:00
Zac Hatfield-Dodds
03832fa31e
Merge pull request #11326 from DetachHead/DetachHead-patch-1
...
use `if not TYPE_CHECKING` on `pytest.__getattr__` to prevent type checkers from using it
2023-08-22 03:53:46 -07:00
WarrenTheRabbit
3f446b68fd
doc: fix docstring spelling in pytester
2023-08-22 14:36:39 +10:00
Zac Hatfield-Dodds
050f402816
Merge pull request #11308 from reaganjlee/iter-reporting
...
Improve reporting from __iter__ exceptions
2023-08-21 16:27:42 -07:00
pre-commit-ci[bot]
dd5ae0c3b8
[pre-commit.ci] auto fixes from pre-commit.com hooks
...
for more information, see https://pre-commit.ci
2023-08-21 08:03:06 +00:00
DetachHead
fc653d0d12
use `if not TYPE_CHECKING` on `pytest.__getattr__` to prevent type checkers from using it
2023-08-21 18:00:28 +10:00
Tyler Smart
a357c7abc8
Ignore dip in branch coverage (since py3.13+ isn't tested in CI)
2023-08-20 20:55:30 -06:00
Reagan Lee
61133ba83d
un-iterable fix
2023-08-20 14:46:09 -07:00
Reagan Lee
049eec8474
Revert iter raises checks
...
This reverts commit e938580257
.
Revert "improve error msg and test"
This reverts commit c0cf822ca1
.
Revert "error msg"
This reverts commit ec1053cc16
.
Revert "changelog"
This reverts commit d2dc8a70b5
.
Revert "simplify code / take out user-gen typeerror case"
This reverts commit b9cb87d862
.
2023-08-20 14:06:42 -07:00
Tyler Smart
7a625481da
PR suggestions
2023-08-19 22:20:40 -06:00
Tyler Smart
ebd571bb18
Move _from_module override to pre-existsing DocTestFinder subclass
2023-08-19 12:04:59 -06:00
Tyler Smart
d4fb6ac9f7
Fix doctest collection of `functools.cached_property` objects.
2023-08-16 00:55:16 -06:00
Ran Benita
15fadd8c5c
Merge pull request #11219 from bluetech/fixtures2
...
fixtures: make FixtureRequest abstract, add TopRequest subclass
2023-08-15 21:52:46 +03:00
Ran Benita
1827d8d5f9
doc: fix a few `pytest.mark.xfail` nits
...
Refs #9027 , #10094 .
2023-08-12 18:30:58 +03:00
Ran Benita
9e164fc4fe
fixtures: make FixtureRequest abstract, add TopRequest subclass
...
Fix #11218 .
2023-08-12 11:55:08 +03:00
Reagan Lee
c0cf822ca1
improve error msg and test
2023-08-11 10:33:34 -07:00
Reagan Lee
ec1053cc16
error msg
2023-08-11 10:03:19 -07:00
Reagan Lee
b9cb87d862
simplify code / take out user-gen typeerror case
2023-08-10 17:43:01 -07:00
Reagan Lee
e938580257
check for user-generated exceptions
2023-08-10 17:37:48 -07:00
Ran Benita
3ad3fc6b8f
python: use clearer terminology for `_resolve_arg_value_types`
2023-08-09 20:36:24 +03:00