diff mbox series

t9800: correct misuse of 'show -s --raw' in a test

Message ID xmqqild5rvvw.fsf@gitster.g (mailing list archive)
State Accepted
Commit b7cf25c8f486b3b9a99b2bbe68f158bc24f87b1c
Headers show
Series t9800: correct misuse of 'show -s --raw' in a test | expand

Commit Message

Junio C Hamano May 6, 2023, 9:29 p.m. UTC
There is $(git show -s --raw --pretty=format:%at HEAD) in this test
that is meant to grab the author time of the commit.  We used to
have a bug in the command line option parser of the diff family of
commands, where "show -s --raw" was identical to "show -s".

With the "-s" bug fixed, "show -s --raw" would mean the same thing
as "show --raw", i.e. show the output from the diff machinery in the
"raw" format.  And this test will start failing, so fix it before
that happens.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

* It appears pretty obvious that the original wanted to just grab
  the %at timestamp of the HEAD, and with the fix to allow output
  format options to take effect after "-s" is given, the existing
  misuse of "--raw" after "-s" that ought to be a no-op breaks the
  test.

  https://github.com/git/git/actions/runs/4897931294/jobs/8755228452#step:4:1847

  is CI run with the "-s" fix merged into 'seen'.

 t/t9800-git-p4-basic.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jeff King May 8, 2023, 6:55 p.m. UTC | #1
On Sat, May 06, 2023 at 02:29:55PM -0700, Junio C Hamano wrote:

> There is $(git show -s --raw --pretty=format:%at HEAD) in this test
> that is meant to grab the author time of the commit.  We used to
> have a bug in the command line option parser of the diff family of
> commands, where "show -s --raw" was identical to "show -s".
> 
> With the "-s" bug fixed, "show -s --raw" would mean the same thing
> as "show --raw", i.e. show the output from the diff machinery in the
> "raw" format.  And this test will start failing, so fix it before
> that happens.
> 
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
> 
> * It appears pretty obvious that the original wanted to just grab
>   the %at timestamp of the HEAD, and with the fix to allow output
>   format options to take effect after "-s" is given, the existing
>   misuse of "--raw" after "-s" that ought to be a no-op breaks the
>   test.

Yes, I think this is matching what the original code was trying to do.
The patch looks good to me.

-Peff
Junio C Hamano May 8, 2023, 8:53 p.m. UTC | #2
Jeff King <peff@peff.net> writes:

>> * It appears pretty obvious that the original wanted to just grab
>>   the %at timestamp of the HEAD, and with the fix to allow output
>>   format options to take effect after "-s" is given, the existing
>>   misuse of "--raw" after "-s" that ought to be a no-op breaks the
>>   test.
>
> Yes, I think this is matching what the original code was trying to do.
> The patch looks good to me.

Thanks.

This still can be a cause for backward compatibility worry, though.
I do not think anybody would have lifted $(git show -s --raw --format=%ad)
as a way to get the author timestamp from this test script, but it
is entirely possible that this was written by the author who saw it
done (incorrectly) that way elsewhere, and who knows how many others
copied that (incorrect) way of using "-s --raw" from that original
source we have no control over.

Anyway.
diff mbox series

Patch

diff --git a/t/t9800-git-p4-basic.sh b/t/t9800-git-p4-basic.sh
index dc88d0e064..a4b3cb9492 100755
--- a/t/t9800-git-p4-basic.sh
+++ b/t/t9800-git-p4-basic.sh
@@ -330,7 +330,7 @@  test_expect_success 'initial import time from top change time' '
 	test_when_finished cleanup_git &&
 	(
 		cd "$git" &&
-		gittime=$(git show -s --raw --pretty=format:%at HEAD) &&
+		gittime=$(git show -s --pretty=format:%at HEAD) &&
 		echo $p4time $gittime &&
 		test $p4time = $gittime
 	)