]> diplodocus.org Git - nmh/blobdiff - test/mhical/test-mhical
Removed redundant initialization of local variable tls.
[nmh] / test / mhical / test-mhical
index 533270ed51ffc9edd76b0ea66cb3f20417ca0aba..3ebc35f51abf9504db7da371aa3cbc4e78363d4d 100755 (executable)
@@ -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" <<EOF
 Usage: mhical [switches]
   switches are:
@@ -39,6 +41,7 @@ Usage: mhical [switches]
   -(forma)t string
   -infile
   -outfile
+  -attendee
   -[no]contenttype
   -unfold
   -debug
@@ -47,11 +50,12 @@ Usage: mhical [switches]
 EOF
 
 #### Skip nmh intro text.
-run_prog mhical -help | sed '/^$/,$d' >"$actual" 2>&1
+run_prog mhical -help 2>&1 | sed '/^$/,$d' >"$actual"
 check "$expected" "$actual"
 
 
 # check -version
+start_test "-version"
 case `mhical -version` in
   mhical\ --*) ;;
   *) printf '%s: mhical -version generated unexpected output\n' "$0" >&2
@@ -60,6 +64,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!
@@ -97,6 +102,7 @@ check "$expected" "$MH_TEST_DIR/test1.txt"
 
 
 # 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
@@ -123,6 +129,7 @@ check "$expected" "$MH_TEST_DIR/test1.txt"
 
 
 # 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
@@ -150,6 +157,7 @@ check "$expected" "$MH_TEST_DIR/test1.txt"
 
 
 # check display with DST
+start_test "display with DST"
 cat >"$expected" <<'EOF'
 Method: REQUEST
 Organizer: Requester
@@ -218,6 +226,7 @@ check "$expected" "$MH_TEST_DIR/test1.txt"
 
 
 # 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'
@@ -259,6 +268,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,6 +279,7 @@ check "$expected" "$MH_TEST_DIR/test1.txt"
 
 
 # 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
@@ -308,6 +319,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
@@ -320,10 +332,11 @@ check "$expected" "$MH_TEST_DIR/test1.txt"
 printf 'Local-Mailbox: Requestee2 <requestee2@example.com>\n' >> "$MH"
 
 # check accept of request
+start_test "accept of request"
 cat >"$expected" <<'EOF'
 BEGIN:VCALENDAR
 METHOD:REPLY
-PRODID:nmh mhical v0.1
+PRODID:nmh mhical v0.5
 VERSION:2.0
 BEGIN:VTIMEZONE
 TZID:Eastern Standard Time
@@ -409,11 +422,115 @@ mhical -reply accept <"$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \
        >"$MH_TEST_DIR/test1.txt"
 check "$expected" "$MH_TEST_DIR/test1.txt"
 
+
+# check accept of request with -attendee
+start_test "accept of request with -attendee"
+cat >"$expected" <<'EOF'
+BEGIN:VCALENDAR
+METHOD:REPLY
+PRODID:nmh mhical v0.5
+VERSION:2.0
+BEGIN:VTIMEZONE
+TZID:Eastern Standard Time
+BEGIN:STANDARD
+DTSTART:16010101T020000
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T020000
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+ORGANIZER;CN=Requester:MAILTO:requester@example.com
+ATTENDEE;PARTSTAT=ACCEPTED;CN=Requestee1:MAILTO:requestee1@example.com
+SUMMARY;LANGUAGE=en-US:Accepted: test request
+DTSTART;TZID=Eastern Standard Time:20150105T090000
+DTEND;TZID=Eastern Standard Time:20150105T093000
+UID:0123456789
+CLASS:PUBLIC
+PRIORITY:5
+TRANSP:OPAQUE
+STATUS:CONFIRMED
+SEQUENCE:0
+LOCATION;LANGUAGE=en-US:
+END:VEVENT
+END:VCALENDAR
+EOF
+
+cp "$MH" "${MH}.save"
+printf 'Alternate-Mailboxes: RequesteeToo <requestee1@example.com>\n' >> "$MH"
+mhical -reply accept -attendee requestee1@example.com <"$MH_TEST_DIR/test1.ics" \
+    | egrep -v '^DTSTAMP:' >"$MH_TEST_DIR/test1.txt"
+check "$expected" "$MH_TEST_DIR/test1.txt"
+
+
+# check accept of request with other -attendee
+start_test "accept of request with other -attendee"
+cat >"$expected" <<'EOF'
+BEGIN:VCALENDAR
+METHOD:REPLY
+PRODID:nmh mhical v0.5
+VERSION:2.0
+BEGIN:VTIMEZONE
+TZID:Eastern Standard Time
+BEGIN:STANDARD
+DTSTART:16010101T020000
+TZOFFSETFROM:-0400
+TZOFFSETTO:-0500
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
+END:STANDARD
+BEGIN:DAYLIGHT
+DTSTART:16010101T020000
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0400
+RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
+END:DAYLIGHT
+END:VTIMEZONE
+BEGIN:VEVENT
+ORGANIZER;CN=Requester:MAILTO:requester@example.com
+ATTENDEE;PARTSTAT=ACCEPTED;CN=Requestee2:MAILTO:requestee2@example.com
+SUMMARY;LANGUAGE=en-US:Accepted: test request
+DTSTART;TZID=Eastern Standard Time:20150105T090000
+DTEND;TZID=Eastern Standard Time:20150105T093000
+UID:0123456789
+CLASS:PUBLIC
+PRIORITY:5
+TRANSP:OPAQUE
+STATUS:CONFIRMED
+SEQUENCE:0
+LOCATION;LANGUAGE=en-US:
+END:VEVENT
+END:VCALENDAR
+EOF
+
+mhical -reply accept -attendee requestee2@example.com <"$MH_TEST_DIR/test1.ics" \
+    | egrep -v '^DTSTAMP:' >"$MH_TEST_DIR/test1.txt"
+check "$expected" "$MH_TEST_DIR/test1.txt"
+
+
+# check accept of request without required -attendee
+start_test "accept of request without required -attendee"
+cat >"$expected" <<'EOF'
+mhical: Multiple attendees match your address, re-run with -attendee switch
+EOF
+
+mhical -reply accept <"$MH_TEST_DIR/test1.ics" 2>"$MH_TEST_DIR/test1.txt" \
+    && false
+check "$expected" "$MH_TEST_DIR/test1.txt"
+mv "${MH}.save" "$MH"
+
+
 # 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
-PRODID:nmh mhical v0.1
+PRODID:nmh mhical v0.5
 VERSION:2.0
 BEGIN:VTIMEZONE
 TZID:Eastern Standard Time
@@ -543,10 +660,11 @@ check "$expected" "$MH_TEST_DIR/test1.txt"
 
 
 # check decline of request
+start_test "decline of request"
 cat >"$expected" <<'EOF'
 BEGIN:VCALENDAR
 METHOD:REPLY
-PRODID:nmh mhical v0.1
+PRODID:nmh mhical v0.5
 VERSION:2.0
 BEGIN:VEVENT
 ORGANIZER;CN=Requester:MAILTO:requester@example.com
@@ -604,10 +722,11 @@ check "$expected" "$MH_TEST_DIR/test1.txt"
 
 
 # check response of tentative to request, and -nocontenttype
+start_test "response of tentative to request, and -nocontenttype"
 cat >"$expected" <<'EOF'
 BEGIN:VCALENDAR
 METHOD:REPLY
-PRODID:nmh mhical v0.1
+PRODID:nmh mhical v0.5
 VERSION:2.0
 BEGIN:VEVENT
 ORGANIZER;CN=Requester:MAILTO:requester@example.com
@@ -666,12 +785,13 @@ check "$expected" "$MH_TEST_DIR/test1.txt"
 
 
 # check cancel request, and -contenttype
+start_test "cancel request, and -contenttype"
 cat >"$expected" <<'EOF'
 Content-Type: text/calendar; method="CANCEL"; charset="UTF-8"
 
 BEGIN:VCALENDAR
 METHOD:CANCEL
-PRODID:nmh mhical v0.1
+PRODID:nmh mhical v0.5
 VERSION:2.0
 BEGIN:VEVENT
 ORGANIZER;CN=Requestee2:MAILTO:requestee2@example.com
@@ -730,6 +850,7 @@ 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
@@ -765,6 +886,7 @@ 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
@@ -798,4 +920,68 @@ 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"
+
+
+# check invalid line folding
+start_test "invalid line folding"
+
+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
+
+cat >"$expected_err" <<'EOF'
+mhical: syntax error, unexpected ICAL_COMMA, expecting ICAL_COLON after " this line is not folded"
+EOF
+
+set +e
+printf %s \
+"BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//TDP v3.0//EN
+BEGIN:VEVENT
+DTSTAMP:20170514T122300Z
+DTSTART:20170514T130000Z
+DTEND:20170514T140000Z
+SUMMARY:test
+DESCRIPTION:this file does not end with a newline
+and this line is not folded,
+END:VEVENT
+END:VCALENDAR" | TZ=UTC mhical >"$actual" 2>"$actual_err"
+set -e
+check "$expected" "$actual"
+check "$expected_err" "$actual_err"
+
+
+# check null input
+start_test "null input"
+check_exit '-eq 0' mhical </dev/null
+
+
+finish_test
 exit $failed