summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Cordasco <graffatcolmingov@gmail.com>2016-08-28 00:58:19 +0000
committerIan Cordasco <graffatcolmingov@gmail.com>2016-08-28 00:58:19 +0000
commitc17043ff3f245e2ead27c6edde3c9f9ddca0e99f (patch)
tree5f57cc508d8df6e33db44899be1f9ea025183543
parenta09c9acaaf9beb16afdfb788b5b8ab4dd65ca4bd (diff)
parent585628875d29f4a46d8adbccc0e1bfa7b3a4a347 (diff)
downloadflake8-c17043ff3f245e2ead27c6edde3c9f9ddca0e99f.tar.gz
Merge branch 'bug/214' into 'master'
Avoid TypeErrors when handling a SyntaxError See merge request !121
-rw-r--r--src/flake8/style_guide.py5
-rw-r--r--tests/unit/test_style_guide.py13
2 files changed, 17 insertions, 1 deletions
diff --git a/src/flake8/style_guide.py b/src/flake8/style_guide.py
index a1ab473..4d8950c 100644
--- a/src/flake8/style_guide.py
+++ b/src/flake8/style_guide.py
@@ -253,7 +253,10 @@ class StyleGuide(object):
int
"""
# NOTE(sigmavirus24): Apparently we're provided with 0-indexed column
- # numbers so we have to offset that here.
+ # numbers so we have to offset that here. Also, if a SyntaxError is
+ # caught, column_number may be None.
+ if not column_number:
+ column_number = 0
error = Error(code, filename, line_number, column_number + 1, text,
physical_line)
error_is_selected = (self.should_report_error(error.code) is
diff --git a/tests/unit/test_style_guide.py b/tests/unit/test_style_guide.py
index 64a7fcd..8e714b7 100644
--- a/tests/unit/test_style_guide.py
+++ b/tests/unit/test_style_guide.py
@@ -185,6 +185,19 @@ def test_handle_error_notifies_listeners(select_list, ignore_list, error_code):
formatter.handle.assert_called_once_with(error)
+def test_handle_error_does_not_raise_type_errors():
+ """Verify that we handle our inputs better."""
+ listener_trie = mock.create_autospec(notifier.Notifier, instance=True)
+ formatter = mock.create_autospec(base.BaseFormatter, instance=True)
+ guide = style_guide.StyleGuide(create_options(select=['T111'], ignore=[]),
+ listener_trie=listener_trie,
+ formatter=formatter)
+
+ assert 1 == guide.handle_error(
+ 'T111', 'file.py', 1, None, 'error found', 'a = 1'
+ )
+
+
@pytest.mark.parametrize('select_list,ignore_list,error_code', [
(['E111', 'E121'], [], 'E122'),
(['E11', 'E12'], [], 'E132'),