diff options
-rw-r--r-- | test/Makefile.am | 8 | ||||
-rw-r--r-- | test/data/apts-export | 2 | ||||
-rw-r--r-- | test/data/ical-009.ical | 68 | ||||
-rw-r--r-- | test/data/todo-export | 1 | ||||
-rwxr-xr-x | test/ical-009.sh | 33 | ||||
-rwxr-xr-x | test/ical-010.sh | 34 | ||||
-rwxr-xr-x | test/ical-011.sh | 20 |
7 files changed, 165 insertions, 1 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index d896dc3..6b04d86 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -56,6 +56,9 @@ TESTS = \ ical-006.sh \ ical-007.sh \ ical-008.sh \ + ical-009.sh \ + ical-010.sh \ + ical-011.sh \ next-001.sh \ next-002.sh \ next-003.sh \ @@ -117,6 +120,7 @@ EXTRA_DIST = \ data/apts-event-004 \ data/apts-event-005 \ data/apts-event-006 \ + data/apts-export \ data/apts-filter-001 \ data/apts-recur \ data/apts-regress-001 \ @@ -129,4 +133,6 @@ EXTRA_DIST = \ data/ical-006.ical \ data/ical-007.ical \ data/ical-008.ical \ - data/todo + data/ical-009.ical \ + data/todo \ + data/todo-export diff --git a/test/data/apts-export b/test/data/apts-export new file mode 100644 index 0000000..65fbbc4 --- /dev/null +++ b/test/data/apts-export @@ -0,0 +1,2 @@ +02/26/2020 @ 07:09 -> 02/26/2020 @ 07:10|Exported, escaped characters in SUMMARY: ,(comma), ;(semicolon) , and \(escape). +02/26/2020 [1] Exported, escaped characters in SUMMARY: ,(comma), ;(semicolon) , and \(escape). diff --git a/test/data/ical-009.ical b/test/data/ical-009.ical new file mode 100644 index 0000000..73e9037 --- /dev/null +++ b/test/data/ical-009.ical @@ -0,0 +1,68 @@ +BEGIN:VCALENDAR +VERSION:2.0 +BEGIN:VEVENT +DTSTART:20200318T084100 +DURATION:PT1H30M0S +SUMMARY:A simple appointment +END:VEVENT +BEGIN:VTODO +PRIORITY:1 +SUMMARY:A simple todo +END:VTODO +BEGIN:VEVENT +DTSTART: +DURATION:PT1H30M0S +SUMMARY:missing start time +END:VEVENT +BEGIN:VEVENT +DTSTART:20200318T084100 +DURATION:PT1H30M0S +RRULE:FREQ=HOURLY;INTERVAL=2;UNTIL=20200401T000000 +SUMMARY:unsupported frequency +END:VEVENT +BEGIN:VEVENT +DTSTART:20200318T084100 +DURATION:PT1H30M0S +SUMMARY malformed summary line +END:VEVENT +BEGIN:VTODO +PRIORITY:10 +SUMMARY:invalid priority +END:VTODO +BEGIN:VEVENT +DTSTART:20200318T084100 +DURATION:PT1H30M0S +RRULE:FREQ=DAILY;INTERVAL=2;UNTIL=20200401T000000 +EXDATE 20200324T084100 +SUMMARY:malformed exceptions line +END:VEVENT +BEGIN:VEVENT +DTSTART:20200318T084100 +DURATION:PT1H30M0S +SUMMARY:Summary with more than\none line +END:VEVENT +BEGIN:VEVENT +DTSTART:20200318T084100 +DURATION:PT1H30M0S +SUMMARY:malformed description line +DESCRIPTION something is missing +END:VEVENT +BEGIN:VEVENT +DTSTART:20200318T084100 +DURATION:PT1H30M0S +SUMMARY:malformed description +DESCRIPTION:description with an unescaped semicolon (;) +END:VEVENT +BEGIN:VEVENT +DTSTART:20200318T084100 +DURATION:PT1H30M0S +SUMMARY:empty DESCRIPTION +DESCRIPTION: +END:VEVENT +BEGIN:VTODO +PRIORITY:1 +SUMMARY:an unescaped comma: , +END:VTODO +BEGIN:VTODO +SUMMARY:finally\, missing end of item +END:VCALENDAR diff --git a/test/data/todo-export b/test/data/todo-export new file mode 100644 index 0000000..b7cfc23 --- /dev/null +++ b/test/data/todo-export @@ -0,0 +1 @@ +[1] Exported, escaped characters in SUMMARY: ,(comma), ;(semicolon) , and \(escape). diff --git a/test/ical-009.sh b/test/ical-009.sh new file mode 100755 index 0000000..9558f15 --- /dev/null +++ b/test/ical-009.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# Import with skipped items. + +. "${TEST_INIT:-./test-init.sh}" + +if [ "$1" = 'actual' ]; then + mkdir .calcurse || exit 1 + cp "$DATA_DIR/conf" .calcurse || exit 1 + out=$("$CALCURSE" -D "$PWD/.calcurse" -i "$DATA_DIR/ical-009.ical" 2>&1) + echo "$out" | sed -n '4,5p' + log=$(echo "$out" | awk '$1 == "See" {print $2}') + cat "$log" | sed '1,17d' + rm -rf .calcurse || exit 1 +elif [ "$1" = 'expected' ]; then + cat <<EOD +Import process report: 0068 lines read +1 app / 0 events / 1 todo / 11 skipped + +VEVENT [12]: could not retrieve event start time. +VEVENT [17]: recurrence frequency not recognized. +VEVENT [23]: malformed summary line +VTODO [28]: item priority is invalid (must be between 0 and 9). +VEVENT [32]: malformed exceptions line. +VEVENT [39]: line break in summary. +VEVENT [44]: malformed description line. +VEVENT [50]: malformed description. +VEVENT [56]: empty description. +VTODO [62]: malformed summary. +VTODO [66]: The ical file seems to be malformed. The end of item was not found. +EOD +else + ./run-test "$0" +fi diff --git a/test/ical-010.sh b/test/ical-010.sh new file mode 100755 index 0000000..7cb1002 --- /dev/null +++ b/test/ical-010.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# ical export: encoded summary TEXT (escaped characters). + +. "${TEST_INIT:-./test-init.sh}" + +if [ "$1" = 'actual' ]; then + mkdir .calcurse || exit 1 + cp "$DATA_DIR/conf" .calcurse || exit 1 + cp "$DATA_DIR/apts-export" .calcurse/apts || exit 1 + cp "$DATA_DIR/todo-export" .calcurse/todo || exit 1 + "$CALCURSE" -D "$PWD/.calcurse" --export=ical | sed '/^PRODID/d' + rm -rf .calcurse || exit 1 +elif [ "$1" = 'expected' ]; then + cat <<EOD +BEGIN:VCALENDAR +VERSION:2.0 +BEGIN:VEVENT +DTSTART;VALUE=DATE:20200226 +SUMMARY:Exported\, escaped characters in SUMMARY: \,(comma)\, \;(semicolon) \, and \\\\(escape). +END:VEVENT +BEGIN:VEVENT +DTSTART:20200226T070900 +DURATION:P0DT0H1M0S +SUMMARY:Exported\, escaped characters in SUMMARY: \,(comma)\, \;(semicolon) \, and \\\\(escape). +END:VEVENT +BEGIN:VTODO +PRIORITY:1 +SUMMARY:Exported\, escaped characters in SUMMARY: \,(comma)\, \;(semicolon) \, and \\\\(escape). +END:VTODO +END:VCALENDAR +EOD +else + ./run-test "$0" +fi diff --git a/test/ical-011.sh b/test/ical-011.sh new file mode 100755 index 0000000..4b6c238 --- /dev/null +++ b/test/ical-011.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# encoded summary TEXT (escaped charaters): export, then import and compare. + +. "${TEST_INIT:-./test-init.sh}" + +mkdir .calcurse || exit 1 +cp "$DATA_DIR/conf" .calcurse || exit 1 +cp "$DATA_DIR/apts-export" .calcurse/apts || exit 1 +cp "$DATA_DIR/todo-export" .calcurse/todo || exit 1 + +"$CALCURSE" -D "$PWD/.calcurse" --export=ical > "$PWD"/.calcurse/export.ical && +(cd .calcurse; mv apts apts-export; mv todo todo-export) && +"$CALCURSE" -D "$PWD/.calcurse" --quiet --import \ + "$PWD"/.calcurse/export.ical && +(cd .calcurse; cmp -s apts-export apts) && +(cd .calcurse; cmp -s todo-export todo) && +status=0 || status=1 + +rm -rf .calcurse +exit $status |