From 571bc8cee50207407c7eba54cfd5946d4e41d6bf Mon Sep 17 00:00:00 2001 From: pkoprda Date: Mon, 20 Jan 2025 18:48:05 +0100 Subject: [PATCH] fix(client): Support playbooks with unicode for Python 3.12+ * Card ID: CCT-644 Some Unicode characters, like the zero-width joiner in emojis, were not processed correctly. This update improves Unicode support, mainly aimed for Python 3.12+. Signed-off-by: pkoprda --- .../ansible/playbook_verifier/serializer.py | 3 + .../client/apps/playbooks/unicode.digest.bin | Bin 32 -> 32 bytes .../apps/playbooks/unicode.serialized.bin | 2 +- .../tests/client/apps/playbooks/unicode.yml | 54 +++++++++++------- .../client/apps/test_playbook_verifier.py | 17 +++++- 5 files changed, 53 insertions(+), 23 deletions(-) diff --git a/insights/client/apps/ansible/playbook_verifier/serializer.py b/insights/client/apps/ansible/playbook_verifier/serializer.py index 12daafe5a0..9bf8751c71 100644 --- a/insights/client/apps/ansible/playbook_verifier/serializer.py +++ b/insights/client/apps/ansible/playbook_verifier/serializer.py @@ -57,6 +57,9 @@ def _str(cls, value): "\\": "\\\\", "\n": "\\n", "\t": "\\t", + "\u200b": "\\u200b", # Zero-width space + "\u200c": "\\u200c", # Zero-width non-joiner + "\u200d": "\\u200d", # Zero-width joiner } escaped_string = "" for char in value: diff --git a/insights/tests/client/apps/playbooks/unicode.digest.bin b/insights/tests/client/apps/playbooks/unicode.digest.bin index 74969d2570cabb0eb04603dd626b997a0227a4f0..427b8390e20381c88f79bb3a0ae67f37d87229fe 100644 GIT binary patch literal 32 qcmV+*0N?-TO!`UL2G}w~s^AnBnwz}~{m{kS02I(3b?AP9$-I9Tx)CG* literal 32 ocmXp#(rh#@lS4;(!rn&v= (3, 12): - raise pytest.xfail("Known RFE in Unicode serialization.") parent = os.path.dirname(__file__) # type: str with open("{parent}/playbooks/{filename}.yml".format(parent=parent, filename=filename), "r") as f: