From df0d73aa8da0a8cb6fd01e2f2604a6022e8f3d63 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 4 Aug 2013 11:42:50 -0700 Subject: [PATCH] Backport icalendar-tests fixes from trunk * test/automated/icalendar-tests.el (icalendar-tests--test-export) (icalendar-tests--test-import): Use getenv/setenv rather than set-time-zone-rule. (icalendar-tests--test-import): Reset zone even if error occurred. (icalendar-tests--do-test-cycle): Use with-current-buffer. --- test/ChangeLog | 8 +++ test/automated/icalendar-tests.el | 83 +++++++++++++++++-------------- 2 files changed, 54 insertions(+), 37 deletions(-) diff --git a/test/ChangeLog b/test/ChangeLog index d8b8fb661b5..9b6859e9ba6 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,11 @@ +2013-08-04 Glenn Morris + + * automated/icalendar-tests.el (icalendar-tests--test-export) + (icalendar-tests--test-import): + Use getenv/setenv rather than set-time-zone-rule. + (icalendar-tests--test-import): Reset zone even if error occurred. + (icalendar-tests--do-test-cycle): Use with-current-buffer. + 2013-03-26 Fabián Ezequiel Gallina * automated/python-tests.el diff --git a/test/automated/icalendar-tests.el b/test/automated/icalendar-tests.el index bca462da4d9..f83052f5ea1 100644 --- a/test/automated/icalendar-tests.el +++ b/test/automated/icalendar-tests.el @@ -428,12 +428,16 @@ Argument EXPECTED-OUTPUT expected iCalendar result string. European style input data must use german month names. American and ISO style input data must use english month names." - (let ((tz (cadr (current-time-zone))) + (let ((tz (getenv "TZ")) (calendar-date-style 'iso) (icalendar-recurring-start-year 2000)) (unwind-protect (progn - (set-time-zone-rule "CET") +;;; (message "Current time zone: %s" (current-time-zone)) + ;; Use this form so as not to rely on system tz database. + ;; Eg hydra.nixos.org. + (setenv "TZ" "CET-1CEST,M3.5.0/2,M10.5.0/3") +;;; (message "Current time zone: %s" (current-time-zone)) (when input-iso (let ((calendar-month-name-array ["January" "February" "March" "April" "May" "June" "July" "August" @@ -461,8 +465,8 @@ and ISO style input data must use english month names." "Saturday"])) (setq calendar-date-style 'american) (icalendar-tests--do-test-export input-american expected-output)))) - ;; restore time-zone if something went terribly wrong - (set-time-zone-rule tz)))) + ;; restore time-zone even if something went terribly wrong + (setenv "TZ" tz)))) (defun icalendar-tests--do-test-export (input expected-output) "Actually perform export test. @@ -671,37 +675,43 @@ Argument INPUT icalendar event string. Argument EXPECTED-ISO expected iso style diary string. Argument EXPECTED-EUROPEAN expected european style diary string. Argument EXPECTED-AMERICAN expected american style diary string." - (let ((timezone (cadr (current-time-zone)))) - (set-time-zone-rule "CET") - (with-temp-buffer - (if (string-match "^BEGIN:VCALENDAR" input) - (insert input) - (insert "BEGIN:VCALENDAR\nPRODID:-//Emacs//NONSGML icalendar.el//EN\n") - (insert "VERSION:2.0\nBEGIN:VEVENT\n") - (insert input) - (unless (eq (char-before) ?\n) - (insert "\n")) - (insert "END:VEVENT\nEND:VCALENDAR\n")) - (let ((icalendar-import-format "%s%d%l%o%t%u%c%U") - (icalendar-import-format-summary "%s") - (icalendar-import-format-location "\n Location: %s") - (icalendar-import-format-description "\n Desc: %s") - (icalendar-import-format-organizer "\n Organizer: %s") - (icalendar-import-format-status "\n Status: %s") - (icalendar-import-format-url "\n URL: %s") - (icalendar-import-format-class "\n Class: %s") - (icalendar-import-format-uid "\n UID: %s") - calendar-date-style) - (when expected-iso - (setq calendar-date-style 'iso) - (icalendar-tests--do-test-import input expected-iso)) - (when expected-european - (setq calendar-date-style 'european) - (icalendar-tests--do-test-import input expected-european)) - (when expected-american - (setq calendar-date-style 'american) - (icalendar-tests--do-test-import input expected-american)))) - (set-time-zone-rule timezone))) + (let ((timezone (getenv "TZ"))) + (unwind-protect + (progn +;;; (message "Current time zone: %s" (current-time-zone)) + ;; Use this form so as not to rely on system tz database. + ;; Eg hydra.nixos.org. + (setenv "TZ" "CET-1CEST,M3.5.0/2,M10.5.0/3") +;;; (message "Current time zone: %s" (current-time-zone)) + (with-temp-buffer + (if (string-match "^BEGIN:VCALENDAR" input) + (insert input) + (insert "BEGIN:VCALENDAR\nPRODID:-//Emacs//NONSGML icalendar.el//EN\n") + (insert "VERSION:2.0\nBEGIN:VEVENT\n") + (insert input) + (unless (eq (char-before) ?\n) + (insert "\n")) + (insert "END:VEVENT\nEND:VCALENDAR\n")) + (let ((icalendar-import-format "%s%d%l%o%t%u%c%U") + (icalendar-import-format-summary "%s") + (icalendar-import-format-location "\n Location: %s") + (icalendar-import-format-description "\n Desc: %s") + (icalendar-import-format-organizer "\n Organizer: %s") + (icalendar-import-format-status "\n Status: %s") + (icalendar-import-format-url "\n URL: %s") + (icalendar-import-format-class "\n Class: %s") + (icalendar-import-format-uid "\n UID: %s") + calendar-date-style) + (when expected-iso + (setq calendar-date-style 'iso) + (icalendar-tests--do-test-import input expected-iso)) + (when expected-european + (setq calendar-date-style 'european) + (icalendar-tests--do-test-import input expected-european)) + (when expected-american + (setq calendar-date-style 'american) + (icalendar-tests--do-test-import input expected-american))))) + (setenv "TZ" timezone)))) (defun icalendar-tests--do-test-import (input expected-output) "Actually perform import test. @@ -1194,8 +1204,7 @@ Argument INPUT icalendar event string." (should (string= org-input cycled))))) ;; clean up (kill-buffer (find-buffer-visiting temp-diary)) - (save-excursion - (set-buffer (find-buffer-visiting temp-ics)) + (with-current-buffer (find-buffer-visiting temp-ics) (set-buffer-modified-p nil) (kill-buffer (current-buffer))) (delete-file temp-diary) -- 2.39.2