summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2016-08-22 10:21:50 +0200
committerClaudiu Popa <pcmanticore@gmail.com>2016-08-22 11:21:50 +0300
commit8ec025fa36c9c627bcdd6da7fab56271731d47eb (patch)
tree0fae5f446a2c92d47af3f443d71cfa6f7255d003
parent2b30ab777278358f754c6e7e2d5f761f76274d17 (diff)
downloadastroid-git-8ec025fa36c9c627bcdd6da7fab56271731d47eb.tar.gz
Add pytest 3 compatibility in brain_pytest (#357)
This change adjusts brain_pytest for pytest 3, while also reintroducing pytest 2 compatibility.
-rw-r--r--astroid/brain/brain_pytest.py51
-rw-r--r--astroid/tests/unittest_brain.py13
2 files changed, 56 insertions, 8 deletions
diff --git a/astroid/brain/brain_pytest.py b/astroid/brain/brain_pytest.py
index 6d451f1e..23e2db8e 100644
--- a/astroid/brain/brain_pytest.py
+++ b/astroid/brain/brain_pytest.py
@@ -18,19 +18,64 @@ try:
import _pytest.recwarn
import _pytest.runner
import _pytest.python
+ import _pytest.skipping
+ import _pytest.assertion
except ImportError:
pass
else:
deprecated_call = _pytest.recwarn.deprecated_call
+ warns = _pytest.recwarn.warns
+
exit = _pytest.runner.exit
fail = _pytest.runner.fail
- fixture = _pytest.python.fixture
+ skip = _pytest.runner.skip
importorskip = _pytest.runner.importorskip
+
+ xfail = _pytest.skipping.xfail
mark = _pytest.mark.MarkGenerator()
raises = _pytest.python.raises
- skip = _pytest.runner.skip
- yield_fixture = _pytest.python.yield_fixture
+ # New in pytest 3.0
+ try:
+ approx = _pytest.python.approx
+ register_assert_rewrite = _pytest.assertion.register_assert_rewrite
+ except AttributeError:
+ pass
+
+
+# Moved in pytest 3.0
+
+try:
+ import _pytest.freeze_support
+ freeze_includes = _pytest.freeze_support.freeze_includes
+except ImportError:
+ try:
+ import _pytest.genscript
+ freeze_includes = _pytest.genscript.freeze_includes
+ except ImportError:
+ pass
+
+try:
+ import _pytest.debugging
+ set_trace = _pytest.debugging.pytestPDB().set_trace
+except ImportError:
+ try:
+ import _pytest.pdb
+ set_trace = _pytest.pdb.pytestPDB().set_trace
+ except ImportError:
+ pass
+
+try:
+ import _pytest.fixtures
+ fixture = _pytest.fixtures.fixture
+ yield_fixture = _pytest.fixtures.yield_fixture
+except ImportError:
+ try:
+ import _pytest.python
+ fixture = _pytest.python.fixture
+ yield_fixture = _pytest.python.yield_fixture
+ except ImportError:
+ pass
''')
register_module_extender(MANAGER, 'pytest', pytest_transform)
diff --git a/astroid/tests/unittest_brain.py b/astroid/tests/unittest_brain.py
index 88d39df3..c9bad5cd 100644
--- a/astroid/tests/unittest_brain.py
+++ b/astroid/tests/unittest_brain.py
@@ -499,11 +499,14 @@ class PytestBrainTest(unittest.TestCase):
pytest #@
''')
module = next(ast_node.infer())
- self.assertIn('deprecated_call', module)
- self.assertIn('exit', module)
- self.assertIn('fail', module)
- self.assertIn('fixture', module)
- self.assertIn('mark', module)
+ attrs = ['deprecated_call', 'warns', 'exit', 'fail', 'skip',
+ 'importorskip', 'xfail', 'mark', 'raises', 'freeze_includes',
+ 'set_trace', 'fixture', 'yield_fixture']
+ if pytest.__version__.split('.')[0] == '3':
+ attrs += ['approx', 'register_assert_rewrite']
+
+ for attr in attrs:
+ self.assertIn(attr, module)
class IOBrainTest(unittest.TestCase):