diff mbox series

[v9,01/17] fsck tests: add test for fsck-ing an unknown type

Message ID patch-v9-01.17-520732612f7-20210930T133300Z-avarab@gmail.com (mailing list archive)
State Superseded
Headers show
Series fsck: lib-ify object-file.c & better fsck "invalid object" error reporting | expand

Commit Message

Ævar Arnfjörð Bjarmason Sept. 30, 2021, 1:37 p.m. UTC
Fix a blindspot in the fsck tests by checking what we do when we
encounter an unknown "garbage" type produced with hash-object's
--literally option.

This behavior needs to be improved, which'll be done in subsequent
patches, but for now let's test for the current behavior.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 t/t1450-fsck.sh | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

Comments

Andrei Rybak Sept. 30, 2021, 7:22 p.m. UTC | #1
On 30/09/2021 15:37, Ævar Arnfjörð Bjarmason wrote:
> Fix a blindspot in the fsck tests by checking what we do when we
> encounter an unknown "garbage" type produced with hash-object's
> --literally option.
> 
> This behavior needs to be improved, which'll be done in subsequent
> patches, but for now let's test for the current behavior.
> 
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
>   t/t1450-fsck.sh | 17 +++++++++++++++++
>   1 file changed, 17 insertions(+)
> 
> diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
> index 5071ac63a5b..969bfbbdd8f 100755
> --- a/t/t1450-fsck.sh
> +++ b/t/t1450-fsck.sh
> @@ -865,4 +865,21 @@ test_expect_success 'detect corrupt index file in fsck' '
>   	test_i18ngrep "bad index file" errors
>   '
>   
> +test_expect_success 'fsck hard errors on an invalid object type' '
> +	git init --bare garbage-type &&
> +	(
> +		cd garbage-type &&
> +
> +		empty=$(git hash-object --stdin -w -t blob </dev/null) &&
> +		garbage=$(git hash-object --stdin -w -t garbage --literally </dev/null) &&

Patch 01/17 introduces two unused variables: "garbage" and "empty".
However, patch 16/17 introduces grep checks for "garbage_blob" and
"empty_blob". Aside from that, 't/test-lib.sh' already defines
$EMPTY_BLOB.

> +
> +		cat >err.expect <<-\EOF &&
> +		fatal: invalid object type
> +		EOF
> +		test_must_fail git fsck >out 2>err &&
> +		test_cmp err.expect err &&
> +		test_must_be_empty out
> +	)
> +'
> +
>   test_done
>
Ævar Arnfjörð Bjarmason Oct. 1, 2021, 9:05 a.m. UTC | #2
On Thu, Sep 30 2021, Andrei Rybak wrote:

> On 30/09/2021 15:37, Ævar Arnfjörð Bjarmason wrote:
>> Fix a blindspot in the fsck tests by checking what we do when we
>> encounter an unknown "garbage" type produced with hash-object's
>> --literally option.
>> This behavior needs to be improved, which'll be done in subsequent
>> patches, but for now let's test for the current behavior.
>> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
>> ---
>>   t/t1450-fsck.sh | 17 +++++++++++++++++
>>   1 file changed, 17 insertions(+)
>> diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
>> index 5071ac63a5b..969bfbbdd8f 100755
>> --- a/t/t1450-fsck.sh
>> +++ b/t/t1450-fsck.sh
>> @@ -865,4 +865,21 @@ test_expect_success 'detect corrupt index file in fsck' '
>>   	test_i18ngrep "bad index file" errors
>>   '
>>   +test_expect_success 'fsck hard errors on an invalid object type'
>> '
>> +	git init --bare garbage-type &&
>> +	(
>> +		cd garbage-type &&
>> +
>> +		empty=$(git hash-object --stdin -w -t blob </dev/null) &&
>> +		garbage=$(git hash-object --stdin -w -t garbage --literally </dev/null) &&
>
> Patch 01/17 introduces two unused variables: "garbage" and "empty".
> However, patch 16/17 introduces grep checks for "garbage_blob" and
> "empty_blob". Aside from that, 't/test-lib.sh' already defines
> $EMPTY_BLOB.

Will fix in the v10 re-roll.

I think this is from an earlier version where I used the $empty, FWIW
you do need it (or to write it) even with $EMPTY_BLOB since that's just
the OID, but doesn't give you the object. You can write the /dev/null
input and then use $EMPTY_BLOB, but I thought using the output of
hash-object was less confusing.

But in any case it isn't needed herea as you point out, we just need to
write the garbage object, we don't need either variable. Thanks!
diff mbox series

Patch

diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
index 5071ac63a5b..969bfbbdd8f 100755
--- a/t/t1450-fsck.sh
+++ b/t/t1450-fsck.sh
@@ -865,4 +865,21 @@  test_expect_success 'detect corrupt index file in fsck' '
 	test_i18ngrep "bad index file" errors
 '
 
+test_expect_success 'fsck hard errors on an invalid object type' '
+	git init --bare garbage-type &&
+	(
+		cd garbage-type &&
+
+		empty=$(git hash-object --stdin -w -t blob </dev/null) &&
+		garbage=$(git hash-object --stdin -w -t garbage --literally </dev/null) &&
+
+		cat >err.expect <<-\EOF &&
+		fatal: invalid object type
+		EOF
+		test_must_fail git fsck >out 2>err &&
+		test_cmp err.expect err &&
+		test_must_be_empty out
+	)
+'
+
 test_done