Przeglądaj źródła

ci: Fix missing sys.stdout.encoding in python2 runners

Regression in fed98cd6adbe6576beda5076d0840eac0b4944e6
Angus Gratton 4 lat temu
rodzic
commit
2c4f90dab2
1 zmienionych plików z 6 dodań i 3 usunięć
  1. 6 3
      tools/ci/python_packages/tiny_test_fw/DUT.py

+ 6 - 3
tools/ci/python_packages/tiny_test_fw/DUT.py

@@ -81,10 +81,13 @@ def _decode_data(data):
     if isinstance(data, bytes):
         # convert bytes to string. This is a bit of a hack, we know that we want to log this
         # later so encode to the stdout encoding with backslash escapes for anything non-encodable
+        encoding = sys.stdout.encoding
+        if encoding is None:
+            encoding = 'ascii'
         try:
-            return data.decode(sys.stdout.encoding, "backslashreplace")
-        except UnicodeDecodeError:  # Python <3.5 doesn't support backslashreplace
-            return data.decode(sys.stdout.encoding, "replace")
+            return data.decode(encoding, "backslashreplace")
+        except (UnicodeDecodeError, TypeError):  # Python <3.5 doesn't support backslashreplace
+            return data.decode(encoding, "replace")
     return data