|
402 | 402 | done
|
403 | 403 | done
|
404 | 404 |
|
| 405 | +test_expect_success '-e is OK with a broken object without --allow-unknown-type' ' |
| 406 | + git cat-file -e $bogus_short_sha1 |
| 407 | +' |
| 408 | + |
| 409 | +test_expect_success '-e can not be combined with --allow-unknown-type' ' |
| 410 | + test_expect_code 128 git cat-file -e --allow-unknown-type $bogus_short_sha1 |
| 411 | +' |
| 412 | + |
| 413 | +test_expect_success '-p cannot print a broken object even with --allow-unknown-type' ' |
| 414 | + test_must_fail git cat-file -p $bogus_short_sha1 && |
| 415 | + test_expect_code 128 git cat-file -p --allow-unknown-type $bogus_short_sha1 |
| 416 | +' |
| 417 | + |
| 418 | +test_expect_success '<type> <hash> does not work with objects of broken types' ' |
| 419 | + cat >err.expect <<-\EOF && |
| 420 | + fatal: invalid object type "bogus" |
| 421 | + EOF |
| 422 | + test_must_fail git cat-file $bogus_short_type $bogus_short_sha1 2>err.actual && |
| 423 | + test_cmp err.expect err.actual |
| 424 | +' |
| 425 | + |
| 426 | +test_expect_success 'broken types combined with --batch and --batch-check' ' |
| 427 | + echo $bogus_short_sha1 >bogus-oid && |
| 428 | +
|
| 429 | + cat >err.expect <<-\EOF && |
| 430 | + fatal: invalid object type |
| 431 | + EOF |
| 432 | +
|
| 433 | + test_must_fail git cat-file --batch <bogus-oid 2>err.actual && |
| 434 | + test_cmp err.expect err.actual && |
| 435 | +
|
| 436 | + test_must_fail git cat-file --batch-check <bogus-oid 2>err.actual && |
| 437 | + test_cmp err.expect err.actual |
| 438 | +' |
| 439 | + |
| 440 | +test_expect_success 'the --batch and --batch-check options do not combine with --allow-unknown-type' ' |
| 441 | + test_expect_code 128 git cat-file --batch --allow-unknown-type <bogus-oid && |
| 442 | + test_expect_code 128 git cat-file --batch-check --allow-unknown-type <bogus-oid |
| 443 | +' |
| 444 | + |
| 445 | +test_expect_success 'the --allow-unknown-type option does not consider replacement refs' ' |
| 446 | + cat >expect <<-EOF && |
| 447 | + $bogus_short_type |
| 448 | + EOF |
| 449 | + git cat-file -t --allow-unknown-type $bogus_short_sha1 >actual && |
| 450 | + test_cmp expect actual && |
| 451 | +
|
| 452 | + # Create it manually, as "git replace" will die on bogus |
| 453 | + # types. |
| 454 | + head=$(git rev-parse --verify HEAD) && |
| 455 | + test_when_finished "rm -rf .git/refs/replace" && |
| 456 | + mkdir -p .git/refs/replace && |
| 457 | + echo $head >.git/refs/replace/$bogus_short_sha1 && |
| 458 | +
|
| 459 | + cat >expect <<-EOF && |
| 460 | + commit |
| 461 | + EOF |
| 462 | + git cat-file -t --allow-unknown-type $bogus_short_sha1 >actual && |
| 463 | + test_cmp expect actual |
| 464 | +' |
| 465 | + |
405 | 466 | test_expect_success "Type of broken object is correct" '
|
406 | 467 | echo $bogus_short_type >expect &&
|
407 | 468 | git cat-file -t --allow-unknown-type $bogus_short_sha1 >actual &&
|
|
0 commit comments