diff --git a/bugbear.py b/bugbear.py index 429ebd6..b881b8b 100644 --- a/bugbear.py +++ b/bugbear.py @@ -10,9 +10,10 @@ from keyword import iskeyword import attr + import pycodestyle -__version__ = "21.4.2" +__version__ = "21.4.3" LOG = logging.getLogger("flake8.bugbear") @@ -443,6 +444,7 @@ def check_for_b017(self, node): and hasattr(item_context.func, "attr") # noqa W503 and item_context.func.attr == "assertRaises" # noqa W503 and len(item_context.args) == 1 # noqa W503 + and isinstance(item_context.args[0], ast.Name) # noqa W503 and item_context.args[0].id == "Exception" # noqa W503 and not item.optional_vars # noqa W503 ): diff --git a/tests/b017.py b/tests/b017.py index e9b7430..21836a6 100644 --- a/tests/b017.py +++ b/tests/b017.py @@ -1,9 +1,9 @@ """ Should emit: -B017 - on lines 10 +B017 - on lines 20 """ import unittest - +import asyncio CONSTANT = True @@ -13,6 +13,10 @@ def something_else() -> None: print(i) +class Foo: + pass + + class Foobar(unittest.TestCase): def evil_raises(self) -> None: with self.assertRaises(Exception): @@ -26,3 +30,7 @@ def context_manager_raises(self) -> None: def regex_raises(self) -> None: with self.assertRaisesRegex(Exception, "Regex is good"): raise Exception("Regex is good") + + def raises_with_absolute_reference(self): + with self.assertRaises(asyncio.CancelledError): + Foo() diff --git a/tests/test_bugbear.py b/tests/test_bugbear.py index 8bd279f..c6e31bb 100644 --- a/tests/test_bugbear.py +++ b/tests/test_bugbear.py @@ -210,7 +210,7 @@ def test_b017(self): filename = Path(__file__).absolute().parent / "b017.py" bbc = BugBearChecker(filename=str(filename)) errors = list(bbc.run()) - expected = self.errors(B017(18, 8)) + expected = self.errors(B017(22, 8)) self.assertEqual(errors, expected) def test_b301_b302_b305(self):