Skip to content

Commit b7b8f04

Browse files
pks-tgitster
authored andcommitted
pack-objects: split out --stdin-packs tests into separate file
The test suite for git-pack-objects(1) is quite huge, and we're about to add more tests that relate to the `--stdin-packs` option. Split out all tests related to this option into a standalone file so that it becomes easier to test the feature in isolation. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 5186134 commit b7b8f04

File tree

2 files changed

+145
-135
lines changed

2 files changed

+145
-135
lines changed

t/t5300-pack-object.sh

Lines changed: 0 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -589,141 +589,6 @@ test_expect_success 'prefetch objects' '
589589
test_line_count = 1 donelines
590590
'
591591

592-
test_expect_success 'setup for --stdin-packs tests' '
593-
git init stdin-packs &&
594-
(
595-
cd stdin-packs &&
596-
597-
test_commit A &&
598-
test_commit B &&
599-
test_commit C &&
600-
601-
for id in A B C
602-
do
603-
git pack-objects .git/objects/pack/pack-$id \
604-
--incremental --revs <<-EOF || exit 1
605-
refs/tags/$id
606-
EOF
607-
done &&
608-
609-
ls -la .git/objects/pack
610-
)
611-
'
612-
613-
test_expect_success '--stdin-packs with excluded packs' '
614-
(
615-
cd stdin-packs &&
616-
617-
PACK_A="$(basename .git/objects/pack/pack-A-*.pack)" &&
618-
PACK_B="$(basename .git/objects/pack/pack-B-*.pack)" &&
619-
PACK_C="$(basename .git/objects/pack/pack-C-*.pack)" &&
620-
621-
git pack-objects test --stdin-packs <<-EOF &&
622-
$PACK_A
623-
^$PACK_B
624-
$PACK_C
625-
EOF
626-
627-
(
628-
git show-index <$(ls .git/objects/pack/pack-A-*.idx) &&
629-
git show-index <$(ls .git/objects/pack/pack-C-*.idx)
630-
) >expect.raw &&
631-
git show-index <$(ls test-*.idx) >actual.raw &&
632-
633-
cut -d" " -f2 <expect.raw | sort >expect &&
634-
cut -d" " -f2 <actual.raw | sort >actual &&
635-
test_cmp expect actual
636-
)
637-
'
638-
639-
test_expect_success '--stdin-packs is incompatible with --filter' '
640-
(
641-
cd stdin-packs &&
642-
test_must_fail git pack-objects --stdin-packs --stdout \
643-
--filter=blob:none </dev/null 2>err &&
644-
test_i18ngrep "cannot use --filter with --stdin-packs" err
645-
)
646-
'
647-
648-
test_expect_success '--stdin-packs is incompatible with --revs' '
649-
(
650-
cd stdin-packs &&
651-
test_must_fail git pack-objects --stdin-packs --revs out \
652-
</dev/null 2>err &&
653-
test_i18ngrep "cannot use internal rev list with --stdin-packs" err
654-
)
655-
'
656-
657-
test_expect_success '--stdin-packs with loose objects' '
658-
(
659-
cd stdin-packs &&
660-
661-
PACK_A="$(basename .git/objects/pack/pack-A-*.pack)" &&
662-
PACK_B="$(basename .git/objects/pack/pack-B-*.pack)" &&
663-
PACK_C="$(basename .git/objects/pack/pack-C-*.pack)" &&
664-
665-
test_commit D && # loose
666-
667-
git pack-objects test2 --stdin-packs --unpacked <<-EOF &&
668-
$PACK_A
669-
^$PACK_B
670-
$PACK_C
671-
EOF
672-
673-
(
674-
git show-index <$(ls .git/objects/pack/pack-A-*.idx) &&
675-
git show-index <$(ls .git/objects/pack/pack-C-*.idx) &&
676-
git rev-list --objects --no-object-names \
677-
refs/tags/C..refs/tags/D
678-
679-
) >expect.raw &&
680-
ls -la . &&
681-
git show-index <$(ls test2-*.idx) >actual.raw &&
682-
683-
cut -d" " -f2 <expect.raw | sort >expect &&
684-
cut -d" " -f2 <actual.raw | sort >actual &&
685-
test_cmp expect actual
686-
)
687-
'
688-
689-
test_expect_success '--stdin-packs with broken links' '
690-
(
691-
cd stdin-packs &&
692-
693-
# make an unreachable object with a bogus parent
694-
git cat-file -p HEAD >commit &&
695-
sed "s/$(git rev-parse HEAD^)/$(test_oid zero)/" <commit |
696-
git hash-object -w -t commit --stdin >in &&
697-
698-
git pack-objects .git/objects/pack/pack-D <in &&
699-
700-
PACK_A="$(basename .git/objects/pack/pack-A-*.pack)" &&
701-
PACK_B="$(basename .git/objects/pack/pack-B-*.pack)" &&
702-
PACK_C="$(basename .git/objects/pack/pack-C-*.pack)" &&
703-
PACK_D="$(basename .git/objects/pack/pack-D-*.pack)" &&
704-
705-
git pack-objects test3 --stdin-packs --unpacked <<-EOF &&
706-
$PACK_A
707-
^$PACK_B
708-
$PACK_C
709-
$PACK_D
710-
EOF
711-
712-
(
713-
git show-index <$(ls .git/objects/pack/pack-A-*.idx) &&
714-
git show-index <$(ls .git/objects/pack/pack-C-*.idx) &&
715-
git show-index <$(ls .git/objects/pack/pack-D-*.idx) &&
716-
git rev-list --objects --no-object-names \
717-
refs/tags/C..refs/tags/D
718-
) >expect.raw &&
719-
git show-index <$(ls test3-*.idx) >actual.raw &&
720-
721-
cut -d" " -f2 <expect.raw | sort >expect &&
722-
cut -d" " -f2 <actual.raw | sort >actual &&
723-
test_cmp expect actual
724-
)
725-
'
726-
727592
test_expect_success 'negative window clamps to 0' '
728593
git pack-objects --progress --window=-1 neg-window <obj-list 2>stderr &&
729594
check_deltas stderr = 0

t/t5331-pack-objects-stdin.sh

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
#!/bin/sh
2+
3+
test_description='pack-objects --stdin'
4+
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
5+
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
6+
7+
TEST_PASSES_SANITIZE_LEAK=true
8+
. ./test-lib.sh
9+
10+
test_expect_success 'setup for --stdin-packs tests' '
11+
git init stdin-packs &&
12+
(
13+
cd stdin-packs &&
14+
15+
test_commit A &&
16+
test_commit B &&
17+
test_commit C &&
18+
19+
for id in A B C
20+
do
21+
git pack-objects .git/objects/pack/pack-$id \
22+
--incremental --revs <<-EOF || exit 1
23+
refs/tags/$id
24+
EOF
25+
done &&
26+
27+
ls -la .git/objects/pack
28+
)
29+
'
30+
31+
test_expect_success '--stdin-packs with excluded packs' '
32+
(
33+
cd stdin-packs &&
34+
35+
PACK_A="$(basename .git/objects/pack/pack-A-*.pack)" &&
36+
PACK_B="$(basename .git/objects/pack/pack-B-*.pack)" &&
37+
PACK_C="$(basename .git/objects/pack/pack-C-*.pack)" &&
38+
39+
git pack-objects test --stdin-packs <<-EOF &&
40+
$PACK_A
41+
^$PACK_B
42+
$PACK_C
43+
EOF
44+
45+
(
46+
git show-index <$(ls .git/objects/pack/pack-A-*.idx) &&
47+
git show-index <$(ls .git/objects/pack/pack-C-*.idx)
48+
) >expect.raw &&
49+
git show-index <$(ls test-*.idx) >actual.raw &&
50+
51+
cut -d" " -f2 <expect.raw | sort >expect &&
52+
cut -d" " -f2 <actual.raw | sort >actual &&
53+
test_cmp expect actual
54+
)
55+
'
56+
57+
test_expect_success '--stdin-packs is incompatible with --filter' '
58+
(
59+
cd stdin-packs &&
60+
test_must_fail git pack-objects --stdin-packs --stdout \
61+
--filter=blob:none </dev/null 2>err &&
62+
test_i18ngrep "cannot use --filter with --stdin-packs" err
63+
)
64+
'
65+
66+
test_expect_success '--stdin-packs is incompatible with --revs' '
67+
(
68+
cd stdin-packs &&
69+
test_must_fail git pack-objects --stdin-packs --revs out \
70+
</dev/null 2>err &&
71+
test_i18ngrep "cannot use internal rev list with --stdin-packs" err
72+
)
73+
'
74+
75+
test_expect_success '--stdin-packs with loose objects' '
76+
(
77+
cd stdin-packs &&
78+
79+
PACK_A="$(basename .git/objects/pack/pack-A-*.pack)" &&
80+
PACK_B="$(basename .git/objects/pack/pack-B-*.pack)" &&
81+
PACK_C="$(basename .git/objects/pack/pack-C-*.pack)" &&
82+
83+
test_commit D && # loose
84+
85+
git pack-objects test2 --stdin-packs --unpacked <<-EOF &&
86+
$PACK_A
87+
^$PACK_B
88+
$PACK_C
89+
EOF
90+
91+
(
92+
git show-index <$(ls .git/objects/pack/pack-A-*.idx) &&
93+
git show-index <$(ls .git/objects/pack/pack-C-*.idx) &&
94+
git rev-list --objects --no-object-names \
95+
refs/tags/C..refs/tags/D
96+
97+
) >expect.raw &&
98+
ls -la . &&
99+
git show-index <$(ls test2-*.idx) >actual.raw &&
100+
101+
cut -d" " -f2 <expect.raw | sort >expect &&
102+
cut -d" " -f2 <actual.raw | sort >actual &&
103+
test_cmp expect actual
104+
)
105+
'
106+
107+
test_expect_success '--stdin-packs with broken links' '
108+
(
109+
cd stdin-packs &&
110+
111+
# make an unreachable object with a bogus parent
112+
git cat-file -p HEAD >commit &&
113+
sed "s/$(git rev-parse HEAD^)/$(test_oid zero)/" <commit |
114+
git hash-object -w -t commit --stdin >in &&
115+
116+
git pack-objects .git/objects/pack/pack-D <in &&
117+
118+
PACK_A="$(basename .git/objects/pack/pack-A-*.pack)" &&
119+
PACK_B="$(basename .git/objects/pack/pack-B-*.pack)" &&
120+
PACK_C="$(basename .git/objects/pack/pack-C-*.pack)" &&
121+
PACK_D="$(basename .git/objects/pack/pack-D-*.pack)" &&
122+
123+
git pack-objects test3 --stdin-packs --unpacked <<-EOF &&
124+
$PACK_A
125+
^$PACK_B
126+
$PACK_C
127+
$PACK_D
128+
EOF
129+
130+
(
131+
git show-index <$(ls .git/objects/pack/pack-A-*.idx) &&
132+
git show-index <$(ls .git/objects/pack/pack-C-*.idx) &&
133+
git show-index <$(ls .git/objects/pack/pack-D-*.idx) &&
134+
git rev-list --objects --no-object-names \
135+
refs/tags/C..refs/tags/D
136+
) >expect.raw &&
137+
git show-index <$(ls test3-*.idx) >actual.raw &&
138+
139+
cut -d" " -f2 <expect.raw | sort >expect &&
140+
cut -d" " -f2 <actual.raw | sort >actual &&
141+
test_cmp expect actual
142+
)
143+
'
144+
145+
test_done

0 commit comments

Comments
 (0)