t1450: refactor loose-object removal

Commit 90cf590f5 (fsck: optionally show more helpful info for broken links, 2016-07-17) added a remove_loose_object() helper, but we already had a remove_object() helper that did the same thing. Let's combine these into one. The implementations had a few subtle differences, so I've tried to take the best of both: - the original used "sed", but the newer version avoids spawning an extra process - the original processed "$*", which was nonsense, as it assumed only a single sha1. Use "$1" to make that more clear. - the newer version ran an extra rev-parse, but it was not necessary; it's sole caller already converted the argument into a raw sha1 - the original used "rm -f", whereas the new one uses "rm". The latter is better because it may notice a bug or other unexpected failure in the test. (The original does check that the object exists before we remove it, which is good, but that's a subset of the possible unexpected conditions). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Jan 13, 2017 at 12:54 UTC 0b20f1a26604a4f43f4728acc56c6ffc6a976220
1 file changed +5 -12
t/t1450-fsck.sh
+5 -12
@@ -43,13 +43,13 @@ test_expect_success 'HEAD is part of refs, valid objects appear valid' '
43
44 test_expect_success 'setup: helpers for corruption tests' '
45 sha1_file() {
46 - echo "$*" | sed "s#..#.git/objects/&/#"
46 + remainder=${1#??} &&
47 + firsttwo=${1%$remainder} &&
48 + echo ".git/objects/$firsttwo/$remainder"
49 } &&
50
51 remove_object() {
50 - file=$(sha1_file "$*") &&
51 - test -e "$file" &&
52 - rm -f "$file"
52 + rm "$(sha1_file "$1")"
53 }
54 '
55
@@ -535,13 +535,6 @@ test_expect_success 'fsck --connectivity-only' '
535 )
536 '
537
538 -remove_loose_object () {
539 - sha1="$(git rev-parse "$1")" &&
540 - remainder=${sha1#??} &&
541 - firsttwo=${sha1%$remainder} &&
542 - rm .git/objects/$firsttwo/$remainder
543 -}
544 -
538 test_expect_success 'fsck --name-objects' '
539 rm -rf name-objects &&
540 git init name-objects &&
@@ -550,7 +543,7 @@ test_expect_success 'fsck --name-objects' '
543 test_commit julius caesar.t &&
544 test_commit augustus &&
545 test_commit caesar &&
553 - remove_loose_object $(git rev-parse julius:caesar.t) &&
546 + remove_object $(git rev-parse julius:caesar.t) &&
547 test_must_fail git fsck --name-objects >out &&
548 tree=$(git rev-parse --verify julius:) &&
549 grep "$tree (\(refs/heads/master\|HEAD\)@{[0-9]*}:" out