Re: [PATCH 21/44] t5704: send object-format capability with SHA-256

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 13 May 2020 at 02:56, brian m. carlson
<sandals@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> When we speak protocol v2 in this test, we must pass the object-format
> header if the algorithm is not SHA-1.  Otherwise, git upload-pack fails
> because the hash algorithm doesn't match and not because we've failed to
> speak the protocol correctly.  Pass the header so that our assertions
> test what we're really interested in.

> +# If we don't print the object format, we'll fail for a spurious reason: the
> +# mismatched object format.
> +print_object_format () {
> +       local algo=$(test_oid algo) &&
> +       if test "$algo" != "sha1"
> +       then
> +               packetize "object-format=$algo"
> +       fi
> +}
> +
>  test_expect_success 'extra delim packet in v2 ls-refs args' '
>         {
>                 packetize command=ls-refs &&
> +               print_object_format &&
>                 printf 0001 &&
>                 # protocol expects 0000 flush here
>                 printf 0001
> @@ -21,6 +32,7 @@ test_expect_success 'extra delim packet in v2 ls-refs args' '
>  test_expect_success 'extra delim packet in v2 fetch args' '
>         {
>                 packetize command=fetch &&
> +               print_object_format &&
>                 printf 0001 &&
>                 # protocol expects 0000 flush here
>                 printf 0001

So we need to pass this capability for the SHA-256 tests to run ok. But
if we start passing "object-format=sha1" unconditionally at this point
in the series, the tests will fail:

  error: 'grep expected flush after ls-refs arguments err' didn't find
a match in:
  fatal: unknown capability 'object-format=sha1'

That is, we don't yet actually implement "object-format" handling. So
this will still fail with SHA-256 ("unknown capability"), just that once
the implementation is in place, the SHA-256 tests will pass (as will the
normal SHA-1 runs). Do I understand that correctly?

Or put differently, by the end of the series, we can do this:

diff --git a/t/t5704-protocol-violations.sh b/t/t5704-protocol-violations.sh
index 47e78932b9..22993812e2 100755
--- a/t/t5704-protocol-violations.sh
+++ b/t/t5704-protocol-violations.sh
@@ -6,14 +6,11 @@ communications if the other side says something
unexpected. We are mostly
 making sure that we do not segfault or otherwise behave badly.'
 . ./test-lib.sh

-# If we don't print the object format, we'll fail for a spurious reason: the
-# mismatched object format.
+# If we don't print the object format, we might fail for a spurious reason:
+# the mismatched object format.
 print_object_format () {
        local algo=$(test_oid algo) &&
-       if test "$algo" != "sha1"
-       then
-               packetize "object-format=$algo"
-       fi
+       packetize "object-format=$algo"
 }

 test_expect_success 'extra delim packet in v2 ls-refs args' '

Should we? (And if we do, we might as well drop this function and inline
the whole thing, IMHO.)


Martin



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux