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>
This commit is contained in:
parent
a274e0a036
commit
0b20f1a266
@ -43,13 +43,13 @@ test_expect_success 'HEAD is part of refs, valid objects appear valid' '
|
||||
|
||||
test_expect_success 'setup: helpers for corruption tests' '
|
||||
sha1_file() {
|
||||
echo "$*" | sed "s#..#.git/objects/&/#"
|
||||
remainder=${1#??} &&
|
||||
firsttwo=${1%$remainder} &&
|
||||
echo ".git/objects/$firsttwo/$remainder"
|
||||
} &&
|
||||
|
||||
remove_object() {
|
||||
file=$(sha1_file "$*") &&
|
||||
test -e "$file" &&
|
||||
rm -f "$file"
|
||||
rm "$(sha1_file "$1")"
|
||||
}
|
||||
'
|
||||
|
||||
@ -535,13 +535,6 @@ test_expect_success 'fsck --connectivity-only' '
|
||||
)
|
||||
'
|
||||
|
||||
remove_loose_object () {
|
||||
sha1="$(git rev-parse "$1")" &&
|
||||
remainder=${sha1#??} &&
|
||||
firsttwo=${sha1%$remainder} &&
|
||||
rm .git/objects/$firsttwo/$remainder
|
||||
}
|
||||
|
||||
test_expect_success 'fsck --name-objects' '
|
||||
rm -rf name-objects &&
|
||||
git init name-objects &&
|
||||
@ -550,7 +543,7 @@ test_expect_success 'fsck --name-objects' '
|
||||
test_commit julius caesar.t &&
|
||||
test_commit augustus &&
|
||||
test_commit caesar &&
|
||||
remove_loose_object $(git rev-parse julius:caesar.t) &&
|
||||
remove_object $(git rev-parse julius:caesar.t) &&
|
||||
test_must_fail git fsck --name-objects >out &&
|
||||
tree=$(git rev-parse --verify julius:) &&
|
||||
grep "$tree (\(refs/heads/master\|HEAD\)@{[0-9]*}:" out
|
||||
|
Loading…
x
Reference in New Issue
Block a user