diff mbox series

[U-Boot,03/15] test/py: Fix unicode handling for log filtering

Message ID 20180923224727.204542-4-sjg@chromium.org
State Superseded
Delegated to: Simon Glass
Headers show
Series test: Various test refinements and improvements | expand

Commit Message

Simon Glass Sept. 23, 2018, 10:47 p.m. UTC
At present the unicode filtering seems to get confused at times with
this error:

  UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position
     32: ordinal not in range(128)

It seems to be due to self._nonprint being interpreted as UTF-8. Fix it
by using ordinals instead of characters, changing the string to set.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 test/py/multiplexed_log.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Stephen Warren Sept. 24, 2018, 3:54 p.m. UTC | #1
On 09/23/2018 04:47 PM, Simon Glass wrote:
> At present the unicode filtering seems to get confused at times with
> this error:
> 
>    UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position
>       32: ordinal not in range(128)
> 
> It seems to be due to self._nonprint being interpreted as UTF-8. Fix it
> by using ordinals instead of characters, changing the string to set.

Reviewed-by: Stephen Warren <swarren@nvidia.com>
diff mbox series

Patch

diff --git a/test/py/multiplexed_log.py b/test/py/multiplexed_log.py
index f23d5dec68c..637a3bd257b 100644
--- a/test/py/multiplexed_log.py
+++ b/test/py/multiplexed_log.py
@@ -314,8 +314,9 @@  $(document).ready(function () {
 
     # The set of characters that should be represented as hexadecimal codes in
     # the log file.
-    _nonprint = ('%' + ''.join(chr(c) for c in range(0, 32) if c not in (9, 10)) +
-                 ''.join(chr(c) for c in range(127, 256)))
+    _nonprint = {ord('%')}
+    _nonprint.update({c for c in range(0, 32) if c not in (9, 10)})
+    _nonprint.update({c for c in range(127, 256)})
 
     def _escape(self, data):
         """Render data format suitable for inclusion in an HTML document.
@@ -331,7 +332,7 @@  $(document).ready(function () {
         """
 
         data = data.replace(chr(13), '')
-        data = ''.join((c in self._nonprint) and ('%%%02x' % ord(c)) or
+        data = ''.join((ord(c) in self._nonprint) and ('%%%02x' % ord(c)) or
                        c for c in data)
         data = cgi.escape(data)
         return data