emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 33516970808: Fix 'format-seconds' when all values are zero and %z


From: Eli Zaretskii
Subject: master 33516970808: Fix 'format-seconds' when all values are zero and %z is used
Date: Wed, 10 Apr 2024 10:01:17 -0400 (EDT)

branch: master
commit 33516970808a6c50709325edfc1af125c2b2c401
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>

    Fix 'format-seconds' when all values are zero and %z is used
    
    * lisp/calendar/time-date.el (format-seconds): Fix all-zero time.
    
    * test/lisp/calendar/time-date-tests.el (test-format-seconds): Add
    two new tests.  (Bug#70322)
---
 lisp/calendar/time-date.el            | 7 +++++--
 test/lisp/calendar/time-date-tests.el | 5 ++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index e96e2e7e2db..eca80f1e8b6 100644
--- a/lisp/calendar/time-date.el
+++ b/lisp/calendar/time-date.el
@@ -344,8 +344,11 @@ right of \"%x\", trailing zero units are not output."
              string)
         (cond
          ((string-equal spec "z")
-          (setq chop-leading (and leading-zeropos
-                                  (min leading-zeropos (match-beginning 0)))))
+          (setq chop-leading
+                (if leading-zeropos
+                    (min leading-zeropos (match-beginning 0))
+                  ;; The entire spec is zero, get past "%z" to last 0.
+                  (+ 2 (match-beginning 0)))))
          ((string-equal spec "x")
           (setq chop-trailing t))
          (t
diff --git a/test/lisp/calendar/time-date-tests.el 
b/test/lisp/calendar/time-date-tests.el
index 01f9f8a5108..6512dd0bd07 100644
--- a/test/lisp/calendar/time-date-tests.el
+++ b/test/lisp/calendar/time-date-tests.el
@@ -100,7 +100,10 @@
   (should (equal (format-seconds "%hh %z%x%mm %ss" (* 60 2)) "2m"))
   (should (equal (format-seconds "%hh %z%mm %ss" (* 60 2)) "2m 0s"))
   (should (equal (format-seconds "%hh %x%mm %ss" (* 60 2)) "0h 2m"))
-  (should (equal (format-seconds "%hh %x%mm %ss" 0) "0h 0m 0s")))
+  (should (equal (format-seconds "%hh %x%mm %ss" 0) "0h 0m 0s"))
+  ;; Bug#70322
+  (should (equal (format-seconds "%y %z%d %h %m %s %%" 9999999) "115 17 46 39 
%"))
+  (should (equal (format-seconds "%Y, %D, %H, %M, %z%S" 0) "0 seconds")))
 
 (ert-deftest test-ordinal ()
   (should (equal (date-ordinal-to-time 2008 271)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]