Commit Graph

66 Commits

Author SHA1 Message Date
Anthony Sottile
12bf458719 Merge pull request #5373 from asottile/revert_all_handling
Revert unrolling of `all()`
2019-06-03 09:20:48 -07:00
Bruno Oliveira
f078984c2e Fix all() unroll for non-generators/non-list comprehensions (#5360)
Fix all() unroll for non-generators/non-list comprehensions
2019-06-02 09:12:39 -07:00
Daniel Hahler
e032904413 Merge master into features 2019-05-28 01:46:16 +02:00
Bruno Oliveira
2b9ca34280 Unroll calls to any #5062 (#5103)
Unroll calls to any #5062
2019-05-27 20:17:44 -03:00
Anthony Sottile
13f02af97d Switch to importlib-metadata 2019-05-27 13:24:08 -07:00
Tomer Keren
22d91a3c3a Unroll calls to all on python 2 2019-05-25 19:34:08 +03:00
Tomer Keren
322a0f0a33 Fix mention of issue #5062 in docstrings 2019-05-25 19:34:08 +03:00
Tomer Keren
58149459a5 Mark visit_all as a private method 2019-05-25 19:34:08 +03:00
Tomer Keren
437d6452c1 Expand list comprehensions as well 2019-05-25 19:34:08 +03:00
Tomer Keren
e37ff3042e Check calls to all only if it's a name and not an attribute 2019-05-25 19:34:08 +03:00
Tomer Keren
470e686a70 Rewrite unrolled assertion with a new rewriter,correctly append the unrolled for loop 2019-05-25 19:34:08 +03:00
Tomer Keren
765f75a8f1 Replace asserts of any with an assert in a for 2019-05-25 19:34:08 +03:00
Bruno Oliveira
66f20b6f5e Fix invalid Python file encoding "utf8" (#5252)
Fix invalid Python file encoding "utf8"
2019-05-23 20:24:23 -03:00
Daniel Hahler
93fd9debe3 Allow disabling of python plugin
Fixes https://github.com/pytest-dev/pytest/issues/5277.
2019-05-17 18:17:14 +02:00
Anthony Sottile
dc75b6af47 Use fix-encoding-pragma pre-commit hook 2019-05-14 15:56:31 -07:00
Bruno Oliveira
ccf6c3cb46 Merge remote-tracking branch 'upstream/master' into merge-master-into-features 2019-05-09 19:22:40 -03:00
Anthony Sottile
d1a48ad68f Use exec directly 2019-05-06 23:07:39 -07:00
Bruno Oliveira
53cd7fd2ea Introduce new warning subclasses
Fix #5177
2019-04-28 10:38:25 -03:00
Daniel Hahler
adb8edbae1 assertion rewriting: use actual helper name
This makes it easier / possible to grep.
2019-04-17 14:41:34 +02:00
Daniel Hahler
7afe17740f Merge master into features 2019-03-15 00:52:12 +01:00
Bruno Oliveira
44cb51010c Improve CHANGELOG and code comment 2019-03-13 18:52:30 -03:00
Bernhard M. Wiedemann
489c61a22d Allow tests to pass after 2038
without this change, the python-apache-libcloud tests failed
in the year 2039 with

     fp.write(struct.pack("<ll", mtime, size))
 E   error: 'l' format requires -2147483648 <= number <= 2147483647
2019-03-10 05:22:21 +01:00
Daniel Hahler
9cb71af9e5 _pytest.assertion.rewrite: move _format_explanation import 2019-03-01 14:13:28 +01:00
Bruno Oliveira
ade5f2c8c5 Merge remote-tracking branch 'upstream/master' into merge-master-into-features 2019-01-29 19:36:56 -02:00
Anthony Sottile
0c6ca0da62 Fix usages of py.io.saferepr 2019-01-20 16:36:23 -08:00
Anthony Sottile
ec5e279f93 Remove and ban use of py.builtin 2019-01-20 11:59:48 -08:00
Daniel Hahler
1a358df998 Merge master into features 2019-01-14 17:15:39 +01:00
Anthony Sottile
16546b7342 Remove some dead code
- I wrote a thing: https://github.com/asottile/dead
- wanted to try it out, there's lots of false positives and I didn't look
  through all the things it pointed out but here's some
2019-01-13 20:41:30 -08:00
Anton Lodder
3241fc3103 Don't fail if hasattr fails when rewriting assertions
When rewriting assertions, pytest makes a call to
`__name__` on each object in a comparision. If one of
the objects has reimplemented `__getattr__`, they could
fail trying to fetch `__name__` with an error other than
`AttributeError`, which is what `hasattr` catches.

In this case, the stack trace for the failed `__getattr__`
call will show up in the pytest output, even though
it isn't related to the test failing.

This change fixes that by catching exceptions
that `hasattr` throws.
2019-01-10 20:45:15 -05:00
Bruno Oliveira
fd48cd57f9 Remove config.warn, Node.warn; pytest_logwarning issues a warning when implemented
Fix #3078
2018-12-14 12:50:18 -02:00
Daniel Hahler
5ebacc49c6 Harden tests, fix doc/msg 2018-12-05 19:22:44 +01:00
Tomer Keren
8fd60483ef Don't insert warnings when not in a module 2018-12-05 19:49:54 +02:00
Tomer Keren
7a7ad0c120 Shorten docstring for warn_about_none_ast 2018-12-05 17:47:34 +02:00
Tomer Keren
41031fce2f Address code review 2018-12-05 17:18:57 +02:00
Tomer Keren
e1e4b226c6 👌 Address code review
Edited the changelog for extra clarity, and to fire off auto-formatting

Oddly enough, keeping `filename='{filename!r}'` caused an error while
collecting tests, but getting rid of the single ticks fixed it
Hopefully closes #3191
2018-12-05 10:52:12 +02:00
Tomer Keren
3e6f1fa2db Simplify warning creation by using ast.parse
in py2 it's a ast.Name where in py3 it's a ast.NamedConstant

Fixes namespace by using import from
2018-12-05 10:42:05 +02:00
Tomer Keren
59a11b6a5d Check for 'assert None' and warn appropriately
:bug:Fix warn ast bugs

:bug:Fix inner-ast imports by using importFrom

Alternetavly ast_call_helper could be retooled to use ast.attribute(...)
2018-12-05 10:41:42 +02:00
Bruno Oliveira
aa765cf8c2 Adjust stacklevel of "config" warnings
Related to #4439
2018-11-22 14:44:01 -02:00
Anthony Sottile
690a63b921 Fix assertion rewriting involving Starred + side-effects 2018-11-17 10:42:51 -08:00
Anthony Sottile
2368fbb63c Apply reorder-python-imports to all files 2018-10-25 00:01:29 -07:00
Anthony Sottile
cb39bd0651 Fixes for flake8 master 2018-10-22 08:50:00 -07:00
Bruno Oliveira
9646a1cd7a Merge remote-tracking branch 'upstream/master' into merge-master-into-features 2018-10-15 12:55:28 -03:00
Anthony Sottile
2e42d937dc Display the filename when encountering SyntaxWarning.
```console
$ cd t && rm -rf __pycache__ && pytest t.py -q -c /dev/null; cd ..
.                                                                        [100%]
=============================== warnings summary ===============================
<unknown>:2: DeprecationWarning: invalid escape sequence \.

-- Docs: https://docs.pytest.org/en/latest/warnings.html
1 passed, 1 warnings in 0.01 seconds

```

```console
$ cd t && rm -rf __pycache__ && pytest t.py -q -c /dev/null; cd ..
.                                                                        [100%]
=============================== warnings summary ===============================
/tmp/pytest/t/t.py:2: DeprecationWarning: invalid escape sequence \.
  '\.wat'

-- Docs: https://docs.pytest.org/en/latest/warnings.html
1 passed, 1 warnings in 0.01 seconds
```
2018-10-14 16:11:47 -07:00
Ronny Pfannschmidt
2831cb9ab5 unify paths.py and pathlib.py 2018-10-11 07:15:09 +02:00
Ronny Pfannschmidt
85cc9b8f12 move all the things into _pytest.pathlib 2018-10-11 07:15:08 +02:00
iwanb
c61ff31ffa Fix #3539: reload module with assertion rewrite import hook 2018-09-23 13:05:55 +02:00
Anthony Sottile
7122fa5613 Fix UnicodeDecodeError in assertion with mixed non-ascii bytes repr + text 2018-09-19 20:24:00 -07:00
Bruno Oliveira
37d2469266 Use a PurePath instance to do matching against patterns in assertion rewrite
This way we don't need to have real file system path, which prevents the
original #3973 bug.
2018-09-17 20:29:09 -03:00
Bruno Oliveira
1df6d28080 Fix assertion rewriter crash if cwd changes mid-testing
Unfortunately we need to get a `py.path.local` object to perform the fnmatch
operation, it is different from the standard `fnmatch` module because it
implements its own custom logic. So we need to use `py.path` to perform
the fnmatch for backward compatibility reasons.

Ideally we should be able to use a "pure path" in `pathlib` terms (a path
not bound to the file system), but we don't have those in pylib.

Fix #3973
2018-09-17 20:04:44 -03:00
Bruno Oliveira
69b34f7658 Merge remote-tracking branch 'upstream/master' into release-3.8.0 2018-09-05 18:02:02 -03:00