diff options
author | Florian Bruhin <me@the-compiler.org> | 2016-08-22 10:21:50 +0200 |
---|---|---|
committer | Claudiu Popa <pcmanticore@gmail.com> | 2016-08-22 11:21:50 +0300 |
commit | 8ec025fa36c9c627bcdd6da7fab56271731d47eb (patch) | |
tree | 0fae5f446a2c92d47af3f443d71cfa6f7255d003 | |
parent | 2b30ab777278358f754c6e7e2d5f761f76274d17 (diff) | |
download | astroid-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.py | 51 | ||||
-rw-r--r-- | astroid/tests/unittest_brain.py | 13 |
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): |