[IMP] test_themes: ensure styles only define properties once

This commit adds a test that makes sure that inline styles do not
contain the same property several times.

task-4206845

closes odoo/design-themes#933

Related: odoo/odoo#181194
Signed-off-by: Alice Gaudon (agau) <agau@odoo.com>
This commit is contained in:
Benoit Socias
2024-09-24 14:16:40 +02:00
parent 266b35a31e
commit 199bd53c11
@@ -190,6 +190,12 @@ class TestNewPageTemplates(TransactionCase):
conflict.difference_update(white_list) conflict.difference_update(white_list)
if len(conflict) > 1: if len(conflict) > 1:
errors.append("Using %r, view %r contains conflicting classes: %r in %r (according to pattern %r)" % (theme_name, view.key, conflict, classes, conflicting_classes_re.pattern)) errors.append("Using %r, view %r contains conflicting classes: %r in %r (according to pattern %r)" % (theme_name, view.key, conflict, classes, conflicting_classes_re.pattern))
for el in html_tree.xpath('//*[@style]'):
styles = el.attrib['style'].split(';')
non_empty_styles = filter(lambda style: style, styles)
property_names = list(map(lambda style: style.split(':')[0].strip(), non_empty_styles))
if len(property_names) != len(set(property_names)):
errors.append("Using %r, view %r contains duplicate style properties: %r" % (theme_name, view.key, el.attrib['style']))
except Exception: except Exception:
_logger.error("Using %r, view %r cannot be rendered", theme_name, view.key) _logger.error("Using %r, view %r cannot be rendered", theme_name, view.key)
errors.append("Using %r, view %r cannot be rendered" % (theme_name, view.key)) errors.append("Using %r, view %r cannot be rendered" % (theme_name, view.key))