From 5086087f4529d6b42a7b23dd32f1e1846a82782c Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Wed, 30 Jan 2019 15:37:10 +0000 Subject: [PATCH] Bug 22236: Translation should generate tags with consistent attribute order Content-Type: text/plain; charset=utf-8 When running misc/translator/translate, the order of attributes in the translated templates is not consistent and may vary. This is caused by the random order of hash keys in perl. This causes things like this in run 1: And this in run 2: As you can see, there is actually no difference apart from the order. When comparing the result of various translation runs, I would rather get rid of such noise and only see the real changes. The needed change is not trivial to find, but only requires a simple addition to a sort operation in tmpl_process3.pl. The current sort only makes sure that the '/' comes at the end. We should sort the names of the keys too when this value is 0 (just meaning: no end tag symbol). Test plan: [1] Run a translation without this patch and set a few templates aside. [2] Run a translation with this patch. [3] Run a compare (diff) on the templates copied in step 1. Verify that the only changes are found in the sort order of attributes in html tags. --- misc/translator/tmpl_process3.pl | 1 + 1 file changed, 1 insertion(+) diff --git a/misc/translator/tmpl_process3.pl b/misc/translator/tmpl_process3.pl index e39e64c390..6f4c39e786 100755 --- a/misc/translator/tmpl_process3.pl +++ b/misc/translator/tmpl_process3.pl @@ -91,6 +91,7 @@ sub text_replace_tag ($$) { } sort { $attr->{$a}->[3] <=> $attr->{$b}->[3] #FIXME + || $a cmp $b # Sort attributes BZ 22236 } keys %$attr); $it .= '>'; } -- 2.11.0