t1006: test oid compatibility with cat-file
Update the existing tests that are oid based to test that cat-file works correctly with the normal oid and the compat_oid. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
baab175c1d
commit
3afa8d86ac
|
@ -236,15 +236,21 @@ hello_size=$(strlen "$hello_content")
|
||||||
hello_oid=$(echo_without_newline "$hello_content" | git hash-object --stdin)
|
hello_oid=$(echo_without_newline "$hello_content" | git hash-object --stdin)
|
||||||
|
|
||||||
test_expect_success "setup" '
|
test_expect_success "setup" '
|
||||||
|
git config core.repositoryformatversion 1 &&
|
||||||
|
git config extensions.objectformat $test_hash_algo &&
|
||||||
|
git config extensions.compatobjectformat $test_compat_hash_algo &&
|
||||||
echo_without_newline "$hello_content" > hello &&
|
echo_without_newline "$hello_content" > hello &&
|
||||||
git update-index --add hello
|
git update-index --add hello
|
||||||
'
|
'
|
||||||
|
|
||||||
run_tests 'blob' $hello_oid $hello_size "$hello_content" "$hello_content"
|
run_blob_tests () {
|
||||||
|
oid=$1
|
||||||
|
|
||||||
|
run_tests 'blob' $oid $hello_size "$hello_content" "$hello_content"
|
||||||
|
|
||||||
test_expect_success '--batch-command --buffer with flush for blob info' '
|
test_expect_success '--batch-command --buffer with flush for blob info' '
|
||||||
echo "$hello_oid blob $hello_size" >expect &&
|
echo "$oid blob $hello_size" >expect &&
|
||||||
test_write_lines "info $hello_oid" "flush" |
|
test_write_lines "info $oid" "flush" |
|
||||||
GIT_TEST_CAT_FILE_NO_FLUSH_ON_EXIT=1 \
|
GIT_TEST_CAT_FILE_NO_FLUSH_ON_EXIT=1 \
|
||||||
git cat-file --batch-command --buffer >actual &&
|
git cat-file --batch-command --buffer >actual &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
|
@ -252,11 +258,16 @@ test_expect_success '--batch-command --buffer with flush for blob info' '
|
||||||
|
|
||||||
test_expect_success '--batch-command --buffer without flush for blob info' '
|
test_expect_success '--batch-command --buffer without flush for blob info' '
|
||||||
touch output &&
|
touch output &&
|
||||||
test_write_lines "info $hello_oid" |
|
test_write_lines "info $oid" |
|
||||||
GIT_TEST_CAT_FILE_NO_FLUSH_ON_EXIT=1 \
|
GIT_TEST_CAT_FILE_NO_FLUSH_ON_EXIT=1 \
|
||||||
git cat-file --batch-command --buffer >>output &&
|
git cat-file --batch-command --buffer >>output &&
|
||||||
test_must_be_empty output
|
test_must_be_empty output
|
||||||
'
|
'
|
||||||
|
}
|
||||||
|
|
||||||
|
hello_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $hello_oid)
|
||||||
|
run_blob_tests $hello_oid
|
||||||
|
run_blob_tests $hello_compat_oid
|
||||||
|
|
||||||
test_expect_success '--batch-check without %(rest) considers whole line' '
|
test_expect_success '--batch-check without %(rest) considers whole line' '
|
||||||
echo "$hello_oid blob $hello_size" >expect &&
|
echo "$hello_oid blob $hello_size" >expect &&
|
||||||
|
@ -267,35 +278,58 @@ test_expect_success '--batch-check without %(rest) considers whole line' '
|
||||||
'
|
'
|
||||||
|
|
||||||
tree_oid=$(git write-tree)
|
tree_oid=$(git write-tree)
|
||||||
|
tree_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $tree_oid)
|
||||||
tree_size=$(($(test_oid rawsz) + 13))
|
tree_size=$(($(test_oid rawsz) + 13))
|
||||||
|
tree_compat_size=$(($(test_oid --hash=compat rawsz) + 13))
|
||||||
tree_pretty_content="100644 blob $hello_oid hello${LF}"
|
tree_pretty_content="100644 blob $hello_oid hello${LF}"
|
||||||
|
tree_compat_pretty_content="100644 blob $hello_compat_oid hello${LF}"
|
||||||
|
|
||||||
run_tests 'tree' $tree_oid $tree_size "" "$tree_pretty_content"
|
run_tests 'tree' $tree_oid $tree_size "" "$tree_pretty_content"
|
||||||
|
run_tests 'tree' $tree_compat_oid $tree_compat_size "" "$tree_compat_pretty_content"
|
||||||
|
|
||||||
commit_message="Initial commit"
|
commit_message="Initial commit"
|
||||||
commit_oid=$(echo_without_newline "$commit_message" | git commit-tree $tree_oid)
|
commit_oid=$(echo_without_newline "$commit_message" | git commit-tree $tree_oid)
|
||||||
|
commit_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $commit_oid)
|
||||||
commit_size=$(($(test_oid hexsz) + 137))
|
commit_size=$(($(test_oid hexsz) + 137))
|
||||||
|
commit_compat_size=$(($(test_oid --hash=compat hexsz) + 137))
|
||||||
commit_content="tree $tree_oid
|
commit_content="tree $tree_oid
|
||||||
author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
|
author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
|
||||||
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
|
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
|
||||||
|
|
||||||
$commit_message"
|
$commit_message"
|
||||||
|
|
||||||
run_tests 'commit' $commit_oid $commit_size "$commit_content" "$commit_content"
|
commit_compat_content="tree $tree_compat_oid
|
||||||
|
author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
|
||||||
|
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
|
||||||
|
|
||||||
tag_header_without_timestamp="object $hello_oid
|
$commit_message"
|
||||||
type blob
|
|
||||||
|
run_tests 'commit' $commit_oid $commit_size "$commit_content" "$commit_content"
|
||||||
|
run_tests 'commit' $commit_compat_oid $commit_compat_size "$commit_compat_content" "$commit_compat_content"
|
||||||
|
|
||||||
|
tag_header_without_oid="type blob
|
||||||
tag hellotag
|
tag hellotag
|
||||||
tagger $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
|
tagger $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
|
||||||
|
tag_header_without_timestamp="object $hello_oid
|
||||||
|
$tag_header_without_oid"
|
||||||
|
tag_compat_header_without_timestamp="object $hello_compat_oid
|
||||||
|
$tag_header_without_oid"
|
||||||
tag_description="This is a tag"
|
tag_description="This is a tag"
|
||||||
tag_content="$tag_header_without_timestamp 0 +0000
|
tag_content="$tag_header_without_timestamp 0 +0000
|
||||||
|
|
||||||
|
$tag_description"
|
||||||
|
tag_compat_content="$tag_compat_header_without_timestamp 0 +0000
|
||||||
|
|
||||||
$tag_description"
|
$tag_description"
|
||||||
|
|
||||||
tag_oid=$(echo_without_newline "$tag_content" | git hash-object -t tag --stdin -w)
|
tag_oid=$(echo_without_newline "$tag_content" | git hash-object -t tag --stdin -w)
|
||||||
tag_size=$(strlen "$tag_content")
|
tag_size=$(strlen "$tag_content")
|
||||||
|
|
||||||
|
tag_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $tag_oid)
|
||||||
|
tag_compat_size=$(strlen "$tag_compat_content")
|
||||||
|
|
||||||
run_tests 'tag' $tag_oid $tag_size "$tag_content" "$tag_content"
|
run_tests 'tag' $tag_oid $tag_size "$tag_content" "$tag_content"
|
||||||
|
run_tests 'tag' $tag_compat_oid $tag_compat_size "$tag_compat_content" "$tag_compat_content"
|
||||||
|
|
||||||
test_expect_success "Reach a blob from a tag pointing to it" '
|
test_expect_success "Reach a blob from a tag pointing to it" '
|
||||||
echo_without_newline "$hello_content" >expect &&
|
echo_without_newline "$hello_content" >expect &&
|
||||||
|
@ -303,38 +337,44 @@ test_expect_success "Reach a blob from a tag pointing to it" '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
for oid in $hello_oid $hello_compat_oid
|
||||||
|
do
|
||||||
for batch in batch batch-check batch-command
|
for batch in batch batch-check batch-command
|
||||||
do
|
do
|
||||||
for opt in t s e p
|
for opt in t s e p
|
||||||
do
|
do
|
||||||
test_expect_success "Passing -$opt with --$batch fails" '
|
test_expect_success "Passing -$opt with --$batch fails" '
|
||||||
test_must_fail git cat-file --$batch -$opt $hello_oid
|
test_must_fail git cat-file --$batch -$opt $oid
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success "Passing --$batch with -$opt fails" '
|
test_expect_success "Passing --$batch with -$opt fails" '
|
||||||
test_must_fail git cat-file -$opt --$batch $hello_oid
|
test_must_fail git cat-file -$opt --$batch $oid
|
||||||
'
|
'
|
||||||
done
|
done
|
||||||
|
|
||||||
test_expect_success "Passing <type> with --$batch fails" '
|
test_expect_success "Passing <type> with --$batch fails" '
|
||||||
test_must_fail git cat-file --$batch blob $hello_oid
|
test_must_fail git cat-file --$batch blob $oid
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success "Passing --$batch with <type> fails" '
|
test_expect_success "Passing --$batch with <type> fails" '
|
||||||
test_must_fail git cat-file blob --$batch $hello_oid
|
test_must_fail git cat-file blob --$batch $oid
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success "Passing oid with --$batch fails" '
|
test_expect_success "Passing oid with --$batch fails" '
|
||||||
test_must_fail git cat-file --$batch $hello_oid
|
test_must_fail git cat-file --$batch $oid
|
||||||
'
|
'
|
||||||
done
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
for oid in $hello_oid $hello_compat_oid
|
||||||
|
do
|
||||||
for opt in t s e p
|
for opt in t s e p
|
||||||
do
|
do
|
||||||
test_expect_success "Passing -$opt with --follow-symlinks fails" '
|
test_expect_success "Passing -$opt with --follow-symlinks fails" '
|
||||||
test_must_fail git cat-file --follow-symlinks -$opt $hello_oid
|
test_must_fail git cat-file --follow-symlinks -$opt $oid
|
||||||
'
|
'
|
||||||
done
|
done
|
||||||
|
done
|
||||||
|
|
||||||
test_expect_success "--batch-check for a non-existent named object" '
|
test_expect_success "--batch-check for a non-existent named object" '
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
|
@ -386,20 +426,31 @@ test_expect_success 'empty --batch-check notices missing object' '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
batch_input="$hello_oid
|
batch_tests () {
|
||||||
$commit_oid
|
boid=$1
|
||||||
$tag_oid
|
loid=$2
|
||||||
|
lsize=$3
|
||||||
|
coid=$4
|
||||||
|
csize=$5
|
||||||
|
ccontent=$6
|
||||||
|
toid=$7
|
||||||
|
tsize=$8
|
||||||
|
tcontent=$9
|
||||||
|
|
||||||
|
batch_input="$boid
|
||||||
|
$coid
|
||||||
|
$toid
|
||||||
deadbeef
|
deadbeef
|
||||||
|
|
||||||
"
|
"
|
||||||
|
|
||||||
printf "%s\0" \
|
printf "%s\0" \
|
||||||
"$hello_oid blob $hello_size" \
|
"$boid blob $hello_size" \
|
||||||
"$hello_content" \
|
"$hello_content" \
|
||||||
"$commit_oid commit $commit_size" \
|
"$coid commit $csize" \
|
||||||
"$commit_content" \
|
"$ccontent" \
|
||||||
"$tag_oid tag $tag_size" \
|
"$toid tag $tsize" \
|
||||||
"$tag_content" \
|
"$tcontent" \
|
||||||
"deadbeef missing" \
|
"deadbeef missing" \
|
||||||
" missing" >batch_output
|
" missing" >batch_output
|
||||||
|
|
||||||
|
@ -423,19 +474,19 @@ test_expect_success '--batch, -Z with multiple oids gives correct format' '
|
||||||
test_cmp batch_output actual
|
test_cmp batch_output actual
|
||||||
'
|
'
|
||||||
|
|
||||||
batch_check_input="$hello_oid
|
batch_check_input="$boid
|
||||||
$tree_oid
|
$loid
|
||||||
$commit_oid
|
$coid
|
||||||
$tag_oid
|
$toid
|
||||||
deadbeef
|
deadbeef
|
||||||
|
|
||||||
"
|
"
|
||||||
|
|
||||||
printf "%s\0" \
|
printf "%s\0" \
|
||||||
"$hello_oid blob $hello_size" \
|
"$boid blob $hello_size" \
|
||||||
"$tree_oid tree $tree_size" \
|
"$loid tree $lsize" \
|
||||||
"$commit_oid commit $commit_size" \
|
"$coid commit $csize" \
|
||||||
"$tag_oid tag $tag_size" \
|
"$toid tag $tsize" \
|
||||||
"deadbeef missing" \
|
"deadbeef missing" \
|
||||||
" missing" >batch_check_output
|
" missing" >batch_check_output
|
||||||
|
|
||||||
|
@ -459,39 +510,18 @@ test_expect_success "--batch-check, -Z with multiple oids gives correct format"
|
||||||
test_cmp batch_check_output actual
|
test_cmp batch_check_output actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success FUNNYNAMES 'setup with newline in input' '
|
batch_command_multiple_info="info $boid
|
||||||
touch -- "newline${LF}embedded" &&
|
info $loid
|
||||||
git add -- "newline${LF}embedded" &&
|
info $coid
|
||||||
git commit -m "file with newline embedded" &&
|
info $toid
|
||||||
test_tick &&
|
|
||||||
|
|
||||||
printf "HEAD:newline${LF}embedded" >in
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success FUNNYNAMES '--batch-check, -z with newline in input' '
|
|
||||||
git cat-file --batch-check -z <in >actual &&
|
|
||||||
echo "$(git rev-parse "HEAD:newline${LF}embedded") blob 0" >expect &&
|
|
||||||
test_cmp expect actual
|
|
||||||
'
|
|
||||||
|
|
||||||
test_expect_success FUNNYNAMES '--batch-check, -Z with newline in input' '
|
|
||||||
git cat-file --batch-check -Z <in >actual &&
|
|
||||||
printf "%s\0" "$(git rev-parse "HEAD:newline${LF}embedded") blob 0" >expect &&
|
|
||||||
test_cmp expect actual
|
|
||||||
'
|
|
||||||
|
|
||||||
batch_command_multiple_info="info $hello_oid
|
|
||||||
info $tree_oid
|
|
||||||
info $commit_oid
|
|
||||||
info $tag_oid
|
|
||||||
info deadbeef"
|
info deadbeef"
|
||||||
|
|
||||||
test_expect_success '--batch-command with multiple info calls gives correct format' '
|
test_expect_success '--batch-command with multiple info calls gives correct format' '
|
||||||
cat >expect <<-EOF &&
|
cat >expect <<-EOF &&
|
||||||
$hello_oid blob $hello_size
|
$boid blob $hello_size
|
||||||
$tree_oid tree $tree_size
|
$loid tree $lsize
|
||||||
$commit_oid commit $commit_size
|
$coid commit $csize
|
||||||
$tag_oid tag $tag_size
|
$toid tag $tsize
|
||||||
deadbeef missing
|
deadbeef missing
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
@ -512,20 +542,20 @@ test_expect_success '--batch-command with multiple info calls gives correct form
|
||||||
test_cmp expect_nul actual
|
test_cmp expect_nul actual
|
||||||
'
|
'
|
||||||
|
|
||||||
batch_command_multiple_contents="contents $hello_oid
|
batch_command_multiple_contents="contents $boid
|
||||||
contents $commit_oid
|
contents $coid
|
||||||
contents $tag_oid
|
contents $toid
|
||||||
contents deadbeef
|
contents deadbeef
|
||||||
flush"
|
flush"
|
||||||
|
|
||||||
test_expect_success '--batch-command with multiple command calls gives correct format' '
|
test_expect_success '--batch-command with multiple command calls gives correct format' '
|
||||||
printf "%s\0" \
|
printf "%s\0" \
|
||||||
"$hello_oid blob $hello_size" \
|
"$boid blob $hello_size" \
|
||||||
"$hello_content" \
|
"$hello_content" \
|
||||||
"$commit_oid commit $commit_size" \
|
"$coid commit $csize" \
|
||||||
"$commit_content" \
|
"$ccontent" \
|
||||||
"$tag_oid tag $tag_size" \
|
"$toid tag $tsize" \
|
||||||
"$tag_content" \
|
"$tcontent" \
|
||||||
"deadbeef missing" >expect_nul &&
|
"deadbeef missing" >expect_nul &&
|
||||||
tr "\0" "\n" <expect_nul >expect &&
|
tr "\0" "\n" <expect_nul >expect &&
|
||||||
|
|
||||||
|
@ -545,6 +575,33 @@ test_expect_success '--batch-command with multiple command calls gives correct f
|
||||||
test_cmp expect_nul actual
|
test_cmp expect_nul actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
batch_tests $hello_oid $tree_oid $tree_size $commit_oid $commit_size "$commit_content" $tag_oid $tag_size "$tag_content"
|
||||||
|
batch_tests $hello_compat_oid $tree_compat_oid $tree_compat_size $commit_compat_oid $commit_compat_size "$commit_compat_content" $tag_compat_oid $tag_compat_size "$tag_compat_content"
|
||||||
|
|
||||||
|
|
||||||
|
test_expect_success FUNNYNAMES 'setup with newline in input' '
|
||||||
|
touch -- "newline${LF}embedded" &&
|
||||||
|
git add -- "newline${LF}embedded" &&
|
||||||
|
git commit -m "file with newline embedded" &&
|
||||||
|
test_tick &&
|
||||||
|
|
||||||
|
printf "HEAD:newline${LF}embedded" >in
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success FUNNYNAMES '--batch-check, -z with newline in input' '
|
||||||
|
git cat-file --batch-check -z <in >actual &&
|
||||||
|
echo "$(git rev-parse "HEAD:newline${LF}embedded") blob 0" >expect &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success FUNNYNAMES '--batch-check, -Z with newline in input' '
|
||||||
|
git cat-file --batch-check -Z <in >actual &&
|
||||||
|
printf "%s\0" "$(git rev-parse "HEAD:newline${LF}embedded") blob 0" >expect &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'setup blobs which are likely to delta' '
|
test_expect_success 'setup blobs which are likely to delta' '
|
||||||
test-tool genrandom foo 10240 >foo &&
|
test-tool genrandom foo 10240 >foo &&
|
||||||
{ cat foo && echo plus; } >foo-plus &&
|
{ cat foo && echo plus; } >foo-plus &&
|
||||||
|
|
Loading…
Reference in New Issue