From b80bba65567c981bf7aba014edcab632c172867b Mon Sep 17 00:00:00 2001 From: John Estabrook Date: Fri, 21 Nov 2025 14:32:52 -0600 Subject: T8031: add file comparison utility for comparison modulo empty lines --- python/vyos/utils/file.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'python') diff --git a/python/vyos/utils/file.py b/python/vyos/utils/file.py index 98d88d9e4..6708ade2d 100644 --- a/python/vyos/utils/file.py +++ b/python/vyos/utils/file.py @@ -312,3 +312,30 @@ def move_recursive(src: str, dst: str, overwrite=False): copy_recursive(src, dst, overwrite=overwrite) shutil.rmtree(src) + + +def file_compare(file1: str, file2: str) -> bool: + """ + Compare two files modulo blank lines, leading/trailing whitespace, final + newline. + + Returns: + bool: True if files are equivalent in the sense above. + + """ + + def non_empty(line): + return bool(line.strip()) + + with open(file1) as f1, open(file2) as f2: + it1 = filter(non_empty, f1) + it2 = filter(non_empty, f2) + + try: + for l1, l2 in zip(it1, it2, strict=True): + if l1.strip() != l2.strip(): + return False + except ValueError: + return False + + return True -- cgit v1.2.3