Merge branch 'js/t5534-rev-parse-gives-multi-line-output-fix'
authorJunio C Hamano <gitster@pobox.com>
Fri, 7 Jul 2017 01:14:46 +0000 (18:14 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 7 Jul 2017 01:14:46 +0000 (18:14 -0700)
A few tests that tried to verify the contents of push certificates
did not use 'git rev-parse' to formulate the line to look for in
the certificate correctly.

* js/t5534-rev-parse-gives-multi-line-output-fix:
t5534: fix misleading grep invocation

1  2 
t/t5534-push-signed.sh
diff --combined t/t5534-push-signed.sh
index 5bcb288f5c4d02e7994d745bc07485bf1bf6c116,2db0c3389c01cc31fdbf553592fc6b47cc8480c2..464ffdd147abbae354ae3adfe593b89a37d5c726
@@@ -119,48 -119,14 +119,51 @@@ test_expect_success GPG 'signed push se
                sed -n -e "s/^nonce /NONCE=/p" -e "/^$/q" dst/push-cert
        ) >expect &&
  
-       grep "$(git rev-parse noop ff) refs/heads/ff" dst/push-cert &&
-       grep "$(git rev-parse noop noff) refs/heads/noff" dst/push-cert &&
+       noop=$(git rev-parse noop) &&
+       ff=$(git rev-parse ff) &&
+       noff=$(git rev-parse noff) &&
+       grep "$noop $ff refs/heads/ff" dst/push-cert &&
+       grep "$noop $noff refs/heads/noff" dst/push-cert &&
        test_cmp expect dst/push-cert-status
  '
  
 +test_expect_success GPG 'inconsistent push options in signed push not allowed' '
 +      # First, invoke receive-pack with dummy input to obtain its preamble.
 +      prepare_dst &&
 +      git -C dst config receive.certnonceseed sekrit &&
 +      git -C dst config receive.advertisepushoptions 1 &&
 +      printf xxxx | test_might_fail git receive-pack dst >preamble &&
 +
 +      # Then, invoke push. Simulate a receive-pack that sends the preamble we
 +      # obtained, followed by a dummy packet.
 +      write_script myscript <<-\EOF &&
 +              cat preamble &&
 +              printf xxxx &&
 +              cat >push
 +      EOF
 +      test_might_fail git push --push-option="foo" --push-option="bar" \
 +              --receive-pack="\"$(pwd)/myscript\"" --signed dst --delete ff &&
 +
 +      # Replay the push output on a fresh dst, checking that ff is truly
 +      # deleted.
 +      prepare_dst &&
 +      git -C dst config receive.certnonceseed sekrit &&
 +      git -C dst config receive.advertisepushoptions 1 &&
 +      git receive-pack dst <push &&
 +      test_must_fail git -C dst rev-parse ff &&
 +
 +      # Tweak the push output to make the push option outside the cert
 +      # different, then replay it on a fresh dst, checking that ff is not
 +      # deleted.
 +      perl -pe "s/([^ ])bar/\$1baz/" push >push.tweak &&
 +      prepare_dst &&
 +      git -C dst config receive.certnonceseed sekrit &&
 +      git -C dst config receive.advertisepushoptions 1 &&
 +      git receive-pack dst <push.tweak >out &&
 +      git -C dst rev-parse ff &&
 +      grep "inconsistent push options" out
 +'
 +
  test_expect_success GPG 'fail without key and heed user.signingkey' '
        prepare_dst &&
        mkdir -p dst/.git/hooks &&
                sed -n -e "s/^nonce /NONCE=/p" -e "/^$/q" dst/push-cert
        ) >expect &&
  
-       grep "$(git rev-parse noop ff) refs/heads/ff" dst/push-cert &&
-       grep "$(git rev-parse noop noff) refs/heads/noff" dst/push-cert &&
+       noop=$(git rev-parse noop) &&
+       ff=$(git rev-parse ff) &&
+       noff=$(git rev-parse noff) &&
+       grep "$noop $ff refs/heads/ff" dst/push-cert &&
+       grep "$noop $noff refs/heads/noff" dst/push-cert &&
        test_cmp expect dst/push-cert-status
  '