]> diplodocus.org Git - nmh/blobdiff - test/mhical/test-mhical
mhlsbr.c: Use variable for strncpy(3)'s size, not sizeof.
[nmh] / test / mhical / test-mhical
index af75cf87adee83ab7a5d5c98f103aca031f8bc6e..72c55f5de4fe379a79ca1c46cc6d6bb8ab3a8dd6 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:
@@ -47,11 +49,12 @@ Usage: mhical [switches]
 EOF
 
 #### Skip nmh intro text.
-run_prog mhical -help | sed '/^$/Q' >"$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 +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!
@@ -97,6 +101,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 +128,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 +156,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 +225,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 +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,6 +278,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 +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
@@ -320,6 +331,7 @@ 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
@@ -410,6 +422,7 @@ mhical -reply accept <"$MH_TEST_DIR/test1.ics" | egrep -v '^DTSTAMP:' \
 check "$expected" "$MH_TEST_DIR/test1.txt"
 
 # 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
@@ -543,6 +556,7 @@ check "$expected" "$MH_TEST_DIR/test1.txt"
 
 
 # check decline of request
+start_test "decline of request"
 cat >"$expected" <<'EOF'
 BEGIN:VCALENDAR
 METHOD:REPLY
@@ -604,6 +618,7 @@ 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
@@ -666,6 +681,7 @@ 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"
 
@@ -730,6 +746,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 +782,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 +816,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