From 7c575762f7d6f4f1a28e95dc03d4c7e61f1a6ed7 Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Thu, 28 May 2020 13:10:28 +0200 Subject: [PATCH] orchestra/run: py2 fix for copy_and_close Signed-off-by: Sebastian Wagner --- teuthology/orchestra/run.py | 2 ++ teuthology/orchestra/test/test_run.py | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/teuthology/orchestra/run.py b/teuthology/orchestra/run.py index 70128ce622..edf905ed04 100644 --- a/teuthology/orchestra/run.py +++ b/teuthology/orchestra/run.py @@ -328,6 +328,8 @@ def copy_and_close(src, fdst): src = io.StringIO(src) else: src = io.BytesIO(src) + elif not PY3 and isinstance(src, unicode): # noqa: F821 + src = io.StringIO(src) shutil.copyfileobj(src, fdst) fdst.close() diff --git a/teuthology/orchestra/test/test_run.py b/teuthology/orchestra/test/test_run.py index f87909cf21..e7a5462340 100644 --- a/teuthology/orchestra/test/test_run.py +++ b/teuthology/orchestra/test/test_run.py @@ -6,7 +6,7 @@ import socket from mock import MagicMock, patch from pytest import raises -from six import ensure_str, ensure_binary +from six import ensure_str, ensure_binary, PY2 from teuthology.orchestra import run from teuthology.exceptions import (CommandCrashedError, CommandFailedError, @@ -260,6 +260,14 @@ class TestRun(object): assert code == 0 assert proc.exitstatus == 0 + def test_copy_and_close(self): + run.copy_and_close(None, MagicMock()) + run.copy_and_close('', MagicMock()) + run.copy_and_close(b'', MagicMock()) + if PY2: + run.copy_and_close(u'', MagicMock()) + + class TestQuote(object): def test_quote_simple(self): -- 2.39.5