X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/e2eebc77cc570f77d906bc0cc6890092068468cb..611edee2bfe62872318ad1d355d49512ecce47f3:/test/mhical/test-mhical diff --git a/test/mhical/test-mhical b/test/mhical/test-mhical index b1146cc1..f6d75af0 100755 --- a/test/mhical/test-mhical +++ b/test/mhical/test-mhical @@ -16,9 +16,10 @@ fi setup_test +check_exit '-eq 1' mhical - + #### Make sure that html-to-text conversion is what we expect. -require_locale en_US.utf-8 en_US.utf8 -LC_ALL=en_US.UTF-8; export LC_ALL +require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 #### Disable colorized output. TERM=dumb; export TERM @@ -30,6 +31,7 @@ actual_err="$MH_TEST_DIR/test-mhical$$.actual_err" # check -help +start_test "-help" cat >"$expected" <"$actual" 2>&1 +#### Skip nmh intro text. +run_prog mhical -help | sed '/^$/,$d' >"$actual" 2>&1 check "$expected" "$actual" # check -version +start_test "-version" case `mhical -version` in mhical\ --*) ;; *) printf '%s: mhical -version generated unexpected output\n' "$0" >&2 @@ -59,6 +63,7 @@ esac # check display with timezone that only has standard time +start_test "display with timezone that only has standard time" cat >"$expected" <<'EOF' Summary: Santa Watch Description: See Santa here first! @@ -93,10 +98,10 @@ EOF TZ=UTC mhical <"$MH_TEST_DIR/test1.ics" >"$MH_TEST_DIR/test1.txt" check "$expected" "$MH_TEST_DIR/test1.txt" -rm -f "$MH_TEST_DIR/test1.ics" # check display with 24 hour time format and -outfile +start_test "display with 24 hour time format and -outfile" cat >"$expected" <<'EOF' Summary: 4 pm meeting At: Mon, 05 Jan 2015 16:00 @@ -120,10 +125,10 @@ EOF mhical -outfile "$MH_TEST_DIR/test1.txt" <"$MH_TEST_DIR/test1.ics" check "$expected" "$MH_TEST_DIR/test1.txt" -rm -f "$MH_TEST_DIR/test1.ics" # check display with 12 hour time format and -infile +start_test "display with 12 hour time format and -infile" cat >"$expected" <<'EOF' Summary: 4 pm meeting At: Mon, 05 Jan 2015 4:00 PM @@ -148,10 +153,10 @@ EOF mhical -form mhical.12hour -infile "$MH_TEST_DIR/test1.ics" \ >"$MH_TEST_DIR/test1.txt" check "$expected" "$MH_TEST_DIR/test1.txt" -rm -f "$MH_TEST_DIR/test1.ics" # check display with DST +start_test "display with DST" cat >"$expected" <<'EOF' Method: REQUEST Organizer: Requester @@ -217,10 +222,10 @@ EOF TZ=EST mhical <"$MH_TEST_DIR/test1.ics" >"$MH_TEST_DIR/test1.txt" check "$expected" "$MH_TEST_DIR/test1.txt" -rm -f "$MH_TEST_DIR/test1.ics" # check timezone boundary at transition to daylight saving time +start_test "timezone boundary at transition to daylight saving time" # The default mhical display format doesn't show the timezone for the # To: time, but it is different than that of the At: time. cat >"$expected" <<'EOF' @@ -262,6 +267,7 @@ check "$expected" "$MH_TEST_DIR/test1.txt" # check -format, and that timezone is correct in end time +start_test "-format, and that timezone is correct in end time" cat >"$expected" <<'EOF' Sun, 09 Mar 2014 03:30:00 -0400 EOF @@ -269,10 +275,10 @@ EOF TZ=EST5EDT mhical -format '%(pretty{dtend})' \ -infile "$MH_TEST_DIR/test1.ics" -outfile "$MH_TEST_DIR/test1.txt" check "$expected" "$MH_TEST_DIR/test1.txt" -rm -f "$MH_TEST_DIR/test1.ics" # check timezone boundary at transition from daylight saving time +start_test "timezone boundary at transition from daylight saving time" cat >"$expected" <<'EOF' Summary: EDT to EST At: Sun, 02 Nov 2014 01:59 -0400 @@ -312,6 +318,7 @@ check "$expected" "$MH_TEST_DIR/test1.txt" # check -format, and that timezone is correct in end time +start_test "-format, and that timezone is correct in end time" cat >"$expected" <<'EOF' Sun, 02 Nov 2014 02:00:00 -0500 EOF @@ -319,12 +326,12 @@ EOF TZ=EST5EDT mhical -format '%(pretty{dtend})' \ -infile "$MH_TEST_DIR/test1.ics" -outfile "$MH_TEST_DIR/test1.txt" check "$expected" "$MH_TEST_DIR/test1.txt" -rm -f "$MH_TEST_DIR/test1.ics" printf 'Local-Mailbox: Requestee2 \n' >> "$MH" # check accept of request +start_test "accept of request" cat >"$expected" <<'EOF' BEGIN:VCALENDAR METHOD:REPLY @@ -413,9 +420,9 @@ EOF mhical -reply accept <"$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \ >"$MH_TEST_DIR/test1.txt" check "$expected" "$MH_TEST_DIR/test1.txt" -rm -f "$MH_TEST_DIR/test1.ics" # check accept of multiple vevent requests in single vcalendar +start_test "accept of multiple vevent requests in single vcalendar" cat >"$expected" <<'EOF' BEGIN:VCALENDAR METHOD:REPLY @@ -546,10 +553,10 @@ EOF mhical -reply accept <"$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \ >"$MH_TEST_DIR/test1.txt" check "$expected" "$MH_TEST_DIR/test1.txt" -rm -f "$MH_TEST_DIR/test1.ics" # check decline of request +start_test "decline of request" cat >"$expected" <<'EOF' BEGIN:VCALENDAR METHOD:REPLY @@ -608,10 +615,10 @@ EOF mhical -reply decline <"$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \ >"$MH_TEST_DIR/test1.txt" check "$expected" "$MH_TEST_DIR/test1.txt" -rm -f "$MH_TEST_DIR/test1.ics" # check response of tentative to request, and -nocontenttype +start_test "response of tentative to request, and -nocontenttype" cat >"$expected" <<'EOF' BEGIN:VCALENDAR METHOD:REPLY @@ -671,10 +678,10 @@ mhical -reply tentative -contenttype -nocontenttype \ -infile "$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \ >"$MH_TEST_DIR/test1.txt" check "$expected" "$MH_TEST_DIR/test1.txt" -rm -f "$MH_TEST_DIR/test1.ics" # check cancel request, and -contenttype +start_test "cancel request, and -contenttype" cat >"$expected" <<'EOF' Content-Type: text/calendar; method="CANCEL"; charset="UTF-8" @@ -736,7 +743,103 @@ EOF mhical -cancel -contenttype <"$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \ >"$MH_TEST_DIR/test1.txt" check "$expected" "$MH_TEST_DIR/test1.txt" + + +# Check TZID name wrapped with quotes, this used to cause a segfault. +start_test "TZID name wrapped with quotes, this used to cause a segfault." +cat >"$expected" <<'EOF' +Method: REQUEST +Summary: Quoted timezone ID +At: Wed, 01 Jan 2014 00:00 +To: Wed, 01 Jan 2014 01:00 +EOF + +cat >"$MH_TEST_DIR/test1.ics" <<'EOF' +BEGIN:VCALENDAR +PRODID:Zimbra-Calendar-Provider +VERSION:2.0 +METHOD:REQUEST +SUMMARY:Quoted timezone ID +BEGIN:VTIMEZONE +TZID:Etc/GMT +BEGIN:STANDARD +DTSTART:19710101T000000 +TZOFFSETTO:-0000 +TZOFFSETFROM:-0000 +TZNAME:GMT +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +DTSTART:20140101T000000 +DTEND;TZID="Etc/GMT":20140101T010000 +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +EOF + +TZ=UTC mhical <"$MH_TEST_DIR/test1.ics" >"$MH_TEST_DIR/test1.txt" +check "$expected" "$MH_TEST_DIR/test1.txt" + + +# Check start datetime without a time, and missing end datetime. +start_test "start datetime without a time, and missing end datetime." +cat >"$expected" <<'EOF' +Method: PUBLISH +Summary: Test datetime without time +At: Wed, 30 Dec 2015 00:00 +To: Wed, 30 Dec 2015 23:59 +EOF + +cat >"$MH_TEST_DIR/test1.ics" <<'EOF' +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:icalendar-ruby +CALSCALE:GREGORIAN +METHOD:PUBLISH +BEGIN:VEVENT +DTSTAMP:20151208T204350Z +UID:0123456789 +DTSTART;VALUE=DATE:20151230 +CLASS:PRIVATE +SUMMARY:Test datetime without time +BEGIN:VALARM +ACTION:DISPLAY +DESCRIPTION:REMINDER +TRIGGER;RELATED=START:-PT15M +END:VALARM +END:VEVENT +END:VCALENDAR +EOF + +TZ=UTC mhical <"$MH_TEST_DIR/test1.ics" >"$MH_TEST_DIR/test1.txt" +check "$expected" "$MH_TEST_DIR/test1.txt" rm -f "$MH_TEST_DIR/test1.ics" +# check missing final newline +start_test "missing final newline" + +cat >"$expected" <<'EOF' +Summary: test +Description: this file does not end with a newline +At: Sun, 14 May 2017 13:00 +0000 +To: Sun, 14 May 2017 14:00 +EOF + +printf %s \ +"BEGIN:VCALENDAR +VERSION:2.0 +PRODID:RevenueWell +BEGIN:VEVENT +DTSTAMP:20170514T122300Z +DTSTART:20170514T130000Z +DTEND:20170514T140000Z +SUMMARY:test +DESCRIPTION:this file does not end with a newline +END:VEVENT +END:VCALENDAR" | TZ=UTC mhical >"$actual" +check "$expected" "$actual" + + +finish_test exit $failed