Ran Benita
89f0b5b5a2
nose: fix class- and module-level fixture behavior
...
Fixes #9272 .
Fixing the issue directly in the plugin is somewhat hard, so do it in
core. Since the plugin is going to be deprecated, I figure it's OK to
cheat a bit.
2021-11-06 14:45:24 +02:00
Oleg Höfling
49f934618c
Replace hardcoded links to Github issues with extlinks ( #9234 )
2021-11-06 11:16:11 +02:00
Thomas Hisch
d8b647970f
Inline PercentStyleMultiline._update_message
...
and take advantage of dict unpacking operator.
2021-11-05 23:08:30 +01:00
Ran Benita
b0aa870b11
Export CollectReport and TestReport
...
Refs #7469 .
2021-11-02 20:58:51 +02:00
Ran Benita
a53abe93d8
Merge pull request #9208 from bluetech/legacypath-plugin
...
Add legacypath plugin, move py.path stuff there
2021-11-02 20:35:12 +02:00
Harshna
9d17cebe64
Use correct input arg type for _bestrelpath ( #9238 )
...
Closes #8990
2021-11-01 17:43:05 +02:00
denivyruck
0191563fd6
DoctTest line numbers not found due to method wrapping ( #8861 )
...
Closes #8796
2021-11-01 09:01:25 +02:00
Alexander King
31c207a0b5
Support forwardslash characters in identifiers ( #9249 )
...
Closes #8377 .
2021-11-01 08:54:18 +02:00
Ran Benita
e6eac28f0e
legacypath: only add `testdir` and `tmpdir` fixtures if corresponding plugins are registered
...
This preserves the existing behavior and gives a proper error message
in case e.g. `testdir` is requested without the `pytester` plugin being
loaded.
2021-10-29 13:11:12 +03:00
Ran Benita
c3dff755af
Move Node.fspath to legacypath plugin
2021-10-28 21:51:51 +03:00
Ran Benita
ce7cff9f8e
Move pathlist support to legacypath plugin
2021-10-28 21:51:51 +03:00
Ran Benita
d9ca55c648
Move Session.startdir to legacypath plugin
2021-10-28 21:51:51 +03:00
Ran Benita
84722a7904
Move Config.{invocation_dir,rootdir,inifile} to legacypath plugin
2021-10-28 21:51:51 +03:00
Ran Benita
d979f82fb0
Move TerminalReporter.stardir to legacypath plugin
2021-10-28 21:51:51 +03:00
Ran Benita
7c0011374c
Move FixtureRequest.fspath to legacypath plugin
2021-10-28 21:51:51 +03:00
Ran Benita
a1a605a63e
Move Cache.makedir to legacypath plugin
2021-10-28 21:51:51 +03:00
Ran Benita
5e883f5195
Move tmpdir to legacypath plugin
2021-10-28 21:51:51 +03:00
Ran Benita
1df28a4450
Move testdir to legacypath plugin
2021-10-28 21:51:51 +03:00
Ran Benita
c2ece58aa0
Add legacypath plugin
2021-10-27 09:31:44 +03:00
Ran Benita
b7fc0003fd
Merge pull request #9232 from bluetech/deprecate-node-fspath-args
...
Deprecate Node constuctor fspath argument, and other small changes/fixes
2021-10-27 09:26:57 +03:00
Ran Benita
7706fd6840
nodes: deprecate fspath arguments to node constructors
...
This is unfortunately a dependency on `py.path` which cannot be moved to
an external plugins or eased in any way, so has to be deprecated in
order for pytest to be able to eventually remove the dependency on `py`.
2021-10-27 08:36:10 +03:00
Ran Benita
99363ad7ff
recwarn: fix was -> were in DID NOT WARN message
2021-10-27 08:36:10 +03:00
Ran Benita
60ca83746b
docs: change references to 6.3 -> 7.0
...
The plans have changed, next version will be 7.0 not 6.3.
2021-10-23 22:49:55 +03:00
Ran Benita
755ce9bc80
hookspec: improve legacy path deprecation docs
2021-10-23 22:49:54 +03:00
Ran Benita
afc7442e22
nodes: inline `_imply_path`
...
Only one usage left, and we certainly don't expect more!
Rename `_imply_path_only` to `_imply_path`, that's a less confusing name
now.
2021-10-23 22:10:08 +03:00
Ran Benita
6be3f31dba
nodes: remove redundent _imply_path call
...
The Node ctor will take care of the check.
2021-10-23 21:34:16 +03:00
Ran Benita
853b0a4c29
nodes: fix bug in Node() fspath compat
...
Since path <-> fspath are converted to each other, we need to check both
before looking at the parent, in case fspath is set but path is not.
2021-10-23 21:33:12 +03:00
Ran Benita
11e36c8493
Make transitive Pytester types public
...
Export `HookRecorder`, `RecordedHookCall` (originally `ParsedCall`),
`RunResult`, `LineMatcher`.
These types are reachable through `Pytester` and so should be public
themselves for typing and other purposes.
The name `ParsedCall` I think is too generic under the `pytest`
namespace, so rename it to `RecordedHookCall`.
The `HookRecorder`'s constructor is made private -- it should only be
constructed by `Pytester`.
`LineMatcher` and `RunResult` are exported as is - no private and no
rename, since they're being used.
All of the classes are made final as they are not designed for
subclassing.
2021-10-23 10:59:18 +03:00
Ran Benita
259cff59f5
Remove {pytester,testdir}.Session aliases
...
This causes `Session` documentation to be rendered again in full under
`pytester` and `testdir` in the API Reference. I tried but couldn't get
sphinx to hide it.
Since it's a pretty odd thing to have (should just use
`pytest.Session`), and I couldn't find any plugin which uses this, let's
just remove it.
2021-10-23 10:25:29 +03:00
Ran Benita
5fd182f3de
Use public API for adding config cleanup
...
No need to spuriously access the private internals of Config.
2021-10-22 11:03:27 +03:00
Bruno Oliveira
f5fd2fb176
Improve UX during errors while parsing warning filters
...
Fix #7864
Fix #9218
Closes #8343
Closes #7877
2021-10-21 13:15:41 -03:00
Cristian Vera
cbcfeca78c
Cache.set preserves key order when saving dicts ( #9206 )
...
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
2021-10-18 19:15:34 -03:00
Ran Benita
a3b69d9d83
Remove py version printing, traceback filtering, freezing
...
Not so important anymore, and makes it easier to remove the py
dependency.
2021-10-16 12:01:31 +03:00
Ran Benita
da3b3012b1
Merge pull request #9184 from bluetech/reportinfo-pathlike
...
[7.0] Change `Node.reportinfo()` return value from `py.path` to `str|os.PathLike[str]`
2021-10-11 14:33:03 +03:00
Ran Benita
14a879b6d1
Merge pull request #9183 from bluetech/rm-redundent-osfspath
...
Remove redundant explicit os.fspath calls
2021-10-09 19:14:55 +03:00
Bernát Gábor
3407fe63e2
Support the importlib.resources files API in rewritten files ( #9173 )
2021-10-09 10:54:44 -03:00
Ran Benita
7eee5c1634
Change `Node.reportinfo()` return value from `py.path` to `str|os.PathLike[str]`
...
`reportinfo()` is the last remaining py.path-only code path in pytest,
i.e. the last piece holding back py.path deprecation. The problem with
it is that plugins/users use it from both sides -- implementing it
(returning the value) and using it (using the return value). Dealing
with implementers is easy enough -- allow to return `os.PathLike[str]`.
But for callers who expect strictly `py.path` this will break and
there's not really a good way to provide backward compat for this.
From analyzing a corpus of 680 pytest plugins, the vast majority of
`reportinfo` appearances are implementations, and the few callers don't
actually access the path part of the return tuple.
As for test suites that might access `reportinfo` (e.g. using
`request.node.reportinfo()` or other ways), that is much harder to
survey, but from the ones I searched, I only found case
(`pytest_teamcity`, but even then it uses `str(fspath)` so is unlikely
to be affected in practice). They are better served with using
`node.location` or `node.path` directly.
Therefore, just break it and change the return type to
`str|os.PathLike[str]`.
Refs #7259 .
2021-10-09 15:02:03 +03:00
Ran Benita
5059b31a73
Remove redundant explicit os.fspath calls
...
Python calls it on its own.
2021-10-09 13:44:44 +03:00
Jeff Rasley
e84ba80301
Update pastebin URL from bpaste to bpa.st ( #9131 )
2021-10-06 08:12:48 -03:00
Ran Benita
cf4495ffe1
mark/structures: fix NodeKeywords.{__iter__,__len__} given duplicates
...
Regressed in c4b9b14a4
-- the `set` stuff had a reason which I had
missed.
2021-10-06 11:24:28 +03:00
Ran Benita
c9267af3bf
Merge pull request #9166 from bluetech/optimize-imply-path
...
nodes: micro-optimize _imply_path
2021-10-06 10:50:10 +03:00
Ran Benita
076ac901bb
nodes: micro-optimize _imply_path
2021-10-06 10:29:52 +03:00
Bruno Oliveira
14b79a66a3
Merge pull request #9025 from davidszotten/more_verbose_for_ci
2021-10-05 16:52:47 -03:00
Bruno Oliveira
9546fb713a
Merge pull request #9066 from eamanu/fix-8994
2021-10-05 16:52:08 -03:00
Bruno Oliveira
459e10b802
Merge pull request #9133 from okken/9113_deselected_assert_outcomes
2021-10-05 16:50:42 -03:00
Ran Benita
c4b9b14a44
mark/structures: micro-optimize item.keywords/NodeKeywords
2021-10-05 16:50:22 +03:00
Ran Benita
6a5211f369
rewrite: fixup end_lineno, end_col_offset of rewritten asserts
...
These are new additions in Python 3.8:
https://docs.python.org/3/whatsnew/3.8.html#ast
I'm not sure what's using them but we should set them anyway.
2021-10-05 10:51:09 +03:00
Brian Okken
c82bda259c
Add a `pythonpath` setting to allow paths to be added to `sys.path`. ( #9134 )
2021-10-05 09:36:38 +03:00
Zac Hatfield-Dodds
e763fde482
Merge pull request #9158 from hoefling/doc/internal-crossrefs
...
replace hardcoded urls to docs.pytest.org with internal crossrefs, add crossrefs to numpy docs, use sphinx pep role
2021-10-05 08:43:19 +11:00
Ran Benita
e5468681b0
Use attr.s(auto_attribs=True) in more places
...
It's nicer to read without the attr.ib noise.
2021-10-04 19:24:12 +03:00
Ran Benita
dced00e60f
Merge pull request #9154 from bluetech/refactor-callspec2
...
python: refactor CallSpec2
2021-10-04 18:56:29 +03:00
Ran Benita
570b1facb7
python: refactor CallSpec2
...
This type is semi-private; not documented but many plugins access it
through `item.callspec`. However, plugins access the public fields and
almost none try to construct or monkeypatch it. So we should be allowed
to clean it up some.
- Convert to attrs, add slots and frozen
- Instead of doing `new = old.copy(); new.setmulti2()`, do `new =
old.setmulti()`. This is cleaner and faster.
- Remove the `metafunc` attribute. This causes a reference cycle
(multifunc._calls -> callspec -> multifunc) for no good reason --
neither pytest itself or plugins access this attribute, so let's not
keep the Metafunc objects alive past their due.
- Some comments.
I would have also like to make the dicts and lists themselves immutable,
however some plugins mess with those so that should be done separately,
if at all.
2021-10-04 17:33:52 +03:00
oleg.hoefling
d58ee2b677
replace hardcoded urls to docs.pytest.org with internal crossrefs, add external crossrefs where possible
...
Signed-off-by: oleg.hoefling <oleg.hoefling@gmail.com>
2021-10-04 00:23:41 +02:00
Ran Benita
637e8efdd4
mark/structures: slightly optimize some functions
...
`normalize_mark_list` shows up in pandas collection profiles. It's
simple enough to improve.
2021-10-02 14:06:52 +03:00
Ran Benita
8af558723e
main: avoid Path(Path(...)) calls, they're slow ( #9147 )
2021-10-01 16:21:32 +03:00
Ran Benita
5fc3e35afb
Merge pull request #9144 from bluetech/py36_order_by_definition
...
py36+ tests are definition ordered [v2]
2021-10-01 16:17:37 +03:00
Ran Benita
d8831c64eb
Merge pull request #9148 from bluetech/lru-cache-method
...
Avoid `@lru_cache` on methods
2021-10-01 16:16:51 +03:00
Ran Benita
c86ceb4d01
main: avoid Path(Path(...)) calls, they're slow
2021-10-01 15:30:03 +03:00
Ran Benita
16e5fbe371
config: optimize PytestPluginManager._getconftestmodules
...
Now that it's no longer using `@lru_cache`, use another check to avoid
re-computation. Although `@lru_cache` is faster than the full function
call + checks, this approach also has the advantage that the caching
works for more than 128 entries.
2021-10-01 15:25:28 +03:00
Ran Benita
614f5394b5
Avoid `@lru_cache` on methods
...
The problem with `@lru_cache` on methods is that it also captures `self`
and leaks it until the entry is evicted (if ever).
2021-10-01 14:41:14 +03:00
Ran Benita
1f938e3ef5
compat: replace REGEX_TYPE with typing.Pattern
...
Since Python 3.7, there is `re.Pattern` for this, but since we need to
support Python 3.6, can use `typing.Pattern` which works as well.
2021-10-01 14:00:15 +03:00
Brian Okken
6d6cfd839a
Add a `deselected` parameter to `assert_outcomes()`
2021-09-29 07:22:53 -07:00
Bruno Oliveira
7f5e49e70b
Fix formatting
2021-09-27 22:51:08 -03:00
pre-commit-ci[bot]
56fda99fa1
[pre-commit.ci] auto fixes from pre-commit.com hooks
...
for more information, see https://pre-commit.ci
2021-09-27 19:47:18 +00:00
Florian Bruhin
112204cf8d
Fix non-sensical error message ( #9077 )
...
* Fix non-sensical error message
Introduced in 12de92cd2b
/ #7698
* Add a test
* Put the unit back into unittest
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2021-09-24 06:15:53 +02:00
Emmanuel Arias
59d314de3d
Show fullname on direct Node construction warning
...
This commit add the fullname on the Node construction warning.
Also add a test for this case.
2021-09-01 16:13:26 -03:00
Simon K
740abd9684
#9062 - Allow `--stepwise-skip` to implicitly enable `--stepwise` ( #9064 )
...
* #9062 - Allow `--stepwise-skip` to implicitly enable `--stepwise`
* Update changelog/9062.improvement.rst
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
2021-08-30 19:24:14 +01:00
Kale Kundert
af42e7154a
Prevent approx from being used without a comparison ( #9061 )
...
Some of the top search-engine hits for pytest.approx use the function without actually comparing it to anything.
This PR will cause these tests to fail by implementing approx.__bool__() to raise an AssertionError that briefly explains how to correctly use approx.
2021-08-30 18:19:31 +00:00
David Szotten
d5c020d8c5
always show full diff in ci
...
follow-up to #1314 , for similar reasons
closes #9023
2021-08-19 20:17:43 +01:00
David Szotten
2367e6e9bf
refactor ci helper to prepare for re-use
2021-08-19 11:24:51 +00:00
Éloi Rivard
7770dacb8d
pygments themes are customizable
2021-08-13 19:15:01 +02:00
Terje Runde
2439729413
logging: Make it possible to add cli colors to custom log levels
...
Closes #8803
PR #8804
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
Co-authored-by: Terje Runde <terje.runde@flir.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2021-08-09 13:48:47 +00:00
Ran Benita
25c65616f4
mark/expression: allow backslash characters in identifiers
...
Fixes #8983 .
2021-08-08 11:56:17 +03:00
Simon K
bacc8498e9
`pytest_assertion_pass` is no longer considered `experimental` ( #8967 )
...
* `pytest_assertion_pass` is no longer considered `experimental`
* adding changelog
2021-08-03 14:31:18 +01:00
Bruno Oliveira
a83b359cf0
Refactor internal scope handling by introducing Scope enum
...
PR #8913
2021-08-01 06:11:56 -03:00
Simon K
ef5d81ad5c
add `assert_outcomes(warnings=)` functionality to `RunResult`
...
* expose `warnings=` to pytester `assert_outcomes()`
* fix test fallout from adding warnings= to assert_outcomes()
* #closes 8593 - Improve test and add a `changelog` entry for the change
2021-07-31 15:25:10 +01:00
Simon K
c27db3bd8e
Deprecate pytest_cmdline_preparse
...
Close #8592
PR #8956
2021-07-31 10:53:43 -03:00
symonk
1b9ba65b3f
typeshed `os.PathLike` is now `@runtime_checkable`, remove mypy ignore
2021-07-31 14:00:36 +01:00
Ran Benita
6247a95601
Merge pull request #8920 from bluetech/stabilize-store
...
Rename Store to Stash and make it public
2021-07-31 10:32:30 +03:00
Simon K
d5c62d0326
Making `--debug` more configurable for the pytest user ( #8955 )
...
Close #8954
2021-07-30 17:37:38 -03:00
Simon K
6d6bc97231
#7124 : Fix `--doctest-modules` crashing when `__main__.py` is present ( #8949 )
...
* Fix ``--doctest-modules`` crashing when ``__main__.py`` is present
2021-07-27 22:50:26 +01:00
Simon K
1d848314d0
some small quality of life changes ( #8454 )
...
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
2021-07-26 07:48:15 -03:00
Ran Benita
2aaea20cb2
Use {node,config}.stash instead of ._store
...
Use the public name. The `_store` name is only because some plugins
started using it anyway - will be removed at some point.
2021-07-24 17:40:08 +03:00
Ran Benita
c6bdeb8491
stash: make Stash and StashKey public
...
It's had enough time to bake - let's allow external plugins to use it.
2021-07-24 17:40:08 +03:00
Ran Benita
5f39e31736
stash: implement __len__
...
Part of the MutableMapping abc (though we can't actually implement
that).
2021-07-18 15:32:52 +03:00
Ran Benita
5470d33e82
store: rename Store to Stash
...
The name "stash" is a bit more distinguishable and more evocative of the
intended usage.
2021-07-18 15:21:27 +03:00
Naveen-Pratap
febb978651
Update error message for module level skip to include 'allow_module_level' ( #8906 )
...
Co-authored-by: Naveen <NaveenPr1@microland.com>
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
2021-07-14 14:27:26 +00:00
Bruno Oliveira
69356d20cf
Merge pull request #8903 from nicoddemus/remove-fspath-deprecation
...
Revert fspath deprecation
2021-07-14 09:32:48 -03:00
Bruno Oliveira
828fde1156
Merge pull request #8858 from The-Compiler/update-doc-urls
2021-07-14 09:28:46 -03:00
Bruno Oliveira
2c4c57e135
Revert fspath deprecation
...
It is not clear yet how we should proceed with this deprecation
because `pytest.Item.reportinfo` is public API and returns a `py.path` object,
and is not clear how plugins and our examples should handle that.
Reverting just the deprecation aspect of #8251 so we can get a 7.0.0 release out.
We will reintroduce the deprecation later once we have a clear path moving forward with replacing `reportinfo`.
Closes #8445
Closes #8821
2021-07-13 08:24:39 -03:00
Graeme Smecher
5c04674e96
Generate useful parameterization IDs for complex() numbers.
2021-07-12 12:27:24 -07:00
Anthony Sottile
5d8392cb68
Merge pull request #8874 from adamjstewart/monkeypatch/setenv
...
Docs: monkeypatch.setenv does not accept bool
2021-07-09 11:38:25 -04:00
Adam J. Stewart
17f1a0af8e
Fix in more places, use default
2021-07-08 12:43:10 -05:00
Adam J. Stewart
3989a9bb05
Docs: monkeypatch.setenv does not accept bool
2021-07-08 12:21:30 -05:00
Taneli Hukkinen
e1a4b4edd2
Convert `TOMLDecodeError` to `UsageError`
2021-07-06 13:10:44 +03:00
pre-commit-ci[bot]
51f645e567
[pre-commit.ci] auto fixes from pre-commit.com hooks
...
for more information, see https://pre-commit.ci
2021-07-06 07:18:57 +00:00
Florian Bruhin
953fdabaf0
Adjust doc links for new scheme
...
Closes #8831
2021-07-06 09:11:35 +02:00
Taneli Hukkinen
e942b12b94
Support TOML v1.0.0 syntax in `pyproject.toml`
2021-07-06 00:26:01 +03:00
Bruno Oliveira
109312ba86
Make --version write to stdout rather than stderr
...
Fix #8246
2021-06-28 15:56:26 -03:00
Florian Bruhin
c4c3b6d4fd
Adjust fixme comments ( #8811 )
2021-06-28 17:41:22 +00:00