pack-objects tests: cover blindspots in stdin handling
Cover blindspots in the testing of stdin handling, including the "!len" condition added inb5d97e6b0a
(pack-objects: run rev-list equivalent internally., 2006-09-04). The codepath taken with --revs and read_object_list_from_stdin() acts differently in some of these common cases, let's test for those. The "--stdin --revs" test being added here stresses the combination of --stdin-packs and the revision.c --stdin argument, some of this was covered in a test added in339bce27f4
(builtin/pack-objects.c: add '--stdin-packs' option, 2021-02-22), but let's make sure that GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=true keeps erroring out about --stdin, and it isn't picked up by the revision.c API's handling of that option. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ebf3c04b26
commit
fb20d4b126
@ -34,6 +34,91 @@ test_expect_success 'setup' '
|
||||
} >expect
|
||||
'
|
||||
|
||||
test_expect_success 'setup pack-object <stdin' '
|
||||
git init pack-object-stdin &&
|
||||
test_commit -C pack-object-stdin one &&
|
||||
test_commit -C pack-object-stdin two
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'pack-object <stdin parsing: basic [|--revs]' '
|
||||
cat >in <<-EOF &&
|
||||
$(git -C pack-object-stdin rev-parse one)
|
||||
EOF
|
||||
|
||||
git -C pack-object-stdin pack-objects basic-stdin <in &&
|
||||
idx=$(echo pack-object-stdin/basic-stdin-*.idx) &&
|
||||
git show-index <"$idx" >actual &&
|
||||
test_line_count = 1 actual &&
|
||||
|
||||
git -C pack-object-stdin pack-objects --revs basic-stdin-revs <in &&
|
||||
idx=$(echo pack-object-stdin/basic-stdin-revs-*.idx) &&
|
||||
git show-index <"$idx" >actual &&
|
||||
test_line_count = 3 actual
|
||||
'
|
||||
|
||||
test_expect_success 'pack-object <stdin parsing: [|--revs] bad line' '
|
||||
cat >in <<-EOF &&
|
||||
$(git -C pack-object-stdin rev-parse one)
|
||||
garbage
|
||||
$(git -C pack-object-stdin rev-parse two)
|
||||
EOF
|
||||
|
||||
sed "s/^> //g" >err.expect <<-EOF &&
|
||||
fatal: expected object ID, got garbage:
|
||||
> garbage
|
||||
|
||||
EOF
|
||||
test_must_fail git -C pack-object-stdin pack-objects bad-line-stdin <in 2>err.actual &&
|
||||
test_cmp err.expect err.actual &&
|
||||
|
||||
cat >err.expect <<-EOF &&
|
||||
fatal: bad revision '"'"'garbage'"'"'
|
||||
EOF
|
||||
test_must_fail git -C pack-object-stdin pack-objects --revs bad-line-stdin-revs <in 2>err.actual &&
|
||||
test_cmp err.expect err.actual
|
||||
'
|
||||
|
||||
test_expect_success 'pack-object <stdin parsing: [|--revs] empty line' '
|
||||
cat >in <<-EOF &&
|
||||
$(git -C pack-object-stdin rev-parse one)
|
||||
|
||||
$(git -C pack-object-stdin rev-parse two)
|
||||
EOF
|
||||
|
||||
sed -e "s/^> //g" -e "s/Z$//g" >err.expect <<-EOF &&
|
||||
fatal: expected object ID, got garbage:
|
||||
> Z
|
||||
|
||||
EOF
|
||||
test_must_fail git -C pack-object-stdin pack-objects empty-line-stdin <in 2>err.actual &&
|
||||
test_cmp err.expect err.actual &&
|
||||
|
||||
git -C pack-object-stdin pack-objects --revs empty-line-stdin-revs <in &&
|
||||
idx=$(echo pack-object-stdin/empty-line-stdin-revs-*.idx) &&
|
||||
git show-index <"$idx" >actual &&
|
||||
test_line_count = 3 actual
|
||||
'
|
||||
|
||||
test_expect_success 'pack-object <stdin parsing: [|--revs] with --stdin' '
|
||||
cat >in <<-EOF &&
|
||||
$(git -C pack-object-stdin rev-parse one)
|
||||
$(git -C pack-object-stdin rev-parse two)
|
||||
EOF
|
||||
|
||||
# There is the "--stdin-packs is incompatible with --revs"
|
||||
# test below, but we should make sure that the revision.c
|
||||
# --stdin is not picked up
|
||||
cat >err.expect <<-EOF &&
|
||||
fatal: disallowed abbreviated or ambiguous option '"'"'stdin'"'"'
|
||||
EOF
|
||||
test_must_fail git -C pack-object-stdin pack-objects stdin-with-stdin-option --stdin <in 2>err.actual &&
|
||||
test_cmp err.expect err.actual &&
|
||||
|
||||
test_must_fail git -C pack-object-stdin pack-objects --stdin --revs stdin-with-stdin-option-revs 2>err.actual <in &&
|
||||
test_cmp err.expect err.actual
|
||||
'
|
||||
|
||||
# usage: check_deltas <stderr_from_pack_objects> <cmp_op> <nr_deltas>
|
||||
# e.g.: check_deltas stderr -gt 0
|
||||
check_deltas() {
|
||||
|
Loading…
Reference in New Issue
Block a user