241
hello_size=$(strlen "$hello_content")
242
hello_oid=$(echo_without_newline "$hello_content" | git hash-object --stdin)
243
244
-test_expect_success "setup" '
244
+test_expect_success "setup part 1" '
245
git config core.repositoryformatversion 1 &&
246
- git config extensions.objectformat $test_hash_algo &&
247
- git config extensions.compatobjectformat $test_compat_hash_algo &&
246
+ git config extensions.objectformat $test_hash_algo
247
+'
248
+
249
+test_expect_success RUST 'compat setup' '
250
+ git config extensions.compatobjectformat $test_compat_hash_algo
251
+'
252
+
253
+test_expect_success 'setup part 2' '
254
echo_without_newline "$hello_content" > hello &&
255
git update-index --add hello &&
256
echo_without_newline "$hello_content" > "path with spaces" &&
279
'
280
}
281
276
-hello_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $hello_oid)
282
run_blob_tests $hello_oid
278
-run_blob_tests $hello_compat_oid
283
+
284
+if test_have_prereq RUST
285
+then
286
+ hello_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $hello_oid)
287
+ run_blob_tests $hello_compat_oid
288
+fi
289
290
test_expect_success '--batch-check without %(rest) considers whole line' '
291
echo "$hello_oid blob $hello_size" >expect &&
296
'
297
298
tree_oid=$(git write-tree)
289
-tree_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $tree_oid)
299
tree_size=$((2 * $(test_oid rawsz) + 13 + 24))
291
-tree_compat_size=$((2 * $(test_oid --hash=compat rawsz) + 13 + 24))
300
tree_pretty_content="100644 blob $hello_oid hello${LF}100755 blob $hello_oid path with spaces${LF}"
293
-tree_compat_pretty_content="100644 blob $hello_compat_oid hello${LF}100755 blob $hello_compat_oid path with spaces${LF}"
301
302
run_tests 'tree' $tree_oid "" $tree_size "" "$tree_pretty_content"
296
-run_tests 'tree' $tree_compat_oid "" $tree_compat_size "" "$tree_compat_pretty_content"
303
run_tests 'blob' "$tree_oid:hello" "100644" $hello_size "" "$hello_content" $hello_oid
298
-run_tests 'blob' "$tree_compat_oid:hello" "100644" $hello_size "" "$hello_content" $hello_compat_oid
304
run_tests 'blob' "$tree_oid:path with spaces" "100755" $hello_size "" "$hello_content" $hello_oid
300
-run_tests 'blob' "$tree_compat_oid:path with spaces" "100755" $hello_size "" "$hello_content" $hello_compat_oid
305
+
306
+if test_have_prereq RUST
307
+then
308
+ tree_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $tree_oid)
309
+ tree_compat_size=$((2 * $(test_oid --hash=compat rawsz) + 13 + 24))
310
+ tree_compat_pretty_content="100644 blob $hello_compat_oid hello${LF}100755 blob $hello_compat_oid path with spaces${LF}"
311
+
312
+ run_tests 'tree' $tree_compat_oid "" $tree_compat_size "" "$tree_compat_pretty_content"
313
+ run_tests 'blob' "$tree_compat_oid:hello" "100644" $hello_size "" "$hello_content" $hello_compat_oid
314
+ run_tests 'blob' "$tree_compat_oid:path with spaces" "100755" $hello_size "" "$hello_content" $hello_compat_oid
315
+fi
316
317
commit_message="Initial commit"
318
commit_oid=$(echo_without_newline "$commit_message" | git commit-tree $tree_oid)
304
-commit_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $commit_oid)
319
commit_size=$(($(test_oid hexsz) + 137))
306
-commit_compat_size=$(($(test_oid --hash=compat hexsz) + 137))
320
commit_content="tree $tree_oid
321
author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
322
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
323
324
$commit_message"
325
313
-commit_compat_content="tree $tree_compat_oid
326
+run_tests 'commit' $commit_oid "" $commit_size "$commit_content" "$commit_content"
327
+
328
+if test_have_prereq RUST
329
+then
330
+ commit_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $commit_oid)
331
+ commit_compat_size=$(($(test_oid --hash=compat hexsz) + 137))
332
+ commit_compat_content="tree $tree_compat_oid
333
author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> $GIT_AUTHOR_DATE
334
committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
335
336
$commit_message"
337
319
-run_tests 'commit' $commit_oid "" $commit_size "$commit_content" "$commit_content"
320
-run_tests 'commit' $commit_compat_oid "" $commit_compat_size "$commit_compat_content" "$commit_compat_content"
338
+ run_tests 'commit' $commit_compat_oid "" $commit_compat_size "$commit_compat_content" "$commit_compat_content"
339
+fi
340
341
tag_header_without_oid="type blob
342
tag hellotag
343
tagger $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
344
tag_header_without_timestamp="object $hello_oid
345
$tag_header_without_oid"
327
-tag_compat_header_without_timestamp="object $hello_compat_oid
328
-$tag_header_without_oid"
346
tag_description="This is a tag"
347
tag_content="$tag_header_without_timestamp 0 +0000
348
332
-$tag_description"
333
-tag_compat_content="$tag_compat_header_without_timestamp 0 +0000
334
-
349
$tag_description"
350
351
tag_oid=$(echo_without_newline "$tag_content" | git hash-object -t tag --stdin -w)
352
tag_size=$(strlen "$tag_content")
353
340
-tag_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $tag_oid)
341
-tag_compat_size=$(strlen "$tag_compat_content")
342
-
354
run_tests 'tag' $tag_oid "" $tag_size "$tag_content" "$tag_content"
344
-run_tests 'tag' $tag_compat_oid "" $tag_compat_size "$tag_compat_content" "$tag_compat_content"
355
+
356
+if test_have_prereq RUST
357
+then
358
+ tag_compat_header_without_timestamp="object $hello_compat_oid
359
+$tag_header_without_oid"
360
+ tag_compat_content="$tag_compat_header_without_timestamp 0 +0000
361
+
362
+$tag_description"
363
+
364
+ tag_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $tag_oid)
365
+ tag_compat_size=$(strlen "$tag_compat_content")
366
+
367
+ run_tests 'tag' $tag_compat_oid "" $tag_compat_size "$tag_compat_content" "$tag_compat_content"
368
+fi
369
370
test_expect_success "Reach a blob from a tag pointing to it" '
371
echo_without_newline "$hello_content" >expect &&
614
}
615
616
batch_tests $hello_oid $tree_oid $tree_size $commit_oid $commit_size "$commit_content" $tag_oid $tag_size "$tag_content"
593
-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"
617
+
618
+test_have_prereq RUST && 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"
619
620
621
test_expect_success FUNNYNAMES 'setup with newline in input' '
1261
test_unconfig extensions.compatobjectformat &&
1262
printf "160000 commit $(test_oid deadbeef)\tsub\n" >tree-with-sub &&
1263
tree=$(git mktree <tree-with-sub) &&
1239
- test_config extensions.compatobjectformat $test_compat_hash_algo &&
1264
+ if test_have_prereq RUST
1265
+ then
1266
+ test_config extensions.compatobjectformat $test_compat_hash_algo
1267
+ fi &&
1268
1269
git cat-file --batch-check >actual <<-EOF &&
1270
$tree:sub