From 16b177486dc753d95e8bd3335023d7b7605d5cb4 Mon Sep 17 00:00:00 2001 From: Rob Browning Date: Sat, 5 Nov 2016 14:36:20 -0500 Subject: [PATCH 1/1] test-gc: sort ls output defensively before comm Explicitly sort the output of ls before passing it to comm in order to accommodate some systems that apparently used to change the default sort order. The order must match LC_COLLATE for comm to work. While we're here, improve error checking around the comm invocations. Thanks to Nick Alcock for reporting the original problem, and proposing an initial fix. Signed-off-by: Rob Browning Tested-by: Rob Browning --- t/test-gc.sh | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/t/test-gc.sh b/t/test-gc.sh index f305954..82be29c 100755 --- a/t/test-gc.sh +++ b/t/test-gc.sh @@ -201,13 +201,22 @@ packs_after="$(ls "$BUP_DIR/objects/pack/"*.pack)" || exit $? WVPASSEQ 1 "$(grep -cE '^rewriting ' gc.log)" # Check that only one pack was rewritten -only_in_before="$(comm -2 -3 <(echo "$packs_before") <(echo "$packs_after"))" -only_in_after="$(comm -1 -3 <(echo "$packs_before") <(echo "$packs_after"))" -in_both="$(comm -1 -2 <(echo "$packs_before") <(echo "$packs_after"))" + +# Accommodate some systems that apparently used to change the default +# ls sort order which must match LC_COLLATE for comm to work. +packs_before="$(sort <(echo "$packs_before"))" || die $? +packs_after="$(sort <(echo "$packs_after"))" || die $? + +only_in_before="$(comm -2 -3 <(echo "$packs_before") <(echo "$packs_after"))" \ + || die $? + +only_in_after="$(comm -1 -3 <(echo "$packs_before") <(echo "$packs_after"))" \ + || die $? + +in_both="$(comm -1 -2 <(echo "$packs_before") <(echo "$packs_after"))" || die $? WVPASSEQ 1 $(echo "$only_in_before" | wc -l) WVPASSEQ 1 $(echo "$only_in_after" | wc -l) WVPASSEQ 1 $(echo "$in_both" | wc -l) - WVPASS rm -rf "$tmpdir" -- 2.39.2