Commit Graph

2298 Commits

Author SHA1 Message Date
Ran Benita
f8bb61ae5b Type annotate _pytest.warnings 2020-06-05 11:34:20 +03:00
Ran Benita
01797e6370 Type annotate _pytest.debugging (a bit) 2020-06-05 11:34:20 +03:00
Ran Benita
216a010ab7 Type annotate _pytest.junitxml 2020-06-05 11:34:20 +03:00
Ran Benita
3e351afeb3 Type annotate _pytest.capture 2020-06-05 11:34:20 +03:00
Ran Benita
b51ea4f1a5 Type annotate _pytest.unittest 2020-06-05 11:34:20 +03:00
Ran Benita
db52928684 Type annotate _pytest.logging 2020-06-05 11:34:20 +03:00
Ran Benita
90e58f8961 Type annotate some parts related to runner & reports 2020-06-05 11:34:20 +03:00
Ran Benita
709bcbf3c4 Type annotate _pytest.mark.evaluate 2020-06-05 11:34:20 +03:00
Ran Benita
fc325bc0c3 Type annotate more of _pytest.nodes 2020-06-05 11:34:19 +03:00
Ran Benita
32dd0e87cb Type annotate _pytest.doctest 2020-06-05 11:34:19 +03:00
Ran Benita
387d9d04f7 Type annotate tricky reorder_items() function in fixtures.py 2020-06-05 11:34:19 +03:00
Ran Benita
e68a26199c Type annotate misc functions 2020-06-05 11:34:19 +03:00
Ran Benita
d95132178c Type annotate _pytest.assertion 2020-06-05 11:34:19 +03:00
Ran Benita
30e3d473c4 Type annotate _pytest._io.saferepr 2020-06-05 11:34:19 +03:00
Ran Benita
247c4c0482 Type annotate some more hooks & impls 2020-06-05 11:34:19 +03:00
Ran Benita
ef34729541 Type annotate fixtures.py & related 2020-06-05 11:34:19 +03:00
Ran Benita
be00e12d47 Type annotate main.py and some parts related to collection 2020-06-05 11:34:19 +03:00
Ran Benita
f8de424241 Type annotate CallSpec2 2020-06-05 11:34:19 +03:00
Ran Benita
0fb081aec6 Type annotate some hookspecs & impls
Annotate some "easy" arguments of hooks that repeat in a lot of internal
plugins.

Not all of the arguments are annotated fully for now.
2020-06-05 11:34:19 +03:00
Ran Benita
ff8b7884e8 Type annotate ParameterSet 2020-06-05 11:34:19 +03:00
Ran Benita
43fa1ee8f9 Type annotate some misc places with no particular connection 2020-06-05 11:34:19 +03:00
Ran Benita
e7c26a92d7 Merge pull request #7253 from bluetech/fixture-special-case
fixtures: remove special cases when deciding when pytest.fixture() is a direct decoration
2020-06-05 11:33:43 +03:00
Bruno Oliveira
cf640a9b67 Merge pull request #7292 from kerizane/7259_iniconfig 2020-06-03 19:00:48 -03:00
Bruno Oliveira
61a6ac9705 Merge pull request #7242 from nicoddemus/fix-flaky-test
Introduce _pytest.timing as a way to control timing during internal tests
2020-06-02 20:25:02 -03:00
Bruno Oliveira
8ac18bbecb Show invalid ini keys sorted
Otherwise this relies on the dictionary order of `config.inicfg`, which
is insertion order in py36+ but "random" order in py35.
2020-06-02 16:01:47 -03:00
Ran Benita
85b5a289f0 warnings: fix missing None in existing hook & add some docs (#7288) 2020-06-02 19:59:25 +03:00
Bruno Oliveira
7a8b8a5c9f Merge branch 'master' into fix-flaky-test 2020-06-02 11:33:15 -03:00
Ronny Pfannschmidt
8faf1e8eca Merge pull request #7286 from gnikonorov/issue_6856
Output a warning to stderr when an invalid key is read from an INI config file
2020-06-02 15:47:02 +02:00
Tor Colvin
fe64093411 Fix removal of very long paths on Windows (#6755)
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
2020-06-02 08:56:33 -03:00
Keri Volans
2748feed38 7291: Replace py.iniconfig with iniconfig 2020-06-01 18:09:57 +01:00
Bruno Oliveira
70b5bdf4ba Merge pull request #7264 from bluetech/wcwidth
Improve our own wcwidth implementation and remove dependency on wcwidth package
2020-05-31 12:37:58 -03:00
Gleb Nikonorov
92d15c6af1 review feedback 2020-05-31 11:33:31 -04:00
Ronny Pfannschmidt
c16ede5ce6 Merge pull request #7255 from gnikonorov/issue_4049
Add new hook pytest_warning_recorded
2020-05-31 12:47:46 +02:00
Gleb Nikonorov
db203afba3 Add in --strict-config flag to force warnings to errors 2020-05-31 02:45:40 -04:00
Gleb Nikonorov
eef4f87e7b Output a warning to stderr when an invalid key is read from an INI config file 2020-05-30 20:36:02 -04:00
Bruno Oliveira
757bded135 Use Path() instead of str for path comparison
On Windows specifically is common to have drives diverging just by
casing ("C:" vs "c:"), depending on the cwd provided by the user.
2020-05-30 20:05:21 -03:00
Daniel Hahler
fb9f277a99 Node._repr_failure_py: use abspath with changed cwd
Fixes https://github.com/pytest-dev/pytest/issues/6428.
2020-05-30 20:02:47 -03:00
Bruno Oliveira
56bf819c2f Do not call TestCase.tearDown for skipped tests (#7236)
Fix #7215
2020-05-30 14:33:22 -03:00
Katarzyna Król
94c7b8b47c Issue 1316 - longrepr is a string when pytrace=False (#7100) 2020-05-30 14:10:58 +03:00
Ran Benita
2ee90887b7 code: remove last usage of py.error
`str(self.path)` can't raise at all, so it can just be removed.
2020-05-28 12:12:10 +03:00
Gleb Nikonorov
14de08011b fix the unit tests, add the proper deprecation warning, and add in a changelog entry 2020-05-27 23:03:07 -04:00
Anthony Sottile
b3db440d4c Merge pull request #7257 from DahlitzFlorian/fix-issue-6956
Prevent pytest from printing ConftestImportFailure traceback
2020-05-27 13:49:43 -07:00
Ran Benita
7a704288df capture: remove unneeded getattr
This attribute is set in __init__ and not deleted. Other methods do it
already but this one wasn't updated.
2020-05-27 15:27:16 +03:00
Ran Benita
a35800c2e1 capture: formalize and check allowed state transition in capture classes
There are state transitions start/done/suspend/resume and two additional
operations snap/writeorg.

Previously it was not well defined in what order they can be called, and
which operations are idempotent.

Formalize this and enforce using assert checks with informative error
messages if they fail (rather than random AttributeErrors).
2020-05-27 15:27:15 +03:00
Ran Benita
fd3ba053cf capture: don't assume that the tmpfile is backed by a BytesIO
Since tmpfile is a parameter to SysCapture, it shouldn't assume things
unnecessarily, when there is an alternative.
2020-05-27 15:19:30 +03:00
Ran Benita
97bcf5a3a2 capture: reorder file into sections and avoid forward references
Make it easier to read the file in progression, and avoid forward
references for upcoming type annotations.

There is one cycle, CaptureManager <-> CaptureFixture, which is hard to
untangle.

(This commit should be added to `.gitblameignore`).
2020-05-27 15:19:28 +03:00
Gleb Nikonorov
d742b386c3 provide missing location parameter, and add type annotations to the hookspec 2020-05-27 00:53:31 -04:00
Ran Benita
aca534c67d Improve our own wcwidth implementation and remove dependency on wcwidth package
`TerminalWriter`, imported recently from `py`, contains its own
incomplete wcwidth (`char_with`/`get_line_width`) implementation. The
`TerminalReporter` also needs this, but uses the external `wcwidth`
package.

This commit brings the `TerminalWriter` implementation up-to-par with
`wcwidth`, moves to implementation to a new file `_pytest._io.wcwidth`
which is used everywhere, and removes the dependency.

The differences compared to the `wcwidth` package are:

- Normalizes the string before counting.

- Uses Python's `unicodedata` instead of vendored Unicode tables. This
  means the data corresponds to the Python's version Unicode version
  instead of the `wcwidth`'s package version.

- Apply some optimizations.
2020-05-26 17:14:01 +03:00
Ran Benita
5507752c53 fixtures: remove special cases when deciding when pytest.fixture() is a direct decoration
pytest.fixture() can be used either as

    @pytest.fixture
    def func(): ...

or as

    @pytest.fixture()
    def func(): ...

or (while maybe not intended)

    func = pytest.fixture(func)

so it needs to inspect internally whether it got a function in the first
positional argument or not.

Previously, there were was oddity. In the following,

    func = pytest.fixture(func, autouse=True)
    # OR
    func = pytest.fixture(func, parms=['a', 'b'])

The result is as if `func` wasn't passed.

There isn't any reason for this special that I can understand, so remove
it.
2020-05-26 11:48:40 +03:00
Florian Dahlitz
95bd232e57 Apply suggestions from @bluetech 2020-05-26 10:31:53 +02:00