Extend iCalendar import tests

Tests ical-010.sh and ical-011.sh assume that Github issue #265 has been fixed
(escape-encoding by export).

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
This commit is contained in:
Lars Henriksen 2020-03-22 07:50:59 +01:00 committed by Lukas Fleischer
parent ffbf714c9e
commit e535eff904
7 changed files with 165 additions and 1 deletions

View File

@ -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

2
test/data/apts-export Normal file
View File

@ -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).

68
test/data/ical-009.ical Normal file
View File

@ -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

1
test/data/todo-export Normal file
View File

@ -0,0 +1 @@
[1] Exported, escaped characters in SUMMARY: ,(comma), ;(semicolon) , and \(escape).

33
test/ical-009.sh Executable file
View File

@ -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

34
test/ical-010.sh Executable file
View File

@ -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

20
test/ical-011.sh Executable file
View File

@ -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