Commit Graph

257 Commits

Author SHA1 Message Date
Bruno Oliveira
ef946d557c Remove resultlog plugin 2020-08-19 08:14:28 -03:00
Bruno Oliveira
f76b162263 Add ref to Python bug 2020-08-14 11:36:07 -03:00
Bruno Oliveira
36c8bb492e get_dirs_from_args handles paths with invalid syntax
Fix #7638
2020-08-12 17:20:09 -03:00
Ran Benita
f8c4e038fd Replace some usages of py.path.local 2020-08-06 18:46:17 +03:00
Ran Benita
70f3ad1c1f config/findpaths: convert from py.path.local to pathlib 2020-08-06 18:46:17 +03:00
Ran Benita
9ab14c6d9c typing: set warn_unreachable
This makes mypy raise an error whenever it detects code which is
statically unreachable, e.g.

    x: int
    if isinstance(x, str):
        ... # Statement is unreachable  [unreachable]

This is really neat and finds quite a few logic and typing bugs.

Sometimes the code is intentionally unreachable in terms of types, e.g.
raising TypeError when a function is given an argument with a wrong
type. In these cases a `type: ignore[unreachable]` is needed, but I
think it's a nice code hint.
2020-08-04 09:59:46 +03:00
Ran Benita
0242de4f56 Format docstrings in a consistent style 2020-08-01 17:14:37 +03:00
Ran Benita
8d98de8f8a typing: set no_implicit_reexport
In Python, if module A defines a name `name`, and module B does `import
name from A`, then another module C can `import name from B`.

Sometimes it is intentional -- module B is meant to "reexport" `name`.
But sometimes it is just confusion/inconsistency on where `name` should
be imported from.

mypy has a flag `--no-implicit-reexport` which puts some order into
this. A name can only be imported from a module if

1. The module defines the name
2. The module's `__all__` includes the name
3. The module imports the name as `from ... import .. as name`.

This flag is included in mypy's `--strict` flag.

I like this flag, but I realize it is a bit controversial, and in
particular item 3 above is a bit unfriendly to contributors who don't
know about it. So I didn't intend to add it to pytest.

But while investigating issue 7589 I came upon mypy issue 8754 which
causes `--no-implicit-reexport` to leak into installed libraries and
causes some unexpected typing differences *in pytest* if the user uses
this flag.

Since the diff mostly makes sense, let's just conform to it.
2020-07-31 10:09:11 +03:00
Bruno Oliveira
93d2ccbfb7 Point to stable docs instead of latest
Now that our master might contain new features, it is best to point
users to the stable docs rather than the latest
2020-07-07 07:45:27 -03:00
Gleb Nikonorov
49ec2aed0f change stacklevel in warnings from 2 to 3 2020-06-28 10:48:33 -04:00
Gleb Nikonorov
c39655725a change if else structure of _warn_bout_missing_assertion 2020-06-27 19:49:19 -04:00
Gleb Nikonorov
72a39117a8 Merge remote-tracking branch 'origin' into issue_7295 2020-06-27 19:43:03 -04:00
gdhameeja
03230b4002 Fix-6906: Added code-highlight option to disable highlighting optionally
Co-authored-by: Ran Benita <ran@unusedvar.com>
2020-06-26 13:24:56 -07:00
Gleb Nikonorov
0dd77b3e39 Merge remote-tracking branch 'origin/master' into issue_7295 2020-06-23 23:21:36 -04:00
Ran Benita
8994e1e3a1 config: make _get_plugin_specs_as_list a little clearer and more general 2020-06-23 11:47:52 +03:00
Ran Benita
4655b79985 config: improve typing 2020-06-22 16:39:14 +03:00
Gleb Nikonorov
ac89d6532a replace stderr warnings with the warnings module 2020-06-20 12:15:58 -04:00
Ram Rachum
dd446bee5e Fix exception causes all over the codebase 2020-06-19 22:02:24 +03:00
Gleb Nikonorov
4cc4ebf3c9 Don't treat ini keys defined in conftest.py as invalid (#7384) 2020-06-18 12:58:41 -03:00
Ronny Pfannschmidt
4e5a7b7d2f Merge pull request #7366 from gnikonorov/issue_7346
Allow users to provide version information to the required_plugins INI key
2020-06-15 20:19:05 +02:00
Ran Benita
4f4c2638d0 Merge pull request #7351 from cool-RR/2020-06-11-raise-from
Fix exception causes in config/__init__.py
2020-06-14 18:03:56 +03:00
Gleb Nikonorov
320625527a Add more tests and docs 2020-06-13 11:22:18 -04:00
Bruno Oliveira
ab6dacf1d1 Introduce --import-mode=importlib (#7246)
Fix #5821

Co-authored-by: Ran Benita <ran@unusedvar.com>
2020-06-13 11:29:01 -03:00
Gleb Nikonorov
8a022c0ce3 test to make sure precommit is fixed 2020-06-13 09:57:13 -04:00
Gleb Nikonorov
7ea116d74c Merge remote-tracking branch 'origin' into issue_7346 2020-06-13 09:54:23 -04:00
Ran Benita
f551cab877 Merge pull request #7358 from bluetech/typing2
More type annotations, fix some typing bugs
2020-06-13 10:44:11 +03:00
Gleb Nikonorov
6f8633cc17 add in solution barring documentation 2020-06-13 02:47:15 -04:00
Bruno Oliveira
aaa6f1c3fa Merge pull request #7330 from gnikonorov/issue_7305 2020-06-12 19:35:38 -03:00
Ram Rachum
caa984c029 Fix exception causes in config/__init__.py 2020-06-12 18:49:57 +03:00
Ran Benita
a5ab7c19fb config: reject minversion if it's a list instead of a single string
Fixes:

src/_pytest/config/__init__.py:1071: error: Argument 1 to "Version" has incompatible type "Union[str, List[str]]"; expected "str"  [arg-type]
2020-06-12 17:34:31 +03:00
Ran Benita
1cf9405075 Fix some type errors around py.path.local
These errors are found using a typed version of py.path.local.
2020-06-12 17:34:31 +03:00
Ran Benita
0256cb3aae hookspec: type annotate pytest_internalerror
Also switch to using ExceptionRepr instead of
`Union[ReprExceptionInfo, ExceptionChainRepr]`
which is somewhat annoying and less future proof.
2020-06-12 17:34:31 +03:00
Ran Benita
f84ffd9747 Remove unused type: ignores
Not needed since update from mypy 0.770 -> 0.780.
2020-06-12 17:34:31 +03:00
Gleb Nikonorov
2c8e356174 rename _emit_warning_or_fail to _warn_or_fail_if_strict and fix a doc typo 2020-06-12 08:27:55 -04:00
Gleb Nikonorov
c18afb59f5 final touches 2020-06-10 19:09:24 -04:00
Gleb Nikonorov
95cb7fb676 review feedback 2020-06-10 00:44:22 -04:00
Fabio Zadrozny
322190fd84 Fix issue where working dir becomes wrong on subst drive on Windows. Fixes #5965 (#6523)
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
2020-06-08 10:56:40 -03:00
Bruno Oliveira
c17d50829f Add pyproject.toml support (#7247) 2020-06-08 10:03:10 -03:00
Gleb Nikonorov
d2bb67bfda validate plugins before keys in config files 2020-06-07 14:10:20 -04:00
Gleb Nikonorov
f760b105ef Touchup pre-PR 2020-06-06 11:06:08 -04:00
Gleb Nikonorov
2a3c21645e Commit solution thus far, needs to be polished up pre PR 2020-06-06 02:38:18 -04:00
Ran Benita
71dfdca4df Enable check_untyped_defs mypy option for src/
This option checks even functions which are not annotated. It's a good
step to ensure that existing type annotation are correct.

In a Pareto fashion, the last few holdouts are always the ugliest,
beware.
2020-06-05 11:34:20 +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
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
43fa1ee8f9 Type annotate some misc places with no particular connection 2020-06-05 11:34:19 +03:00
Bruno Oliveira
cf640a9b67 Merge pull request #7292 from kerizane/7259_iniconfig 2020-06-03 19:00:48 -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
Keri Volans
2748feed38 7291: Replace py.iniconfig with iniconfig 2020-06-01 18:09:57 +01:00
Gleb Nikonorov
92d15c6af1 review feedback 2020-05-31 11:33:31 -04:00
Gleb Nikonorov
db203afba3 Add in --strict-config flag to force warnings to errors 2020-05-31 02:45:40 -04:00