git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 3/3] t0006-date.sh: add `human` date format tests.

From
SSStephen & Linda Smith <ischis2@cox.net>
Date
Jan 3, 2019, 02:36 UTC
Message-ID
<2832897.SWEsZI4Xea@thunderbird>
In-Reply-To
<xmqqva37j595.fsf@gitster-ct.c.googlers.com>
On Wednesday, January 2, 2019 11:15:02 AM MST Junio C Hamano wrote:
> 'date +%s' is used everywhere in this patch but has never been used
> in our test suite before.  It is not portable.

So I don't make this mistake again, Is there a reference somewhere for that is and is not portable?

Show 18 quoted lines
> 
> We perhaps can use "test-tool date timestamp", like so
> 
> 	check_human_date $(test-tool date timestamp "18000 seconds ago") ...
> 
> or moving the part that munges 18000 into the above form inside
> check_human_date helper function, e.g.
> 
> 	check_human_date () {
> 		commit_date=$(test-tool date timestamp "$1 seconds ago")
> 		commit_date="$commit_date +0200"
>                 expect=$2
> 		...
> 	}
> 
> which would let us write
> 
> 	check_human_date 432000" $THIS_YEAR_REGEX  # 5 days ago
Thanks
Show 26 quoted lines
>
> > +check_human_date() {
> > +	commit_date=$1
> > +	expect=$2
> > +	test_expect_success "$commit_date" "
> > +		echo $expect $commit_date >dates &&
> > +		git add dates &&
> > +		git commit -m 'Expect String' --date=\"$commit_date\" dates &&
> > +		git log -1 --date=human | grep \"^Date:\" >actual &&
> > +		grep \"$expect\" actual
> > +"
> 
> As the body of the test_expect_success helper is eval'ed, variables
> $commit_date and $expect should be visible to it, without turning
> them into values before executing test_expect_success function,
> i.e.
> 
> 	test_expect_success "$commit_date" '
> 		echo "$expect $commit_date" >dates &&
> 		...
> 		git commit -m "Expect String" --date="$commit_date" dates &&
> 		git show -s --date=human | grep '^Date:" >actual &&
> 		grep "$expect" actual
> 	'
> 
> which would reduce the need for unreadable backslashes.

I was worried about embedded spaces that might not be parsed correctly by the called function. I will update

> 
> Instead of duplicating, perhaps move this to a more common place?
> Would it make sense to make it "check_date_format ()" helper by
> passing another argument to parameterize --date=human part

I had considered that, but then noted that for the other formats specific strings were being used. The use of specific strings was possible since the other formats were always guarenteed to have the same string literal due to a singe unvarying input.

I don't mind parameterize the format and it would make the solution more general.

Show 19 quoted lines
> > "Stephen P. Smith" <ischis2@cox.net> writes:
> > +# Subtract some known constant time and look for expected field format
> > +TODAY_REGEX='5 hours ago'
> > +THIS_YEAR_REGEX='[A-Z][a-z][a-z] [A-Z][a-z][a-z] [0-9]*
> > [012][0-9]:[0-6][0-9]' +MORE_THAN_A_YEAR_REGEX='[A-Z][a-z][a-z]
> > [A-Z][a-z][a-z] [0-9]* [0-9][0-9][0-9][0-9]' +check_human_date "$(($(date
> > +%s)-18000)) +0200" $TODAY_REGEX # 5 hours ago +check_human_date
> > "$(($(date +%s)-432000)) +0200" $THIS_YEAR_REGEX  # 5 days ago
> > +check_human_date() {
> > +	commit_date=$1
> > +	expect=$2
> > +	test_expect_success "$commit_date" "
> > +		echo $expect $commit_date >dates &&
> > +		git add dates &&
> > +		git commit -m 'Expect String' --date=\"$commit_date\" dates &&
> > +		git show --date=human | grep \"^Date:\" >actual &&
> 
> Using "show" here is much better than "log -1" above; using "show
> -s" would be even better.

I was attempting to test both git log and git show. For get log the `-1` was to only get the latest commit.

Are you suggesting that t4202-log.sh not be updated and that only and t7007- show.sh and t0006-date.sh updated?

Side note: I found when updating that all three scripts that log and show returned the same formats, but date returned a different string if the delta date was less than 24hours

I just noted that the patch 3/3 should be re-titled since the tests are currently for three commands.

Hope you are better. sps

Previous: Junio C HamanoNext: Junio C Hamano
Message 5 of 56 in “Add 'human' date format”
  1. 0/3 Add 'human' date formatStephen P. Smith, Dec 31, 2018
  2. 2/3 Add 'human' date format documentationStephen P. Smith, Dec 31, 2018
  3. 3/3 t0006-date.sh: add `human` date format tests.Stephen P. Smith, Dec 31, 2018
  4. Junio C HamanoJan 2, 2019
  5. Stephen & Linda SmithJan 3, 2019
  6. Junio C HamanoJan 3, 2019
  7. Stephen P. SmithJan 3, 2019
  8. Philip OakleyJan 3, 2019
  9. Junio C HamanoJan 3, 2019
  10. Stephen P. SmithJan 3, 2019
  11. Jeff KingJan 3, 2019
  12. Stephen & Linda SmithJan 3, 2019
  13. Johannes SixtJan 8, 2019
  14. Stephen P. SmithJan 9, 2019
  15. Johannes SixtJan 9, 2019
  16. Stephen & Linda SmithJan 10, 2019
  17. 1/3 Add 'human' date formatStephen P. Smith, Dec 31, 2018
  18. Jeff KingJan 3, 2019
  19. Stephen P. SmithJan 3, 2019
  20. Jeff KingJan 4, 2019
  21. Stephen P SmithJan 4, 2019
  22. Jeff KingJan 6, 2019
  23. 0/5 Re-roll of 'human' date format patch setStephen P. Smith, Jan 18, 2019
  24. 3/5 Add 'human' date format documentationStephen P. Smith, Jan 18, 2019
  25. Junio C HamanoJan 18, 2019
  26. 2/5 Remove the proposed use of auto as secondary way to specify humanStephen P. Smith, Jan 18, 2019
  27. Junio C HamanoJan 18, 2019
  28. Stephen & Linda SmithJan 19, 2019
  29. 5/5 Add `human` date format tests.Stephen P. Smith, Jan 18, 2019
  30. Junio C HamanoJan 18, 2019
  31. 4/5 Add `human` format to test-toolStephen P. Smith, Jan 18, 2019
  32. Junio C HamanoJan 18, 2019
  33. Stephen P. SmithJan 20, 2019
  34. Junio C HamanoJan 22, 2019
  35. 1/5 Add 'human' date formatStephen P. Smith, Jan 18, 2019
  36. 0/5 Re-roll of 'human' date format patch setStephen P. Smith, Jan 21, 2019
  37. 1/5 Add 'human' date formatStephen P. Smith, Jan 21, 2019
  38. 2/5 Replace the proposed 'auto' mode with 'auto:'Stephen P. Smith, Jan 21, 2019
  39. 5/5 Add `human` date format tests.Stephen P. Smith, Jan 21, 2019
  40. 3/5 Add 'human' date format documentationStephen P. Smith, Jan 21, 2019
  41. 4/5 Add `human` format to test-toolStephen P. Smith, Jan 21, 2019
  42. Junio C HamanoJan 22, 2019
  43. 0/5 Re-roll of 'human' date format patch setStephen P. Smith, Jan 29, 2019
  44. 4/5 Add `human` format to test-toolStephen P. Smith, Jan 29, 2019
  45. 1/5 Add 'human' date formatStephen P. Smith, Jan 29, 2019
  46. 3/5 Add 'human' date format documentationStephen P. Smith, Jan 29, 2019
  47. 2/5 Replace the proposed 'auto' mode with 'auto:'Stephen P. Smith, Jan 29, 2019
  48. 5/5 Add `human` date format tests.Stephen P. Smith, Jan 29, 2019
  49. 0/5 Re-roll of 'human' date format patch setStephen P. Smith, Jan 21, 2019
  50. 1/5 Add 'human' date formatStephen P. Smith, Jan 21, 2019
  51. 5/5 Add `human` date format tests.Stephen P. Smith, Jan 21, 2019
  52. SZEDER GáborJan 21, 2019
  53. Stephen & Linda SmithJan 22, 2019
  54. 4/5 Add `human` format to test-toolStephen P. Smith, Jan 21, 2019
  55. 3/5 Add 'human' date format documentationStephen P. Smith, Jan 21, 2019
  56. 2/5 Replace the proposed 'auto' mode with 'auto:'Stephen P. Smith, Jan 21, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.