From d81ff7006dd123f666dd9138cfdf3fd470d3f6b4 Mon Sep 17 00:00:00 2001
From: Giovanni La Mura <giovanni.lamura@inaf.it>
Date: Tue, 12 Dec 2023 18:04:51 +0100
Subject: [PATCH] Enable comparison of OEDFB

---
 src/scripts/pycompare.py | 109 ++++++++++++++++++++++-----------------
 1 file changed, 62 insertions(+), 47 deletions(-)

diff --git a/src/scripts/pycompare.py b/src/scripts/pycompare.py
index 04224c08..2ab77a14 100755
--- a/src/scripts/pycompare.py
+++ b/src/scripts/pycompare.py
@@ -130,57 +130,71 @@ def compare_lines(f_line, c_line, config, line_num=0, num_len=1, log_file=None):
             c_starts.append(ci.start())
             c_ends.append(ci.end())
             c_groups.append(ci.group())
-        severities = mismatch_severities(f_groups, c_groups, config)
-        if log_file is not None:
-            num_format = "    <div><pre><code>{0:0%dd}"%num_len
-            log_line = (num_format + ": ").format(line_num)
-            log_line = log_line + c_line[0:c_starts[0]]
-        for si in range(len(severities) - 1):
-            if (severities[si] == 1): noisy += 1
-            elif (severities[si] == 2): warnings += 1
-            elif (severities[si] == 3): errors += 1
+
+        if (len(f_groups) == len(c_groups)):
+            #INDENT    
+            severities = mismatch_severities(f_groups, c_groups, config)
             if log_file is not None:
-                if (severities[si] == 0):
-                    log_line = log_line + c_groups[si] + c_line[c_ends[si]:c_starts[si + 1]]
-                elif (severities[si] == 1):
-                    log_line = (
-                        log_line + "</code><span style=\"font-weight: bold; color: rgb(0,255,0)\"><code>"
-                        + c_groups[si] + "</code></span><code>" + c_line[c_ends[si]:c_starts[si + 1]]
-                    )
-                elif (severities[si] == 2):
-                    log_line = (
-                        log_line + "</code><span style=\"font-weight: bold; color: rgb(0,0,255)\"><code>"
-                        + c_groups[si] + "</code></span><code>" + c_line[c_ends[si]:c_starts[si + 1]]
-                    )
-                elif (severities[si] == 3):
-                    log_line = (
-                        log_line + "</code><span style=\"font-weight: bold; color: rgb(255,0,0)\"><code>"
-                        + c_groups[si] + "</code></span><code>" + c_line[c_ends[si]:c_starts[si + 1]]
-                    )
-        if (severities[-1] == 1): noisy += 1
-        elif (severities[-1] == 2): warnings += 1
-        elif (severities[-1] == 3): errors += 1
-        if log_file is not None:
-            if (severities[-1] == 0):
-                log_line = (
-                    log_line + c_groups[-1] + c_line[c_ends[-1]:len(c_line) - 2]
-                )
-            elif (severities[-1] == 1):
-                log_line = (
-                    log_line + "</code><span style=\"font-weight: bold; color: rgb(0,255,0)\"><code>"
-                    + c_groups[-1] + "</code></span><code>" + c_line[c_ends[-1]:len(c_line) - 2]
-                )
-            elif (severities[-1] == 2):
-                log_line = (
-                    log_line + "</code><span style=\"font-weight: bold; color: rgb(0,0,255)\"><code>"
-                    + c_groups[-1] + "</code></span><code>" + c_line[c_ends[-1]:len(c_line) - 2]
-                )
-            elif (severities[-1] == 3):
+                num_format = "    <div><pre><code>{0:0%dd}"%num_len
+                log_line = (num_format + ": ").format(line_num)
+                log_line = log_line + c_line[0:c_starts[0]]
+            for si in range(len(severities) - 1):
+                if (severities[si] == 1): noisy += 1
+                elif (severities[si] == 2): warnings += 1
+                elif (severities[si] == 3): errors += 1
+                if log_file is not None:
+                    if (severities[si] == 0):
+                        log_line = log_line + c_groups[si] + c_line[c_ends[si]:c_starts[si + 1]]
+                    elif (severities[si] == 1):
+                        log_line = (
+                            log_line + "</code><span style=\"font-weight: bold; color: rgb(0,255,0)\"><code>"
+                            + c_groups[si] + "</code></span><code>" + c_line[c_ends[si]:c_starts[si + 1]]
+                        )
+                    elif (severities[si] == 2):
+                        log_line = (
+                            log_line + "</code><span style=\"font-weight: bold; color: rgb(0,0,255)\"><code>"
+                            + c_groups[si] + "</code></span><code>" + c_line[c_ends[si]:c_starts[si + 1]]
+                        )
+                    elif (severities[si] == 3):
+                        log_line = (
+                            log_line + "</code><span style=\"font-weight: bold; color: rgb(255,0,0)\"><code>"
+                            + c_groups[si] + "</code></span><code>" + c_line[c_ends[si]:c_starts[si + 1]]
+                        )
+            if (len(severities) > 1):
+                if (severities[-1] == 1): noisy += 1
+                elif (severities[-1] == 2): warnings += 1
+                elif (severities[-1] == 3): errors += 1
+            if log_file is not None:
+                if (len(severities) > 1):
+                    if (severities[-1] == 0):
+                        log_line = (
+                            log_line + c_groups[-1] + c_line[c_ends[-1]:len(c_line) - 2]
+                        )
+                    elif (severities[-1] == 1):
+                        log_line = (
+                            log_line + "</code><span style=\"font-weight: bold; color: rgb(0,255,0)\"><code>"
+                            + c_groups[-1] + "</code></span><code>" + c_line[c_ends[-1]:len(c_line) - 2]
+                        )
+                    elif (severities[-1] == 2):
+                        log_line = (
+                            log_line + "</code><span style=\"font-weight: bold; color: rgb(0,0,255)\"><code>"
+                            + c_groups[-1] + "</code></span><code>" + c_line[c_ends[-1]:len(c_line) - 2]
+                        )
+                    elif (severities[-1] == 3):
+                        log_line = (
+                            log_line + "</code><span style=\"font-weight: bold; color: rgb(255,0,0)\"><code>"
+                            + c_groups[-1] + "</code></span><code>" + c_line[c_ends[-1]:len(c_line) - 2]
+                        )
+                log_file.write(log_line + "</code></pre></div>\n")
+            #END INDENT
+        else:
+            if (log_file is not None):
                 log_line = (
                     log_line + "</code><span style=\"font-weight: bold; color: rgb(255,0,0)\"><code>"
-                    + c_groups[-1] + "</code></span><code>" + c_line[c_ends[-1]:len(c_line) - 2]
+                    + c_line + "</code></span><code>"
                 )
-            log_file.write(log_line + "</code></pre></div>\n")
+                log_file.write(log_line + "</code></pre></div>\n")
+            errors += 1
     return (errors, warnings, noisy)
 
 ## \brief Determine the severity of a numerical mismatch.
@@ -203,6 +217,7 @@ def mismatch_severities(str_f_values, str_c_values, config):
         if (str_f_values[i] != str_c_values[i]):
             f_values = [float(str_f_values[j]) for j in range(len(str_f_values))]
             c_values = [float(str_c_values[j]) for j in range(len(str_c_values))]
+            if (len(f_values) != len(c_values)): return []
             f_log_values = [0.0 for j in range(len(f_values))]
             c_log_values = [0.0 for j in range(len(c_values))]
             max_f_log = -1.0e12
-- 
GitLab