Per review, assert the exact stdout for both --expand-tabs and the
default tab path instead of a column helper, so the test also pins the
exact tabs/spaces emitted.
Shorten the two long comments per review, and add an integration test in
tests/integration.rs exercising `-y --width=40` in both the default
(expand_tabs: false, tab-padding path) and --expand-tabs modes, asserting
the gutter marker lands at the middle of the gutter.
In side-by-side output the gutter marker was written wherever
process_half_line stopped padding the left half (one column past
sdiff_half_width), not at separator_pos (the middle of the gutter).
Those agree only when the gutter is 3 or 4 columns wide, so the default
--width=130 --tabsize=8 (gutter 3) looked right while other widths/tab
sizes drifted (e.g. --width=40 placed '<' at column 17 instead of 19).
Pad from half_width + 1 up to separator_pos before writing the marker so
it lands at the gutter middle, matching GNU sdiff. format_tabs_and_spaces
is a no-op when already at/past separator_pos, so narrow gutters are
unaffected. Add a regression test at --width=40.
Fixes#269
The savannah gitweb interface is regularly rate-limited or unavailable, so
retry it and then fall back to the official gnulib mirror on GitHub rather
than failing the whole GNU testsuite job.
The --verbose branch of format_verbose_difference padded the byte-offset
column with a plain subtraction while the --print-bytes branch above it
already used saturating_sub. offset_width is derived from the smaller
file's metadata length, so a file reporting length 0 that still yields
bytes (/dev/zero) collapses it to 2 and the subtraction underflows once
the offset reaches three digits.
Fixes#265