Browse Source

port all tests to py3

zhukoff-pavel 1 year ago
parent
commit
86134366e9
1 changed files with 9 additions and 5 deletions
  1. 9 5
      library/python/testing/yatest_common/yatest/common/process.py

+ 9 - 5
library/python/testing/yatest_common/yatest/common/process.py

@@ -1,5 +1,6 @@
 # coding: utf-8
 
+import io
 import os
 import re
 import time
@@ -547,13 +548,14 @@ def execute(
 
     def get_out_stream(stream, default_name):
         mode = 'w+t' if text else 'w+b'
+        open_kwargs = {'errors': 'ignore', 'encoding': 'utf-8'} if text else {}
         if stream is None:
             # No stream is supplied: open new temp file
-            return _get_command_output_file(command, default_name, mode), False
+            return _get_command_output_file(command, default_name, mode, open_kwargs), False
 
         if isinstance(stream, six.string_types):
             # User filename is supplied: open file for writing
-            return open(stream, mode), stream.startswith('/dev/')
+            return io.open(stream, mode, **open_kwargs), stream.startswith('/dev/')
 
         # Open file or PIPE sentinel is supplied
         is_pipe = stream == subprocess.PIPE
@@ -650,7 +652,9 @@ def execute(
     return res
 
 
-def _get_command_output_file(cmd, ext, mode):
+def _get_command_output_file(cmd, ext, mode, open_kwargs=None):
+    if open_kwargs is None:
+        open_kwargs = {}
     parts = [get_command_name(cmd)]
     if 'YA_RETRY_INDEX' in os.environ:
         parts.append('retry{}'.format(os.environ.get('YA_RETRY_INDEX')))
@@ -667,9 +671,9 @@ def _get_command_output_file(cmd, ext, mode):
             raise ImportError("not in test")
         filename = path.get_unique_file_path(yatest.common.output_path(), filename)
         yatest_logger.debug("Command %s will be placed to %s", ext, os.path.basename(filename))
-        return open(filename, mode)
+        return io.open(filename, mode, **open_kwargs)
     except ImportError:
-        return tempfile.NamedTemporaryFile(mode=mode, delete=False, suffix=filename)
+        return tempfile.NamedTemporaryFile(mode=mode, delete=False, suffix=filename, **(open_kwargs if six.PY3 else {}))
 
 
 def _get_proc_tree_info(pids):