]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
orchestra/run: py2 fix for copy_and_close 1499/head
authorSebastian Wagner <sebastian.wagner@suse.com>
Thu, 28 May 2020 11:10:28 +0000 (13:10 +0200)
committerSebastian Wagner <sebastian.wagner@suse.com>
Thu, 28 May 2020 13:45:25 +0000 (15:45 +0200)
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
teuthology/orchestra/run.py
teuthology/orchestra/test/test_run.py

index 70128ce6225c21c9e43efbd3b01017c4b6f8ad34..edf905ed047c1841a8c49da72794ba560a9f8b13 100644 (file)
@@ -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()
 
index f87909cf211d53928940eda465b4f890777249c2..e7a54623406726319b03f77ab92b4141e57cc6d2 100644 (file)
@@ -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):