[nft PATCH v3 13/14] tests/py: Highlight offending parts in differences warnings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Print the non-equal parts of the two rules in yellow when printing the
differences warning.

Signed-off-by: Phil Sutter <phil@xxxxxx>
---
 tests/py/nft-test.py | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/tests/py/nft-test.py b/tests/py/nft-test.py
index 5f00b7d658f55..9ec38c24bdd37 100755
--- a/tests/py/nft-test.py
+++ b/tests/py/nft-test.py
@@ -121,8 +121,41 @@ def print_warning(reason, filename=None, lineno=None):
     print_msg(reason, filename, lineno, Colors.YELLOW, "WARNING:")
 
 
+def color_differences(rule, other, color):
+    rlen = len(rule)
+    olen = len(other)
+
+    # find equal part at start
+    for i in range(rlen):
+        if i >= olen or rule[i] != other[i]:
+            break
+    start_idx = i
+
+    # find equal part at end
+    found = False
+    for i in range(-1, start_idx -rlen - 1, -1):
+        if i < start_idx -olen:
+            break
+        if rule[i] != other[i]:
+            found = True
+            break
+    end_idx = i
+    if found:
+        end_idx += 1
+
+    out = ""
+    if start_idx > 0:
+        out += rule[:start_idx]
+    out += color + rule[start_idx:end_idx] + Colors.ENDC
+    if end_idx < 0:
+        out += rule[end_idx:]
+
+    return out
+
 def print_differences_warning(filename, lineno, rule1, rule2, cmd):
-    reason = "'" + rule1 + "' mismatches '" + rule2 + "'"
+    colored_rule1 = color_differences(rule1, rule2, Colors.YELLOW)
+    colored_rule2 = color_differences(rule2, rule1, Colors.YELLOW)
+    reason = "'" + colored_rule1 + "' mismatches '" + colored_rule2 + "'"
     print filename + ": " + Colors.YELLOW + "WARNING: " + Colors.ENDC + \
           "line: " + str(lineno + 1) + ": '" + cmd + "': " + reason
 
-- 
2.17.0

--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux