Merge pull request #230 from pre-commit/debug_statements_non_utf8
debug statements hook works for non-utf8 files
diff --git a/pre_commit_hooks/debug_statement_hook.py b/pre_commit_hooks/debug_statement_hook.py
index d76e6e6..c5ca387 100644
--- a/pre_commit_hooks/debug_statement_hook.py
+++ b/pre_commit_hooks/debug_statement_hook.py
@@ -35,7 +35,7 @@
def check_file_for_debug_statements(filename):
try:
- ast_obj = ast.parse(open(filename).read(), filename=filename)
+ ast_obj = ast.parse(open(filename, 'rb').read(), filename=filename)
except SyntaxError:
print('{} - Could not parse ast'.format(filename))
print()
diff --git a/tests/debug_statement_hook_test.py b/tests/debug_statement_hook_test.py
index 6d8d7d8..8832245 100644
--- a/tests/debug_statement_hook_test.py
+++ b/tests/debug_statement_hook_test.py
@@ -1,3 +1,7 @@
+# -*- coding: utf-8 -*-
+from __future__ import absolute_import
+from __future__ import unicode_literals
+
import ast
import pytest
@@ -77,3 +81,9 @@
def test_syntaxerror_file():
ret = debug_statement_hook([get_resource_path('cannot_parse_ast.notpy')])
assert ret == 1
+
+
+def test_non_utf8_file(tmpdir):
+ f_py = tmpdir.join('f.py')
+ f_py.write_binary('# -*- coding: cp1252 -*-\nx = "€"\n'.encode('cp1252'))
+ assert debug_statement_hook((f_py.strpath,)) == 0