From cd36e9e7797cc4829d08404b5b483a9524157d25 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Sun, 13 Apr 2014 14:29:45 -0700 Subject: [PATCH] Fix Py3 --- pre_commit/prefixed_command_runner.py | 7 +++++++ tests/prefixed_command_runner_test.py | 2 +- tests/repository_test.py | 8 ++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/pre_commit/prefixed_command_runner.py b/pre_commit/prefixed_command_runner.py index 8e3c930d..9649648c 100644 --- a/pre_commit/prefixed_command_runner.py +++ b/pre_commit/prefixed_command_runner.py @@ -2,6 +2,8 @@ import os import os.path import subprocess +from pre_commit import five + class CalledProcessError(RuntimeError): def __init__(self, returncode, cmd, expected_returncode, output=None): @@ -63,6 +65,11 @@ class PrefixedCommandRunner(object): replaced_cmd = _replace_cmd(cmd, prefix=self.prefix_dir) proc = self.__popen(replaced_cmd, **popen_kwargs) stdout, stderr = proc.communicate(stdin) + # TODO: stdout, stderr = from_bytes(stdout), from_bytes(stderr) + if stdout is not None and not isinstance(stdout, five.text): + stdout = five.text(stdout, 'utf-8') + if stderr is not None and not isinstance(stderr, five.text): + stderr = five.text(stderr, 'utf-8') returncode = proc.returncode if retcode is not None and retcode != returncode: diff --git a/tests/prefixed_command_runner_test.py b/tests/prefixed_command_runner_test.py index 07745a41..d6b1f186 100644 --- a/tests/prefixed_command_runner_test.py +++ b/tests/prefixed_command_runner_test.py @@ -21,7 +21,7 @@ def test_CalledProcessError_str(): @pytest.fixture def popen_mock(): popen = mock.Mock(spec=subprocess.Popen) - popen.return_value.communicate.return_value = (mock.Mock(), mock.Mock()) + popen.return_value.communicate.return_value = ('stdout', 'stderr') return popen diff --git a/tests/repository_test.py b/tests/repository_test.py index f2f98720..4c93f354 100644 --- a/tests/repository_test.py +++ b/tests/repository_test.py @@ -55,7 +55,7 @@ def test_run_a_python_hook(config_for_python_hooks_repo): ) assert ret[0] == 0 - assert ret[1] == b"['/dev/null']\nHello World\n" + assert ret[1] == "['/dev/null']\nHello World\n" @pytest.mark.integration @@ -77,7 +77,7 @@ def test_cwd_of_hook(config_for_prints_cwd_repo): ) assert ret[0] == 0 - assert ret[1] == repo.repo_url.encode('utf-8') + b'\n' + assert ret[1] == repo.repo_url + '\n' @pytest.mark.skipif( @@ -90,7 +90,7 @@ def test_run_a_node_hook(config_for_node_hooks_repo): ret = repo.run_hook(PrefixedCommandRunner(C.HOOKS_WORKSPACE), 'foo', []) assert ret[0] == 0 - assert ret[1] == b'Hello World\n' + assert ret[1] == 'Hello World\n' @pytest.mark.integration @@ -101,7 +101,7 @@ def test_run_a_script_hook(config_for_script_hooks_repo): ) assert ret[0] == 0 - assert ret[1] == b'bar\nHello World\n' + assert ret[1] == 'bar\nHello World\n' @pytest.fixture