From 9697b0ff2f6bb5c197537cd2da803b2375184cb3 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Sun, 12 Jun 2022 12:04:56 -0400 Subject: [PATCH] don't crash when select / extend_select are None --- bugbear.py | 3 ++- tests/test_bugbear.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/bugbear.py b/bugbear.py index 06e598d..e47ede1 100644 --- a/bugbear.py +++ b/bugbear.py @@ -155,12 +155,13 @@ def should_warn(self, code): return True for i in range(2, len(code) + 1): - if code[:i] in self.options.select: + if self.options.select and code[:i] in self.options.select: return True # flake8 >=4.0: Also check for codes in extend_select if ( hasattr(self.options, "extend_select") + and self.options.extend_select and code[:i] in self.options.extend_select ): return True diff --git a/tests/test_bugbear.py b/tests/test_bugbear.py index a974cf4..12469e6 100644 --- a/tests/test_bugbear.py +++ b/tests/test_bugbear.py @@ -438,6 +438,16 @@ def test_b9_extend_select(self): ), ) + def test_b9_flake8_next_default_options(self): + filename = Path(__file__).absolute().parent / "b950.py" + + # in flake8 next, unset select / extend_select will be `None` to + # signify the default values + mock_options = Namespace(select=None, extend_select=None) + bbc = BugBearChecker(filename=str(filename), options=mock_options) + errors = list(bbc.run()) + self.assertEqual(errors, []) + def test_selfclean_bugbear(self): filename = Path(__file__).absolute().parent.parent / "bugbear.py" proc = subprocess.run(