Patchwork [1,of,4,STABLE] tests: use basic format code "%Y" instead of "%s" for test portability

login
register
mail settings
Submitter Katsunori FUJIWARA
Date Oct. 29, 2016, 9:20 p.m.
Message ID <94ef2f00b8a498185495.1477776037@juju>
Download mbox | patch
Permalink /patch/17228/
State Accepted
Headers show

Comments

Katsunori FUJIWARA - Oct. 29, 2016, 9:20 p.m.
# HG changeset patch
# User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
# Date 1477775707 -32400
#      Sun Oct 30 06:15:07 2016 +0900
# Branch stable
# Node ID 94ef2f00b8a498185495908aa0ff4ff1908e60c2
# Parent  141cb12c0175d9e4fbdab1f69d99be24d50ce3f4
tests: use basic format code "%Y" instead of "%s" for test portability

On Windows, strftime() doesn't support format code "%s", and it causes
"invalid format string" error.

    https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx

test-command-template.t examines not seconds value in UTC, but
arithmetic calculation. Therefore, using format code "%Y" instead of
"%s" should be reasonable.

FYI:

- Python standard library reference doesn't list "%s" up in format
  code list required for "C standard (1989 version)", even though it
  also mentions that additional format codes are required for "C
  standard (1999 version)"

  https://docs.python.org/2.7/library/datetime.html#strftime-and-strptime-behavior

- The Open Group Base Specifications Issue 7 (IEEE Std 1003.1-2008,
  2016 Edition) doesn't require strftime to support format code "%s"

  http://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html

- "man strftime" of (Open/Oracle) Solaris and Mac OS X (= UNIX
  certified OSs) describes about format code "%s"
Yuya Nishihara - Oct. 30, 2016, 10:14 a.m.
On Sun, 30 Oct 2016 06:20:37 +0900, FUJIWARA Katsunori wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
> # Date 1477775707 -32400
> #      Sun Oct 30 06:15:07 2016 +0900
> # Branch stable
> # Node ID 94ef2f00b8a498185495908aa0ff4ff1908e60c2
> # Parent  141cb12c0175d9e4fbdab1f69d99be24d50ce3f4
> tests: use basic format code "%Y" instead of "%s" for test portability

Queued the series. Many thanks for fixing Windows portability issues.

Patch

diff --git a/tests/test-command-template.t b/tests/test-command-template.t
--- a/tests/test-command-template.t
+++ b/tests/test-command-template.t
@@ -31,10 +31,10 @@ 
 
 Test arithmetic operators have the right precedence:
 
-  $ hg log -l 1 -T '{date(date, "%s") + 5 * 10} {date(date, "%s") - 2 * 3}\n'
-  1500051 1499995
-  $ hg log -l 1 -T '{date(date, "%s") * 5 + 10} {date(date, "%s") * 3 - 2}\n'
-  7500015 4500001
+  $ hg log -l 1 -T '{date(date, "%Y") + 5 * 10} {date(date, "%Y") - 2 * 3}\n'
+  2020 1964
+  $ hg log -l 1 -T '{date(date, "%Y") * 5 + 10} {date(date, "%Y") * 3 - 2}\n'
+  9860 5908
 
 Test division: