Browse Source

org-colview: Fix failing test

* lisp/org.el (org-parse-time-string): Allow to specify zone as an
  optional argument.
* lisp/org-colview.el (org-columns--age-to-seconds): Apply change
  above.
* testing/lisp/test-org-colview.el (test-org-colview/columns-summary):
  Update tests.
Nicolas Goaziou 3 years ago
parent
commit
b47920ed20
3 changed files with 17 additions and 11 deletions
  1. 1 1
      lisp/org-colview.el
  2. 11 5
      lisp/org.el
  3. 5 5
      testing/lisp/test-org-colview.el

+ 1 - 1
lisp/org-colview.el

@@ -1085,7 +1085,7 @@ as days/hours/minutes/seconds."
    ((string-match-p org-ts-regexp s)
     (floor
      (- org-columns--time
-	(float-time (apply #'encode-time (org-parse-time-string s))))))
+	(float-time (apply #'encode-time (org-parse-time-string s nil t))))))
    ;; Match own output for computations in upper levels.
    ((string-match "\\([0-9]+\\)d \\([0-9]+\\)h \\([0-9]+\\)m \\([0-9]+\\)s" s)
     (+ (* 86400 (string-to-number (match-string 1 s)))

+ 11 - 5
lisp/org.el

@@ -17937,11 +17937,17 @@ day number."
 	   (list (nth 4 d) (nth 3 d) (nth 5 d))))
 	((listp d) (list (nth 4 d) (nth 3 d) (nth 5 d)))))
 
-(defun org-parse-time-string (s &optional nodefault)
+(defun org-parse-time-string (s &optional nodefault zone)
   "Parse the standard Org time string.
+
 This should be a lot faster than the normal `parse-time-string'.
-If time is not given, defaults to 0:00.  However, with optional NODEFAULT,
-hour and minute fields will be nil if not given."
+
+If time is not given, defaults to 0:00.  However, with optional
+NODEFAULT, hour and minute fields will be nil if not given.
+
+The optional ZONE is omitted or nil for Emacs local time, t for
+Universal Time, ‘wall’ for system wall clock time, or a string as
+in the TZ environment variable."
   (cond ((string-match org-ts-regexp0 s)
 	 (list 0
 	       (when (or (match-beginning 8) (not nodefault))
@@ -17951,9 +17957,9 @@ hour and minute fields will be nil if not given."
 	       (string-to-number (match-string 4 s))
 	       (string-to-number (match-string 3 s))
 	       (string-to-number (match-string 2 s))
-	       nil nil nil))
+	       nil nil zone))
 	((string-match "^<[^>]+>$" s)
-	 (decode-time (seconds-to-time (org-matcher-time s))))
+	 (decode-time (seconds-to-time (org-matcher-time s)) zone))
 	(t (error "Not a standard Org time string: %s" s))))
 
 (defun org-timestamp-up (&optional arg)

+ 5 - 5
testing/lisp/test-org-colview.el

@@ -513,7 +513,7 @@
     (cl-letf (((symbol-function 'current-time)
 	       (lambda ()
 		 (apply #'encode-time
-			(org-parse-time-string "<2014-03-04 Tue>")))))
+			(org-parse-time-string "<2014-03-04 Tue>" nil t)))))
       (org-test-with-temp-text
 	  "* H
 ** S1
@@ -528,11 +528,11 @@
 	(get-char-property (point) 'org-columns-value-modified)))))
   (should
    (equal
-    "705d 01h 0m 0s"
+    "705d 00h 0m 0s"
     (cl-letf (((symbol-function 'current-time)
 	       (lambda ()
 		 (apply #'encode-time
-			(org-parse-time-string "<2014-03-04 Tue>")))))
+			(org-parse-time-string "<2014-03-04 Tue>" nil t)))))
       (org-test-with-temp-text
 	  "* H
 ** S1
@@ -547,11 +547,11 @@
 	(get-char-property (point) 'org-columns-value-modified)))))
   (should
    (equal
-    "352d 12h 30m 0s"
+    "352d 12h 0m 0s"
     (cl-letf (((symbol-function 'current-time)
 	       (lambda ()
 		 (apply #'encode-time
-			(org-parse-time-string "<2014-03-04 Tue>")))))
+			(org-parse-time-string "<2014-03-04 Tue>" nil t)))))
       (org-test-with-temp-text
 	  "* H
 ** S1