From b8d5701a2a04d0510fce49f9bf30c279dd7f7e14 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Thu, 28 Aug 2014 17:49:15 +0200
Subject: [PATCH] Calendar: Improved dwim_time() for ISO-8601 dates.

Also adds some corresponding testsuite tests.

FIXME: Ought to have tests for all the patterns in dwim_{day,time}().
---
 lib/modules/Calendar.pmod/YMD.pike     | 4 +++-
 lib/modules/Calendar.pmod/testsuite.in | 8 +++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/lib/modules/Calendar.pmod/YMD.pike b/lib/modules/Calendar.pmod/YMD.pike
index d2ae208bc6..49e8d32c28 100644
--- a/lib/modules/Calendar.pmod/YMD.pike
+++ b/lib/modules/Calendar.pmod/YMD.pike
@@ -3257,7 +3257,9 @@ TimeofDay dwim_time(string what,void|TimeRange cx)
 		   "%*[a-zA-Z.] %h"COLON"%m %z",
 		   "%*[a-zA-Z.] %h"COLON"%m%z",
 		   "%*[a-zA-Z.] %h"COLON"%m",
- 		   "%*[a-zA-Z.] %h%*[ ]%p", }),
+		   "%*[a-zA-Z.] %h%*[ ]%p",
+		   "%t",
+		}),
 		string todformat )
       {
 //  	 werror("try: %O\n     %O\n",
diff --git a/lib/modules/Calendar.pmod/testsuite.in b/lib/modules/Calendar.pmod/testsuite.in
index 0f46374d22..1927dda2ce 100644
--- a/lib/modules/Calendar.pmod/testsuite.in
+++ b/lib/modules/Calendar.pmod/testsuite.in
@@ -28,7 +28,9 @@ test_do(Calendar.TimeRange t = Calendar.now())
 dnl Some more or less odd timezones encountered by Xenofarm:
 define(test_dwim,[[
   test_eq(Calendar.ISO.set_timezone("CET")->dwim_time($1)->format_time(),"2002-11-19 07:04:03")
-  test_eq(Calendar.ISO.set_timezone("CET")->dwim_time($1)->tzname(),$2)
+  ifelse($2,,,[[
+    test_eq(Calendar.ISO.set_timezone("CET")->dwim_time($1)->tzname(),$2)
+  ]])
 ]])
 test_dwim("Tue Nov 19 07:04:03 MET 2002","MET")
 test_dwim("Tue Nov 19 07:04:03 CST 2002","CST")
@@ -42,6 +44,10 @@ test_dwim("Tue Nov 19 07:04:03 METDST 2002","MET")
 test_dwim([["Tue, 19 Nov 2002 07:04:03 GMT"]],"GMT")
 test_dwim([["Tuesday, 19-Nov-02 07:04:03 GMT"]],"GMT")
 test_dwim("Tue Nov 19 07:04:03 2002","GMT")
+test_dwim("20021119T070403 GMT","GMT")
+test_dwim("20021119T070403")
+test_dwim("20021119 070403 GMT","GMT")
+test_dwim("20021119 070403")
 
 define(test_http,[[
   test_eq(Calendar.ISO.http_time($1)->format_time(),$2)
-- 
GitLab