]> code.delx.au - gnu-emacs/commitdiff
icalendar-tests: Fix Bug#11525 -- Add icalendar-import-format-uid
authorUlf Jasper <ulf.jasper@web.de>
Tue, 29 May 2012 19:42:49 +0000 (21:42 +0200)
committerUlf Jasper <ulf.jasper@web.de>
Tue, 29 May 2012 19:42:49 +0000 (21:42 +0200)
2012-05-29  Ulf Jasper  <ulf.jasper@web.de>

* calendar/icalendar.el
(icalendar-export-region): Export UID properly.

2012-05-29 Leo Liu <sdl.web@gmail.com>
* calendar/icalendar.el (icalendar-import-format): Add
`icalendar-import-format-uid' (Bug#11525).
(icalendar-import-format-uid): New.
(icalendar--parse-summary-and-rest, icalendar--format-ical-event):
Export UID.

lisp/ChangeLog
lisp/calendar/icalendar.el
test/ChangeLog
test/automated/icalendar-tests.el

index 83d3f3e467734efde5c2210f1466a65b2dcd0558..b31cc2cef5f99964b961a8a05b4154b12746f88f 100644 (file)
@@ -1,3 +1,15 @@
+2012-05-29  Ulf Jasper  <ulf.jasper@web.de>
+
+       * calendar/icalendar.el
+       (icalendar-export-region): Export UID properly.
+
+2012-05-29 Leo <sdl.web@gmail.com>
+       * calendar/icalendar.el (icalendar-import-format): Add
+       `icalendar-import-format-uid' (Bug#11525).
+       (icalendar-import-format-uid): New.
+       (icalendar--parse-summary-and-rest, icalendar--format-ical-event):
+       Export UID.
+
 2012-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * emacs-lisp/pcase.el (pcase--expand): Accept different sets of vars in
index f1549ec20b1d3031684a620b472b516bc5d9cdba..5dc687d001b4ae3bff3f79e818878d4d0b8ee3da 100644 (file)
@@ -130,6 +130,7 @@ In case of a formatting STRING the following specifiers can be used:
 %s Summary, see `icalendar-import-format-summary'
 %t Status, see `icalendar-import-format-status'
 %u URL, see `icalendar-import-format-url'
+%U UID, see `icalendar-import-format-uid'
 
 A formatting FUNCTION will be called with a VEVENT as its only
 argument.  It must return a string.  See
@@ -179,6 +180,14 @@ the URL."
   :type 'string
   :group 'icalendar)
 
+(defcustom icalendar-import-format-uid
+  "\n UID: %s"
+  "Format string defining how the UID element is formatted.
+This applies only if the UID is not empty! `%s' is replaced by
+the UID."
+  :type 'string
+  :group 'icalendar)
+
 (defcustom icalendar-import-format-status
   "\n Status: %s"
   "Format string defining how the status element is formatted.
@@ -1017,7 +1026,8 @@ FExport diary data into iCalendar file: ")
                     (org (cdr (assoc 'org other-elements)))
                     (sta (cdr (assoc 'sta other-elements)))
                     (sum (cdr (assoc 'sum other-elements)))
-                    (url (cdr (assoc 'url other-elements))))
+                    (url (cdr (assoc 'url other-elements)))
+                    (uid (cdr (assoc 'uid other-elements))))
                 (if cla
                     (setq contents (concat contents "\nCLASS:" cla)))
                 (if des
@@ -1031,10 +1041,12 @@ FExport diary data into iCalendar file: ")
                 ;;(if sum
                 ;;    (setq contents (concat contents "\nSUMMARY:" sum)))
                 (if url
-                    (setq contents (concat contents "\nURL:" url))))
+                    (setq contents (concat contents "\nURL:" url)))
 
-             (setq header (concat "\nBEGIN:VEVENT\nUID:"
-                                  (icalendar--create-uid entry-full contents)))
+                (setq header (concat "\nBEGIN:VEVENT\nUID:"
+                                     (or uid
+                                         (icalendar--create-uid entry-full 
+                                                                contents)))))
               (setq result (concat result header contents "\nEND:VEVENT")))
           ;; handle errors
           (error
@@ -1098,7 +1110,8 @@ Returns an alist."
         ;; can't do anything
         nil
       ;; split summary-and-rest
-      (let* ((s icalendar-import-format)
+      (let* ((case-fold-search nil)
+             (s icalendar-import-format)
              (p-cla (or (string-match "%c" icalendar-import-format) -1))
              (p-des (or (string-match "%d" icalendar-import-format) -1))
              (p-loc (or (string-match "%l" icalendar-import-format) -1))
@@ -1106,9 +1119,10 @@ Returns an alist."
              (p-sum (or (string-match "%s" icalendar-import-format) -1))
              (p-sta (or (string-match "%t" icalendar-import-format) -1))
              (p-url (or (string-match "%u" icalendar-import-format) -1))
-             (p-list (sort (list p-cla p-des p-loc p-org p-sta p-sum p-url) '<))
+             (p-uid (or (string-match "%U" icalendar-import-format) -1))
+             (p-list (sort (list p-cla p-des p-loc p-org p-sta p-sum p-url p-uid) '<))
             (ct 0)
-             pos-cla pos-des pos-loc pos-org pos-sta pos-sum pos-url)
+             pos-cla pos-des pos-loc pos-org pos-sta pos-sum pos-url pos-uid)
         (dotimes (i (length p-list))
          ;; Use 'ct' to keep track of current position in list
           (cond ((and (>= p-cla 0) (= (nth i p-list) p-cla))
@@ -1131,7 +1145,10 @@ Returns an alist."
                  (setq pos-sum (* 2 ct)))
                 ((and (>= p-url 0) (= (nth i p-list) p-url))
                 (setq ct (+ ct 1))
-                 (setq pos-url (* 2 ct)))) )
+                 (setq pos-url (* 2 ct)))
+                ((and (>= p-uid 0) (= (nth i p-list) p-uid))
+                (setq ct (+ ct 1))
+                 (setq pos-uid (* 2 ct)))) )
         (mapc (lambda (ij)
                 (setq s (icalendar--rris (car ij) (cadr ij) s t t)))
               (list
@@ -1149,13 +1166,15 @@ Returns an alist."
                (list "%t"
                      (concat "\\(" icalendar-import-format-status "\\)??"))
                (list "%u"
-                     (concat "\\(" icalendar-import-format-url "\\)??"))))
+                     (concat "\\(" icalendar-import-format-url "\\)??"))
+               (list "%U"
+                     (concat "\\(" icalendar-import-format-uid "\\)??"))))
        ;; Need the \' regexp in order to detect multi-line items
         (setq s (concat "\\`"
                           (icalendar--rris "%s" "\\(.*?\\)" s nil t)
                         "\\'"))
         (if (string-match s summary-and-rest)
-            (let (cla des loc org sta sum url)
+            (let (cla des loc org sta sum url uid)
               (if (and pos-sum (match-beginning pos-sum))
                   (setq sum (substring summary-and-rest
                                        (match-beginning pos-sum)
@@ -1184,13 +1203,18 @@ Returns an alist."
                   (setq url (substring summary-and-rest
                                        (match-beginning pos-url)
                                        (match-end pos-url))))
+              (if (and pos-uid (match-beginning pos-uid))
+                  (setq uid (substring summary-and-rest
+                                       (match-beginning pos-uid)
+                                       (match-end pos-uid))))
               (list (if cla (cons 'cla cla) nil)
                     (if des (cons 'des des) nil)
                     (if loc (cons 'loc loc) nil)
                     (if org (cons 'org org) nil)
                     (if sta (cons 'sta sta) nil)
                     ;;(if sum (cons 'sum sum) nil)
-                    (if url (cons 'url url) nil))))))))
+                    (if url (cons 'url url) nil)
+                    (if uid (cons 'uid uid) nil))))))))
 
 ;; subroutines for icalendar-export-region
 (defun icalendar--convert-ordinary-to-ical (nonmarker entry-main)
@@ -1864,6 +1888,7 @@ buffer `*icalendar-errors*'."
   (if (functionp icalendar-import-format)
       (funcall icalendar-import-format event)
     (let ((string icalendar-import-format)
+          (case-fold-search nil)
         (conversion-list
          '(("%c" CLASS       icalendar-import-format-class)
            ("%d" DESCRIPTION icalendar-import-format-description)
@@ -1871,7 +1896,8 @@ buffer `*icalendar-errors*'."
            ("%o" ORGANIZER   icalendar-import-format-organizer)
            ("%s" SUMMARY     icalendar-import-format-summary)
            ("%t" STATUS      icalendar-import-format-status)
-           ("%u" URL         icalendar-import-format-url))))
+           ("%u" URL         icalendar-import-format-url)
+           ("%U" UID         icalendar-import-format-uid))))
     ;; convert the specifiers in the format string
     (mapc (lambda (i)
            (let* ((spec (car i))
index ba6162ca241f7c284b75066f49036b6cc5bad67f..f5fa81f4a5a1de1528857ef9aaee955d3124aa40 100644 (file)
@@ -1,3 +1,15 @@
+2012-05-29  Ulf Jasper  <ulf.jasper@web.de>
+
+       * automated/icalendar-tests.el (icalendar-tests--test-import):
+       Include UID in import tests (Bug#11525).
+       (icalendar-import-non-recurring, icalendar-import-rrule)
+       (icalendar-import-duration, icalendar-import-bug-6766): Adjust to
+       UID-import change.
+       (icalendar-import-with-uid): New.
+       (icalendar-tests--test-cycle, icalendar-tests--do-test-cycle):
+       Include UID in cycle tests.
+       (icalendar-cycle, icalendar-real-world): UID-import change.
+
 2012-05-21  Glenn Morris  <rgm@gnu.org>
 
        * automated/Makefile.in (setwins): Scrap superfluous subshell.
index 503ea22d2b82bccf2c7c2daf323ceae7a9b623c0..dbf262d9f77242d46ff3e5ef6486c4404b1b88ea 100644 (file)
@@ -682,7 +682,7 @@ Argument EXPECTED-AMERICAN expected american style diary string."
         (unless (eq (char-before) ?\n)
           (insert "\n"))
         (insert "END:VEVENT\nEND:VCALENDAR\n"))
-      (let ((icalendar-import-format "%s%d%l%o%t%u%c")
+      (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")
@@ -690,6 +690,7 @@ Argument EXPECTED-AMERICAN expected american style diary string."
             (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)
@@ -751,14 +752,17 @@ DTSTAMP:20031103T011641Z
    "&%%(and (diary-block 2004 7 19 2004 8 27)) Sommerferien
  Status: TENTATIVE
  Class: PRIVATE
+ UID: 748f2da0-0d9b-11d8-97af-b4ec8686ea61
 "
    "&%%(and (diary-block 19 7 2004 27 8 2004)) Sommerferien
  Status: TENTATIVE
  Class: PRIVATE
+ UID: 748f2da0-0d9b-11d8-97af-b4ec8686ea61
 "
    "&%%(and (diary-block 7 19 2004 8 27 2004)) Sommerferien
  Status: TENTATIVE
  Class: PRIVATE
+ UID: 748f2da0-0d9b-11d8-97af-b4ec8686ea61
 ")
   (icalendar-tests--test-import
    "UID
@@ -782,13 +786,16 @@ LAST-MODIFIED
 "
    "&2004/11/23 14:00-14:30 folded summary
  Status: TENTATIVE
- Class: PRIVATE\n"
+ Class: PRIVATE
+ UID: 04979712-3902-11d9-93dd-8f9f4afe08da\n"
    "&23/11/2004 14:00-14:30 folded summary
  Status: TENTATIVE
- Class: PRIVATE\n"
+ Class: PRIVATE
+ UID: 04979712-3902-11d9-93dd-8f9f4afe08da\n"
    "&11/23/2004 14:00-14:30 folded summary
  Status: TENTATIVE
- Class: PRIVATE\n")
+ Class: PRIVATE
+ UID: 04979712-3902-11d9-93dd-8f9f4afe08da\n")
 
   (icalendar-tests--test-import
    "UID
@@ -810,13 +817,16 @@ DTSTAMP
 "
    "&2004/11/23 14:45-15:45 another example
  Status: TENTATIVE
- Class: PRIVATE\n"
+ Class: PRIVATE
+ UID: 6161a312-3902-11d9-b512-f764153bb28b\n"
    "&23/11/2004 14:45-15:45 another example
  Status: TENTATIVE
- Class: PRIVATE\n"
+ Class: PRIVATE
+ UID: 6161a312-3902-11d9-b512-f764153bb28b\n"
    "&11/23/2004 14:45-15:45 another example
  Status: TENTATIVE
- Class: PRIVATE\n"))
+ Class: PRIVATE
+ UID: 6161a312-3902-11d9-b512-f764153bb28b\n"))
 
 (ert-deftest icalendar-import-rrule ()
   (icalendar-tests--test-import
@@ -879,7 +889,6 @@ RRULE:FREQ=MONTHLY;UNTIL=20050819;
    "DTSTART;VALUE=DATE:20040815
 DTEND;VALUE=DATE:20040816
 SUMMARY:Maria Himmelfahrt
-UID:CC56BEA6-49D2-11D8-8833-00039386D1C2-RID
 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=8
 "
    "&%%(and (diary-anniversary 2004 8 15))  Maria Himmelfahrt\n"
@@ -982,11 +991,14 @@ SEQUENCE:1
 CREATED:20041127T183329
 "
    "&%%(and (diary-cyclic 1 2001 12 21) (diary-block 2001 12 21 2001 12 29))  Urlaub
- Class: PUBLIC\n"
+ Class: PUBLIC
+ UID: 20041127T183329Z-18215-1001-4536-49109@andromeda\n"
    "&%%(and (diary-cyclic 1 21 12 2001) (diary-block 21 12 2001 29 12 2001))  Urlaub
- Class: PUBLIC\n"
+ Class: PUBLIC
+ UID: 20041127T183329Z-18215-1001-4536-49109@andromeda\n"
    "&%%(and (diary-cyclic 1 12 21 2001) (diary-block 12 21 2001 12 29 2001))  Urlaub
- Class: PUBLIC\n"))
+ Class: PUBLIC
+ UID: 20041127T183329Z-18215-1001-4536-49109@andromeda\n"))
 
 (ert-deftest icalendar-import-bug-6766 ()
   ;;bug#6766 -- multiple byday values in a weekly rrule
@@ -1016,20 +1028,26 @@ UID:8814e3f9-7482-408f-996c-3bfe486a1263
 "&%%(and (memq (calendar-day-of-week date) '(1 3 4 5)) (diary-cyclic 1 2010 4 21)) 11:30-12:00 Scrum
  Status: CONFIRMED
  Class: PUBLIC
+ UID: 8814e3f9-7482-408f-996c-3bfe486a1262
 &%%(and (memq (calendar-day-of-week date) '(2 4)) (diary-cyclic 1 2010 4 22)) Tues + Thurs thinking
  Class: PUBLIC
+ UID: 8814e3f9-7482-408f-996c-3bfe486a1263
 "
 "&%%(and (memq (calendar-day-of-week date) '(1 3 4 5)) (diary-cyclic 1 21 4 2010)) 11:30-12:00 Scrum
  Status: CONFIRMED
  Class: PUBLIC
+ UID: 8814e3f9-7482-408f-996c-3bfe486a1262
 &%%(and (memq (calendar-day-of-week date) '(2 4)) (diary-cyclic 1 22 4 2010)) Tues + Thurs thinking
  Class: PUBLIC
+ UID: 8814e3f9-7482-408f-996c-3bfe486a1263
 "
 "&%%(and (memq (calendar-day-of-week date) '(1 3 4 5)) (diary-cyclic 1 4 21 2010)) 11:30-12:00 Scrum
  Status: CONFIRMED
  Class: PUBLIC
+ UID: 8814e3f9-7482-408f-996c-3bfe486a1262
 &%%(and (memq (calendar-day-of-week date) '(2 4)) (diary-cyclic 1 4 22 2010)) Tues + Thurs thinking
  Class: PUBLIC
+ UID: 8814e3f9-7482-408f-996c-3bfe486a1263
 "))
 
 (ert-deftest icalendar-import-multiple-vcalendars ()
@@ -1074,6 +1092,17 @@ END:VCALENDAR
    "&23/7/2011 event-1\n&24/7/2011 event-2\n&25/7/2011 event-3a\n&25/7/2011 event-3b\n"
    "&7/23/2011 event-1\n&7/24/2011 event-2\n&7/25/2011 event-3a\n&7/25/2011 event-3b\n"))
 
+(ert-deftest icalendar-import-with-uid ()
+  "Perform import test with uid."
+  (icalendar-tests--test-import
+   "UID:1234567890uid
+SUMMARY:non-recurring
+DTSTART;VALUE=DATE-TIME:20030919T090000
+DTEND;VALUE=DATE-TIME:20030919T113000"
+   "&2003/9/19 09:00-11:30 non-recurring\n UID: 1234567890uid\n"
+   "&19/9/2003 09:00-11:30 non-recurring\n UID: 1234567890uid\n"
+   "&9/19/2003 09:00-11:30 non-recurring\n UID: 1234567890uid\n"))
+
 ;; ======================================================================
 ;; Cycle
 ;; ======================================================================
@@ -1089,14 +1118,15 @@ Argument INPUT icalendar event string."
       (unless (eq (char-before) ?\n)
         (insert "\n"))
       (insert "END:VEVENT\nEND:VCALENDAR\n"))
-    (let ((icalendar-import-format "%s%d%l%o%t%u%c")
+    (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-class "\n Class: %s")
+          (icalendar-import-format-class "\n UID: %s"))
       (dolist (calendar-date-style '(iso european american))
         (icalendar-tests--do-test-cycle)))))
 
@@ -1120,8 +1150,8 @@ Argument INPUT icalendar event string."
          (save-excursion
            (find-file temp-ics)
            (goto-char (point-min))
-           (when (re-search-forward "\nUID:.*\n" nil t)
-             (replace-match "\n"))
+           ;;(when (re-search-forward "\nUID:.*\n" nil t)
+             ;;(replace-match "\n"))
            (let ((cycled (buffer-substring-no-properties (point-min) (point-max))))
              (should (string= org-input cycled)))))
       ;; clean up
@@ -1134,14 +1164,17 @@ Argument INPUT icalendar event string."
       (delete-file temp-ics))))
 
 (ert-deftest icalendar-cycle ()
-  "Perform cycling tests."
+  "Perform cycling tests.
+Take care to avoid auto-generated UIDs here."
   (icalendar-tests--test-cycle
-   "DTSTART;VALUE=DATE-TIME:20030919T090000
+   "UID:dummyuid
+DTSTART;VALUE=DATE-TIME:20030919T090000
 DTEND;VALUE=DATE-TIME:20030919T113000
 SUMMARY:Cycletest
 ")
   (icalendar-tests--test-cycle
-   "DTSTART;VALUE=DATE-TIME:20030919T090000
+   "UID:blah
+DTSTART;VALUE=DATE-TIME:20030919T090000
 DTEND;VALUE=DATE-TIME:20030919T113000
 SUMMARY:Cycletest
 DESCRIPTION:beschreibung!
@@ -1149,7 +1182,8 @@ LOCATION:nowhere
 ORGANIZER:ulf
 ")
     (icalendar-tests--test-cycle
-     "DTSTART;VALUE=DATE:19190909
+     "UID:4711
+DTSTART;VALUE=DATE:19190909
 DTEND;VALUE=DATE:19190910
 RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=09;BYMONTHDAY=09
 SUMMARY:and diary-anniversary
@@ -1222,12 +1256,14 @@ END:VCALENDAR"
  Location: Cccc
  Organizer: MAILTO:aaaaaaa@aaaaaaa.com
  Status: CONFIRMED
+ UID: 040000008200E00074C5B7101A82E0080000000080B6DE661216C301000000000000000010000000DB823520692542408ED02D7023F9DFF9
 "
    "&5/9/2003 10:30-15:30 On-Site Interview
  Desc: 10:30am - Blah
  Location: Cccc
  Organizer: MAILTO:aaaaaaa@aaaaaaa.com
  Status: CONFIRMED
+ UID: 040000008200E00074C5B7101A82E0080000000080B6DE661216C301000000000000000010000000DB823520692542408ED02D7023F9DFF9
 ")
 
   ;; 2003-06-18 a
@@ -1268,12 +1304,14 @@ END:VALARM"
  Location: 555 or TN 555-5555 ID 5555 & NochWas (see below)
  Organizer: MAILTO:xxx@xxxxx.com
  Status: CONFIRMED
+ UID: 040000008200E00074C5B7101A82E00800000000608AA7DA9835C3010000000000000000100000007C3A6D65EE726E40B7F3D69A23BD567E
 "
    "&6/23/2003 11:00-12:00 Dress Rehearsal for XXXX-XXXX
  Desc: 753 Zeichen hier radiert
  Location: 555 or TN 555-5555 ID 5555 & NochWas (see below)
  Organizer: MAILTO:xxx@xxxxx.com
  Status: CONFIRMED
+ UID: 040000008200E00074C5B7101A82E00800000000608AA7DA9835C3010000000000000000100000007C3A6D65EE726E40B7F3D69A23BD567E
 ")
   ;; 2003-06-18 b -- uses timezone
   (icalendar-tests--test-import
@@ -1338,12 +1376,14 @@ END:VCALENDAR"
  Location: 123 or TN 123-1234 ID abcd & SonstWo (see below)
  Organizer: MAILTO:bbb@bbbbb.com
  Status: CONFIRMED
+ UID: 040000008200E00074C5B7101A82E00800000000608AA7DA9835C3010000000000000000100000007C3A6D65EE726E40B7F3D69A23BD567E
 "
    "&6/23/2003 17:00-18:00 Updated: Dress Rehearsal for ABC01-15
  Desc: Viele Zeichen standen hier früher
  Location: 123 or TN 123-1234 ID abcd & SonstWo (see below)
  Organizer: MAILTO:bbb@bbbbb.com
  Status: CONFIRMED
+ UID: 040000008200E00074C5B7101A82E00800000000608AA7DA9835C3010000000000000000100000007C3A6D65EE726E40B7F3D69A23BD567E
 ")
   ;; export 2004-10-28 block entries
   (icalendar-tests--test-export
@@ -1567,8 +1607,6 @@ VERSION
 PRODID
  :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
 BEGIN:VEVENT
-UID
- :04979712-3902-11d9-93dd-8f9f4afe08da
 SUMMARY
  :Jjjjj & Wwwww
 STATUS
@@ -1587,8 +1625,6 @@ LAST-MODIFIED
  :20041118T013640Z
 END:VEVENT
 BEGIN:VEVENT
-UID
- :6161a312-3902-11d9-b512-f764153bb28b
 SUMMARY
  :BB Aaaaaaaa Bbbbb
 STATUS
@@ -1605,8 +1641,6 @@ DTSTAMP
  :20041118T013641Z
 END:VEVENT
 BEGIN:VEVENT
-UID
- :943a4d7e-3902-11d9-9ce7-c9addeadf928
 SUMMARY
  :Hhhhhhhh
 STATUS
@@ -1623,8 +1657,6 @@ DTSTAMP
  :20041118T013831Z
 END:VEVENT
 BEGIN:VEVENT
-UID
- :fe53615e-3902-11d9-9dd8-9d38a155bf41
 SUMMARY
  :MMM Aaaaaaaaa
 STATUS
@@ -1645,8 +1677,6 @@ DTSTAMP
  :20041118T014117Z
 END:VEVENT
 BEGIN:VEVENT
-UID
- :87c928ee-3901-11d9-b21f-b45042155024
 SUMMARY
  :Rrrr/Cccccc ii Aaaaaaaa
 DESCRIPTION
@@ -1669,8 +1699,6 @@ LAST-MODIFIED
  :20041118T014203Z
 END:VEVENT
 BEGIN:VEVENT
-UID
- :e8f331ae-3902-11d9-9948-dfdcb66a2872
 SUMMARY
  :Wwww aa hhhh
 STATUS
@@ -1790,11 +1818,13 @@ DTSTAMP
  Desc: abcdef
  Status: CONFIRMED
  Class: PRIVATE
+ UID: b60d398e-1dd1-11b2-a159-cf8cb05139f4
 "
    "&%%(and (diary-block 2 6 2005 2 6 2005)) Waitangi Day
  Desc: abcdef
  Status: CONFIRMED
  Class: PRIVATE
+ UID: b60d398e-1dd1-11b2-a159-cf8cb05139f4
 ")
 
   ;; 2005-03-01 lt
@@ -1805,8 +1835,10 @@ UID:6AFA7558-6994-11D9-8A3A-000A95A0E830-RID
 DTSTAMP:20050118T210335Z
 DURATION:P7D"
    nil
-   "&%%(and (diary-block 17 2 2005 23 2 2005)) Hhhhhh Aaaaa ii Aaaaaaaa\n"
-   "&%%(and (diary-block 2 17 2005 2 23 2005)) Hhhhhh Aaaaa ii Aaaaaaaa\n")
+   "&%%(and (diary-block 17 2 2005 23 2 2005)) Hhhhhh Aaaaa ii Aaaaaaaa
+ UID: 6AFA7558-6994-11D9-8A3A-000A95A0E830-RID\n"
+   "&%%(and (diary-block 2 17 2005 2 23 2005)) Hhhhhh Aaaaa ii Aaaaaaaa
+ UID: 6AFA7558-6994-11D9-8A3A-000A95A0E830-RID\n")
 
   ;; 2005-03-23 lt
   (icalendar-tests--test-export