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

Re: [ANNOUNCE] Git v2.9.1

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 12, 2016, 18:12 UTC
Message-ID
<xmqqbn2267zq.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<alpine.DEB.2.20.1607121257450.6426@virtualbox>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>> Cool! Thanks for working on this.
>
> Well, I had to. Git for Windows v2.9.1 needs to get released, and I won't
> do that with a failing test suite.
Let's do 2.9.2 together, as this is not limited to GfW.
Taking Peff's suggestions into account, perhaps like the attached?

It wasn't readily apparent to me why 2038 check worked, so I added a short paragraph at the end, but those who know the test helper well enough may find it redundant, in which case I am fine with removing it.

Thanks.
-- >8 --
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Date: Tue, 12 Jul 2016 13:25:20 +0200
Subject: t0006: skip "far in the future" test when ulong is not long enough

Git's source code refers to timestamps as unsigned longs. On 32-bit platforms, as well as on Windows, unsigned long is not large enough to capture dates that are "absurdly far in the future".

While we can fix this issue properly by replacing unsigned long with a larger type, we want to be a bit more conservative and just skip those tests on the maint track.

The test helper reads the timestamp given from the command line into "unsigned long" using strtol(), which gives us LONG_MAX upon overflow, so feeding 9999999999 and seeing the resulting "timestamp" shown in year 2038 is a sufficient check for that condition.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 t/t0006-date.sh | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/t/t0006-date.sh b/t/t0006-date.sh
index 04ce535..6070c29 100755
--- a/t/t0006-date.sh
+++ b/t/t0006-date.sh
@@ -31,7 +31,7 @@ check_show () {
 	format=$1
 	time=$2
 	expect=$3
-	test_expect_${4:-success} "show date ($format:$time)" '
+	test_expect_success $4 "show date ($format:$time)" '
 		echo "$time -> $expect" >expect &&
 		test-date show:$format "$time" >actual &&
 		test_cmp expect actual
@@ -48,10 +48,22 @@ check_show default "$TIME" 'Wed Jun 15 16:13:20 2016 +0200'
 check_show raw "$TIME" '1466000000 +0200'
 check_show iso-local "$TIME" '2016-06-15 14:13:20 +0000'
 
+test_lazy_prereq 64BIT_TIME '
+	case "$(test-date show:iso 9999999999)" in
+	*" -> 2038-"*)
+		# on this platform, unsigned long is 32-bit, i.e. not large enough
+		false
+		;;
+	*)
+		true
+		;;
+	esac
+'
+
 # arbitrary time absurdly far in the future
 FUTURE="5758122296 -0400"
-check_show iso       "$FUTURE" "2152-06-19 18:24:56 -0400"
-check_show iso-local "$FUTURE" "2152-06-19 22:24:56 +0000"
+check_show iso       "$FUTURE" "2152-06-19 18:24:56 -0400" 64BIT_TIME
+check_show iso-local "$FUTURE" "2152-06-19 22:24:56 +0000" 64BIT_TIME
 
 check_parse() {
 	echo "$1 -> $2" >expect
-- 
2.9.1-500-g4c1e1e0
Previous: Johannes SchindelinNext: Junio C Hamano
Message 20 of 56 in “[ANNOUNCE] Git v2.9.1”
  1. Junio C HamanoJul 11, 2016
  2. Andreas SchwabJul 11, 2016
  3. Jeff KingJul 11, 2016
  4. Anders KaseorgJul 12, 2016
  5. Jeff KingJul 12, 2016
  6. Eric WongJul 12, 2016
  7. Jeff KingJul 12, 2016
  8. Junio C HamanoJul 12, 2016
  9. Jeff KingJul 12, 2016
  10. Junio C HamanoJul 12, 2016
  11. Johannes SchindelinJul 12, 2016
  12. Jeff KingJul 12, 2016
  13. Johannes SchindelinJul 12, 2016
  14. Jeff KingJul 12, 2016
  15. Johannes SchindelinJul 13, 2016
  16. Junio C HamanoJul 13, 2016
  17. Johannes SchindelinJul 13, 2016
  18. Junio C HamanoJul 13, 2016
  19. Johannes SchindelinJul 14, 2016
  20. Junio C HamanoJul 12, 2016
  21. Junio C HamanoJul 13, 2016
  22. Jeff KingJul 13, 2016
  23. Junio C HamanoJul 13, 2016
  24. Johannes SchindelinJul 13, 2016
  25. Junio C HamanoJul 13, 2016
  26. Johannes SchindelinJul 14, 2016
  27. Andreas SchwabJul 14, 2016
  28. Jeff KingJul 14, 2016
  29. Johannes SchindelinJul 14, 2016
  30. Andreas SchwabJul 12, 2016
  31. Johannes SchindelinJul 12, 2016
  32. Andreas SchwabJul 12, 2016
  33. Johannes SchindelinJul 12, 2016
  34. Andreas SchwabJul 12, 2016
  35. Jeff KingJul 12, 2016
  36. Duy NguyenJul 12, 2016
  37. Johannes SchindelinJul 13, 2016
  38. Johannes SchindelinJul 13, 2016
  39. Junio C HamanoJul 12, 2016
  40. Jeff KingJul 12, 2016
  41. Junio C HamanoJul 12, 2016
  42. Jeff KingJul 12, 2016
  43. Junio C HamanoJul 12, 2016
  44. Jeff KingJul 12, 2016
  45. Junio C HamanoJul 12, 2016
  46. Johannes SchindelinJul 13, 2016
  47. Junio C HamanoJul 13, 2016
  48. Johannes SchindelinJul 13, 2016
  49. Andreas SchwabJul 12, 2016
  50. Junio C HamanoJul 13, 2016
  51. Lars SchneiderJul 14, 2016
  52. Duy NguyenJul 16, 2016
  53. 32-bit Travis, was Re: [ANNOUNCE] Git v2.9.1Johannes Schindelin, Jul 14, 2016
  54. Mike HommeyJul 14, 2016
  55. Johannes SchindelinJul 14, 2016
  56. Mike HommeyJul 15, 2016

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.