summaryrefslogtreecommitdiff
path: root/src/flake8
diff options
context:
space:
mode:
authorIan Cordasco <graffatcolmingov@gmail.com>2016-07-09 20:21:26 -0500
committerIan Cordasco <graffatcolmingov@gmail.com>2016-07-09 20:21:26 -0500
commit57e82688df3f36d023352e3d12435f36f51ee9ac (patch)
tree1b5b6edddb00a023ee1cdbf770330c441c8a1949 /src/flake8
parentee44be0c82b2d4719426e5cb50f2c51a29398221 (diff)
downloadflake8-57e82688df3f36d023352e3d12435f36f51ee9ac.tar.gz
Handle errors reported in empty files
Some plugins (e.g., flake8-future-import) report errors for empty files. Those plugins default to reporting the line number as 1 which caused earlier versions of Flake8 3.0 beta to crash on an IndexError Closes #157
Diffstat (limited to 'src/flake8')
-rw-r--r--src/flake8/formatting/base.py5
-rw-r--r--src/flake8/processor.py8
2 files changed, 10 insertions, 3 deletions
diff --git a/src/flake8/formatting/base.py b/src/flake8/formatting/base.py
index 4fda6f4..7c2e4b5 100644
--- a/src/flake8/formatting/base.py
+++ b/src/flake8/formatting/base.py
@@ -123,8 +123,9 @@ class BaseFormatter(object):
:rtype:
str
"""
- if not self.options.show_source:
- return None
+ if not self.options.show_source or error.physical_line is None:
+ return ''
+
pointer = (' ' * error.column_number) + '^'
# Physical lines have a newline at the end, no need to add an extra
# one
diff --git a/src/flake8/processor.py b/src/flake8/processor.py
index 1824ed1..76c5512 100644
--- a/src/flake8/processor.py
+++ b/src/flake8/processor.py
@@ -250,7 +250,13 @@ class FileProcessor(object):
def line_for(self, line_number):
"""Retrieve the physical line at the specified line number."""
- return self.lines[line_number - 1]
+ adjusted_line_number = line_number - 1
+ # NOTE(sigmavirus24): Some plugins choose to report errors for empty
+ # files on Line 1. In those casese, we shouldn't bother trying to
+ # retrieve a physical line (since none exist).
+ if 0 <= adjusted_line_number < len(self.lines):
+ return self.lines[adjusted_line_number]
+ return None
def next_line(self):
"""Get the next line from the list."""