Bug#848049: diffoscope: Add detection of order-only differences in plain text formats
Daniel Shahaf
danielsh at apache.org
Sat Dec 24 20:28:34 UTC 2016
Маша Глухова wrote on Sat, Dec 24, 2016 at 18:14:16 +0000:
> +def order_only_difference(unified_diff):
> + diff_lines = unified_diff.splitlines()
> + added_lines = [line[1:] for line in diff_lines if line.startswith('+')]
> + removed_lines = [line[1:] for line in diff_lines if line.startswith('-')]
> + # Faster check: does number of lines match?
> + if len(added_lines) != len(removed_lines):
> + return False
> + # Counter stores line and number of its occurrences.
> + return sorted(added_lines) == sorted(removed_lines)
What happens if one of the files has a trailing newline and one does
not? Strictly speaking, that's not an "ordering only difference", but
this function doesn't seem to handle this case.
Example:
% diff -u <(echo foo) <(printf foo)
--- /proc/self/fd/11 2016-12-24 20:24:22.064115616 +0000
+++ /proc/self/fd/12 2016-12-24 20:24:22.064115616 +0000
@@ -1 +1 @@
-foo
+foo
\ No newline at end of file
Cheers,
Daniel
More information about the Reproducible-builds
mailing list