From 2ad69e12ce781c4b9242673893eacb3734d4afde Mon Sep 17 00:00:00 2001 From: "George Y. Kussumoto" Date: Fri, 5 Oct 2018 16:39:49 -0300 Subject: [PATCH] Fix xargs.partition: use sys.getfilesystemencoding The previous `sys.getdefaultencoding` almost always fallsback to `ascii` while `sys.getfilesystemencoding` is utf-8 once in utf-8 mode. --- pre_commit/xargs.py | 2 +- tests/xargs_test.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pre_commit/xargs.py b/pre_commit/xargs.py index 1b237a38..2cbd6c39 100644 --- a/pre_commit/xargs.py +++ b/pre_commit/xargs.py @@ -22,7 +22,7 @@ def _get_command_length(command, arg): if sys.platform == 'win32': return len(full_cmd) - return len(full_cmd.encode(sys.getdefaultencoding())) + return len(full_cmd.encode(sys.getfilesystemencoding())) class ArgumentTooLongError(RuntimeError): diff --git a/tests/xargs_test.py b/tests/xargs_test.py index e68f46c5..73ba9bc6 100644 --- a/tests/xargs_test.py +++ b/tests/xargs_test.py @@ -11,7 +11,7 @@ from pre_commit import xargs def sys_win32_mock(mocker): return mocker.Mock( platform='win32', - getdefaultencoding=mocker.Mock(return_value='utf-8'), + getfilesystemencoding=mocker.Mock(return_value='utf-8'), ) @@ -19,7 +19,7 @@ def sys_win32_mock(mocker): def sys_linux_mock(mocker): return mocker.Mock( platform='linux', - getdefaultencoding=mocker.Mock(return_value='utf-8'), + getfilesystemencoding=mocker.Mock(return_value='utf-8'), )