diff options
| author | Ian Cordasco <graffatcolmingov@gmail.com> | 2016-10-23 07:02:43 -0500 |
|---|---|---|
| committer | Ian Cordasco <graffatcolmingov@gmail.com> | 2016-10-23 07:37:08 -0500 |
| commit | 7998734fe62ce1d037b6b7932e51ec37e949ac59 (patch) | |
| tree | a852190ca59634db3ace410d6573c4b7324b5bb3 /tests | |
| parent | c17043ff3f245e2ead27c6edde3c9f9ddca0e99f (diff) | |
| download | flake8-7998734fe62ce1d037b6b7932e51ec37e949ac59.tar.gz | |
Handle SyntaxErrors after new-lines specially
In some cases, when we handle SyntaxErrors we need to ensure that the
column number is correct for a 1-indexed report. In some cases, we also
need to account for the fact that the SyntaxError has happened "after" a
new-line. To extract and alter the row and column numbers, we've moved
the logic to a private static method on the FileChecker object to avoid
an overly complex method.
Closes #237
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/fixtures/example-code/invalid-syntax.py | 1 | ||||
| -rw-r--r-- | tests/unit/test_file_checker.py | 25 |
2 files changed, 26 insertions, 0 deletions
diff --git a/tests/fixtures/example-code/invalid-syntax.py b/tests/fixtures/example-code/invalid-syntax.py new file mode 100644 index 0000000..db2cc27 --- /dev/null +++ b/tests/fixtures/example-code/invalid-syntax.py @@ -0,0 +1 @@ +foo( diff --git a/tests/unit/test_file_checker.py b/tests/unit/test_file_checker.py new file mode 100644 index 0000000..a2d33fc --- /dev/null +++ b/tests/unit/test_file_checker.py @@ -0,0 +1,25 @@ +"""Unit tests for the FileChecker class.""" +import mock + +from flake8 import checker + + +@mock.patch('flake8.processor.FileProcessor') +def test_run_ast_checks_handles_SyntaxErrors(FileProcessor): + """Stress our SyntaxError handling. + + Related to: https://gitlab.com/pycqa/flake8/issues/237 + """ + processor = mock.Mock(lines=[]) + FileProcessor.return_value = processor + processor.build_ast.side_effect = SyntaxError('Failed to build ast', + ('', 1, 5, 'foo(\n')) + file_checker = checker.FileChecker(__file__, checks={}, options=object()) + + with mock.patch.object(file_checker, 'report') as report: + file_checker.run_ast_checks() + + report.assert_called_once_with( + 'E999', 1, 3, + 'SyntaxError: Failed to build ast', + ) |
