Ronny Pfannschmidt
f1d51ba1f5
deprecate the pytest.collect module
...
changelog
minimal unittest for collect module deprecations
\!fixup - changelog typo
2020-03-30 21:53:07 +02:00
Ronny Pfannschmidt
eab2831671
fix #6951 : allow to write TerminalReporter.writer
2020-03-30 21:31:53 +02:00
smarie
95fadd5740
Improved time counter used to compute test durations. ( #6939 )
...
Co-authored-by: Sylvain MARIE <sylvain.marie@se.com >
Co-authored-by: Ran Benita <ran@unusedvar.com >
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com >
2020-03-29 15:20:09 +03:00
Ran Benita
a785754523
Change EnvironmentError, IOError to OSError - they are aliases
...
Since Python 3.3, these are aliases for OSError:
https://docs.python.org/3/whatsnew/3.3.html#pep-3151-reworking-the-os-and-io-exception-hierarchy
2020-03-27 18:40:23 +03:00
Ran Benita
83e18776f6
Merge pull request #6818 from blueyed/fix-assert-exc-upstream
...
assertion: rewrite: only catch EnvironmentError
2020-03-27 18:33:17 +03:00
Bruno Oliveira
429a28eca0
Merge pull request #6782 from nicoddemus/code-highlight-followup
...
Assorted improvements following up #6658
2020-03-27 08:58:50 -03:00
Daniel Hahler
aae0579bcd
doc: use envvar directive for environment variables ( #6874 )
...
This changes the link anchors in "reference.html", from e.g.
`reference.html#pytest-current-test` to
`reference.html#envvar-PYTEST_CURRENT_TEST`, but I think that is OK, and
not worth adding labels for the old anchors.
2020-03-27 02:40:25 +01:00
Daniel Hahler
327ec54248
Doc fixes ( #6861 )
2020-03-27 02:22:03 +01:00
Ran Benita
817537523c
Upgrade mypy 0.761 -> 0.770
...
https://mypy-lang.blogspot.com/2020/03/mypy-0770-released.html
2020-03-21 17:16:30 +02:00
Ran Benita
ded30238f7
Merge pull request #6926 from bluetech/fix-capsysbin-print
...
Fix crash when printing while capsysbinary is active
2020-03-17 11:21:19 +02:00
Daniel Hahler
1fda861190
Fix crash when printing while capsysbinary is active
...
Previously, writing to sys.stdout/stderr in text-mode (e.g.
`print('foo')`) while a `capsysbinary` fixture is active, would crash
with:
/usr/lib/python3.7/contextlib.py:119: in __exit__
next(self.gen)
E TypeError: write() argument must be str, not bytes
This is due to some confusion in the types. The relevant functions are
`snap()` and `writeorg()`. The function `snap()` returns what was
captured, and the return type should be `bytes` for the binary captures
and `str` for the regular ones. The `snap()` return value is eventually
passed to `writeorg()` to be written to the original file, so it's input
type should correspond to `snap()`. But this was incorrect for
`SysCaptureBinary`, which handled it like `str`.
To fix this, be explicit in the `snap()` and `writeorg()`
implementations, also of the other Capture types.
We can't add type annotations yet, because the current inheritance
scheme breaks Liskov Substitution and mypy would complain. To be
refactored later.
Fixes: https://github.com/pytest-dev/pytest/issues/6871
Co-authored-by: Ran Benita (some modifications & commit message)
2020-03-16 18:21:33 +02:00
Ran Benita
c26bbdfaf0
Merge pull request #6854 from gdhameeja/Fix-6822
...
Check invalid operations for -k
2020-03-15 09:53:36 +02:00
Ran Benita
29e4cb5d45
Remove safe_text_dupfile() and simplify EncodedFile
...
I tried to understand what the `safe_text_dupfile()` function and
`EncodedFile` class do. Outside tests, `EncodedFile` is only used by
`safe_text_dupfile`, and `safe_text_dupfile` is only used by
`FDCaptureBinary.__init__()`. I then started to eliminate always-true
conditions based on the single call site, and in the end nothing was
left except of a couple workarounds that are still needed.
2020-03-14 12:57:08 +02:00
Bruno Oliveira
2eedf9c2aa
Merge pull request #6910 from nicoddemus/resultlog-logreport
...
Handle unknown stats in pytest_report_teststatus hook
2020-03-13 09:30:04 -03:00
Bruno Oliveira
0c58ed2cc0
Handle unknown stats in pytest_report_teststatus hook
...
Noticed that the pytest_report_teststatus of reportlog was not properly
handling unknown statuses while taking a look at:
https://github.com/pytest-dev/pytest-rerunfailures/issues/103
2020-03-12 20:52:22 -03:00
Ran Benita
6954b3b0dc
Assume os.dup is always available
...
The commit which added the checks for os.dup a15afb5e48
suggests it was done for Jython. But pytest doesn't support Jython
anymore (Jython is Python 2 only).
Furthermore, it looks like the faulthandler plugin (bundled in pytest
and enabled by default) uses os.dup() unprotected and there have not
been any complaints.
So seems better to just remove these checks, and only add if someone
with a legitimate use case complains.
2020-03-12 16:47:15 +02:00
Ran Benita
4f8fff9cab
Merge pull request #6868 from bluetech/simplify-exc
...
Simplify some exception handling code
2020-03-10 20:32:08 +02:00
Daniel Hahler
ac7ebfa22e
doc: internal: fix MultiCapture.readouterr ( #6878 )
...
Remove wrong docstring: it might actually return bytes.
Replace it with a type annotation which is clear enough.
2020-03-08 12:38:21 +01:00
Daniel Hahler
db92cea14c
black: --target-version py35 ( #6872 )
2020-03-08 01:24:31 +01:00
Daniel Hahler
bce1d40fb0
tests: harden test_reprcompare_notin, factor out callop ( #6764 )
...
* tests: assertion: factor out `callop`, typing
* tests: harden test_reprcompare_notin
2020-03-08 01:23:19 +01:00
Daniel Hahler
dc86fb6758
pre-commit run --all-files
2020-03-07 23:47:55 +01:00
gdhameeja
599bf075db
Check invalid operations for -k
...
`KeywordMapping` returns a bool on lookup which when passed to eval
fail on certain operations such as index access and attribute access.
We catch all exceptions and raise a `UsageError`.
2020-03-07 20:17:01 +05:30
Ran Benita
978b315861
Simplify some exception handling code
...
Mostly avoid unnecessary usage of sys.exc_info(). Since Python3,
exception objects themselves have all that's needed. They are also
easier to type.
2020-03-07 13:18:54 +02:00
Ran Benita
580edc13e7
Merge pull request #6867 from bluetech/inline-pyobjmixin
...
Inline PyobjContext
2020-03-07 11:58:38 +02:00
Ran Benita
b7f2e3d4f5
Inline PyobjContext
...
When it was introduced in 8adac2878f it
seems to have had some use, but now it doesn't.
2020-03-06 14:55:20 +02:00
Ran Benita
f011bc642c
Store mark's evalcache in config's store instead of attribute
...
Part of moving away from ad-hoc attributes to using the config's store.
2020-03-06 11:42:20 +02:00
Ran Benita
b1d7a187f2
Add setdefault() method to Store
...
Can be useful in some cases.
2020-03-06 11:42:20 +02:00
Ran Benita
678d65f051
Store AssertionState in config's store instead of attribute
...
Part of moving away from ad-hoc attributes to using the config's store.
2020-03-06 11:27:01 +02:00
Daniel Hahler
fcd3fad03d
Minor internal improvements to logging's log_level ( #6849 )
2020-03-06 03:12:57 +01:00
Bruno Oliveira
19bb2c6235
Merge pull request #6859 from nicoddemus/kw-mapping-attr-typing
...
Use attrs in KeywordMapping
2020-03-05 08:47:22 -03:00
Bruno Oliveira
bc8e52c3c2
Use attrs in KeywordMapping
...
Also added type hinting.
2020-03-05 08:33:20 -03:00
Daniel Hahler
d9a4626944
fixup! Fix documentation for Config/InvocationParams
2020-03-05 06:38:44 +01:00
Daniel Hahler
ffa2658971
doc: reports: count_towards_summary: is a property
...
And therefore does not really `return`. It confused me that there was
no `source` link in the docs, which is only there for functions.
2020-03-05 05:57:43 +01:00
Daniel Hahler
c39a85e5f4
doc: revisit UnformattedWarning
2020-03-05 03:15:14 +01:00
Daniel Hahler
b90f57d25c
Remove wrong/outdated doc with UnformattedWarning
...
It was introduced in da6830f19 (added to `_pytest.deprecated`, but then
moved to `_pytest.warning_types`).
2020-03-05 03:13:28 +01:00
Daniel Hahler
77adb33ec6
doc: use show-inheritance with warnings, revisit docstrings
...
Revisits the docstring for `PytestExperimentalApiWarning` and
`PytestUnhandledCoroutineWarning`.
2020-03-05 02:56:18 +01:00
Daniel Hahler
1a8d427e98
doc: src/_pytest/deprecated.py: links
2020-03-05 02:47:21 +01:00
Kyle Altendorf
dce2621710
Add pytest-twisted to list of async def handling plugins
...
https://github.com/pytest-dev/pytest-twisted/tree/v1.12#ensuredeferred
[pytest-twisted](https://github.com/pytest-dev/pytest-twisted ) supports `async def` test functions and fixtures as well as `async def`/`yield` fixtures.
2020-03-04 17:42:08 -05:00
Daniel Hahler
acec0b688f
Fix usage of pytester with doctests ( #6802 )
...
Use `request.node.name` instead of `request.function.__name__`:
`request.function` is `None` with `DoctestItem`s.
2020-03-04 05:33:50 +01:00
Daniel Hahler
37d074efc8
Fix (internal) documentation for pytester's LineComp ( #6850 )
2020-03-04 05:25:32 +01:00
Ronny Pfannschmidt
9fd71d6fe0
fix #571 : deprecate pytest_collect_directory as ... ( #6847 )
...
Deprecate pytest_collect_directory
Fix #571
Co-authored-by: Daniel Hahler <github@thequod.de >
2020-03-03 18:58:14 -03:00
Daniel Hahler
b11bfa106c
Use attrs with all Repr classes ( #6739 )
...
Co-authored-by: Ran Benita <ran234@gmail.com >
2020-03-03 21:53:28 +01:00
Daniel Hahler
dc5219a9c0
Fix documentation for Config/InvocationParams
2020-03-03 21:15:06 +01:00
Daniel Hahler
a42e85ed54
Fix documentation for _pytest.pytester.RunResult
...
When using `(i)var` in the class docstring it would link `duration` to
`_pytest.runner.TestReport.duration`.
This moves the docstrings to the attributes properly.
2020-03-03 18:12:12 +01:00
Daniel Hahler
ddc8edffbc
logging: minor typing, rename function
...
`get_log_level_for_setting` reflects better what the function does, and
it does not require a (trivial) docstring.
2020-03-01 22:02:46 +01:00
Daniel Hahler
bdd22fdd52
logging: improve help for log_level
2020-03-01 22:02:46 +01:00
Ronny Pfannschmidt
194b52145b
Merge pull request #6834 from RonnyPfannschmidt/fix-6833-summarize-warning-item-locations
...
summarize warning summaries if the number of locations is high
2020-03-01 20:21:36 +01:00
Ronny Pfannschmidt
23c43a37e0
summarize warning summaries if the number of locations is high
2020-03-01 14:08:15 +01:00
Bruno Oliveira
92767fec51
Merge pull request #6836 from bluetech/store
...
Add a typing-compatible mechanism for ad-hoc attributes on various objects
2020-03-01 09:30:10 -03:00
Ran Benita
2f60548e08
Mark AssertionRewritingHook as implementing importlib.abc.Loader
...
It implements the required methods. This is useful for typing but also a
nice indicator.
2020-02-29 16:55:56 +02:00