Fix zero-indexed column numbering

We accidentally changed column numbering from one-indexed to
zero-indexed.
This commit is contained in:
Ian Cordasco 2016-07-26 19:15:08 -05:00
parent ec6165e9d8
commit 6eca38f2f2
No known key found for this signature in database
GPG key ID: 656D3395E4A9791A
5 changed files with 11 additions and 4 deletions

View file

@ -3,6 +3,9 @@
- Fix local config file discovery. (See also `GitLab#181`_) - Fix local config file discovery. (See also `GitLab#181`_)
- Fix indexing of column numbers. We accidentally were starting column indices
at 0 instead of 1.
.. links .. links
.. _GitLab#181: .. _GitLab#181:

View file

@ -139,7 +139,9 @@ class BaseFormatter(object):
if not self.options.show_source or error.physical_line is None: if not self.options.show_source or error.physical_line is None:
return '' return ''
pointer = (' ' * error.column_number) + '^' # Because column numbers are 1-indexed, we need to remove one to get
# the proper number of space characters.
pointer = (' ' * (error.column_number - 1)) + '^'
# Physical lines have a newline at the end, no need to add an extra # Physical lines have a newline at the end, no need to add an extra
# one # one
return error.physical_line + pointer return error.physical_line + pointer

View file

@ -258,7 +258,9 @@ class StyleGuide(object):
:rtype: :rtype:
int int
""" """
error = Error(code, filename, line_number, column_number, text, # NOTE(sigmavirus24): Apparently we're provided with 0-indexed column
# numbers so we have to offset that here.
error = Error(code, filename, line_number, column_number + 1, text,
physical_line) physical_line)
error_is_selected = (self.should_report_error(error.code) is error_is_selected = (self.should_report_error(error.code) is
Decision.Selected) Decision.Selected)

View file

@ -73,7 +73,7 @@ def test_show_source_updates_physical_line_appropriately(line, column):
error = style_guide.Error('A000', 'file.py', 1, column, 'error', line) error = style_guide.Error('A000', 'file.py', 1, column, 'error', line)
output = formatter.show_source(error) output = formatter.show_source(error)
_, pointer = output.rsplit('\n', 1) _, pointer = output.rsplit('\n', 1)
assert pointer.count(' ') == column assert pointer.count(' ') == (column - 1)
def test_write_uses_an_output_file(): def test_write_uses_an_output_file():

View file

@ -176,7 +176,7 @@ def test_handle_error_notifies_listeners(select_list, ignore_list, error_code):
formatter=formatter) formatter=formatter)
with mock.patch('linecache.getline', return_value=''): with mock.patch('linecache.getline', return_value=''):
guide.handle_error(error_code, 'stdin', 1, 1, 'error found') guide.handle_error(error_code, 'stdin', 1, 0, 'error found')
error = style_guide.Error(error_code, 'stdin', 1, 1, 'error found', error = style_guide.Error(error_code, 'stdin', 1, 1, 'error found',
None) None)
listener_trie.notify.assert_called_once_with(error_code, error) listener_trie.notify.assert_called_once_with(error_code, error)