From 89464c8f82ea3532a2e467b49d142906c5fa0f3a Mon Sep 17 00:00:00 2001 From: Ross Patterson Date: Mon, 12 Aug 2019 01:07:22 -0700 Subject: [PATCH] Windows: Fix newline differences --- ffmpeg/_build.py | 7 ++++--- ffmpeg/_detect.py | 4 ++-- ffmpeg/_probe.py | 7 ++++--- ffmpeg/tests/test_ffmpeg.py | 12 ++++++++---- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/ffmpeg/_build.py b/ffmpeg/_build.py index d75d17f..3b6192c 100644 --- a/ffmpeg/_build.py +++ b/ffmpeg/_build.py @@ -63,13 +63,14 @@ def _run(args): Run the command and return stdout but only print stderr on failure. """ process = subprocess.Popen( - args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + universal_newlines=True) stdout, stderr = process.communicate() if process.returncode != 0: - logger.error(stderr.decode()) + logger.error(stderr) raise subprocess.CalledProcessError( process.returncode, process.args, output=stdout, stderr=stderr) - return stdout.decode() + return stdout def _get_line_fields( diff --git a/ffmpeg/_detect.py b/ffmpeg/_detect.py index e64d168..463174a 100644 --- a/ffmpeg/_detect.py +++ b/ffmpeg/_detect.py @@ -75,9 +75,9 @@ def detect_gpus(): if plat_sys == 'Linux': # TODO: Android and other Linux'es that don't have `lshw` display_output = subprocess.check_output( - ['lshw', '-class', 'display', '-json']) + ['lshw', '-class', 'display', '-json'], universal_newlines=True) displays_data = json.loads( - display_output.decode().strip().strip(','), + display_output.strip().strip(','), object_pairs_hook=collections.OrderedDict) if not isinstance(displays_data, list): # TODO: Confirm this is how `lshw` handles multiple GPUs diff --git a/ffmpeg/_probe.py b/ffmpeg/_probe.py index be25d4b..ec8f137 100644 --- a/ffmpeg/_probe.py +++ b/ffmpeg/_probe.py @@ -22,12 +22,13 @@ def probe(filename, cmd='ffprobe', **kwargs): args += convert_kwargs_to_cmd_line_args(kwargs) args += [filename] - p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + p = subprocess.Popen( + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + universal_newlines=True) out, err = p.communicate() if p.returncode != 0: raise Error('ffprobe', out, err) - return json.loads( - out.decode('utf-8'), object_pairs_hook=collections.OrderedDict) + return json.loads(out, object_pairs_hook=collections.OrderedDict) __all__ = ['probe'] diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index e27b4e6..7390917 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -9,6 +9,8 @@ import random import re import subprocess +import six + try: import mock # python 2 except ImportError: @@ -710,7 +712,7 @@ def test__probe__exception(): with pytest.raises(ffmpeg.Error) as excinfo: ffmpeg.probe(BOGUS_INPUT_FILE) assert str(excinfo.value) == 'ffprobe error (see stderr output for detail)' - assert 'No such file or directory'.encode() in excinfo.value.stderr + assert 'No such file or directory' in excinfo.value.stderr def test__probe__extra_args(): @@ -725,11 +727,11 @@ def test__build_data(): 'protocols', 'filters', 'pix_fmts', 'sample_fmts', 'layouts', 'colors', 'devices', 'hw_devices', 'hwaccels'} - assert isinstance(data['version'], str) + assert isinstance(data['version'], six.string_types) assert isinstance(data['codecs'], dict) for codec, coders in data['codecs'].items(): - assert isinstance(codec, str) + assert isinstance(codec, six.string_types) assert isinstance(coders, dict) assert isinstance(data['hwaccels'], list) for hwaccel in data['hwaccels']: @@ -766,7 +768,9 @@ def test__detect(): assert 'output' in codec_kwargs assert isinstance(codec_kwargs['output'], dict) assert 'codec' in codec_kwargs['output'] - assert isinstance(codec_kwargs['output']['codec'], str) + assert isinstance( + codec_kwargs['output']['codec'], + six.string_types) def test__detect_parse_models():