Răsfoiți Sursa

Merge branch 'bugfix/ttfw_example_test_fails_port_remains_open' into 'master'

ci: Fix CI issue if one example test fails, and if serial port returns some noise

Closes IDFCI-236

See merge request espressif/esp-idf!11273
Angus Gratton 5 ani în urmă
părinte
comite
190aed41ee

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

@@ -40,6 +40,7 @@ If they using different port then need to implement their DUTPort class as well.
 from __future__ import print_function
 from __future__ import print_function
 import time
 import time
 import re
 import re
+import sys
 import threading
 import threading
 import copy
 import copy
 import functools
 import functools
@@ -78,11 +79,12 @@ def _expect_lock(func):
 def _decode_data(data):
 def _decode_data(data):
     """ for python3, if the data is bytes, then decode it to string """
     """ for python3, if the data is bytes, then decode it to string """
     if isinstance(data, bytes):
     if isinstance(data, bytes):
-        # convert bytes to string
+        # 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
         try:
         try:
-            data = data.decode("utf-8", "ignore")
-        except UnicodeDecodeError:
-            data = data.decode("iso8859-1", )
+            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
     return data
 
 
 
 

+ 2 - 0
tools/ci/python_packages/tiny_test_fw/Env.py

@@ -18,6 +18,7 @@ import threading
 import functools
 import functools
 
 
 import netifaces
 import netifaces
+import traceback
 
 
 from . import EnvConfig
 from . import EnvConfig
 
 
@@ -190,6 +191,7 @@ class Env(object):
                     dut.print_debug_info()
                     dut.print_debug_info()
                 dut.close()
                 dut.close()
             except Exception as e:
             except Exception as e:
+                traceback.print_exc()
                 dut_close_errors.append(e)
                 dut_close_errors.append(e)
         self.allocated_duts = dict()
         self.allocated_duts = dict()
         return dut_close_errors
         return dut_close_errors