summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rwxr-xr-xtests/test_calendar-cli.sh8
-rwxr-xr-xtests/tests.sh3
-rwxr-xr-xtests/tests_kal.sh282
4 files changed, 2 insertions, 293 deletions
diff --git a/README.md b/README.md
index d04c1c4..eb96911 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@ calendar-cli
Simple command-line CalDAV client, making it possible to add calendar events, browse an agenda and do task management using a caldav server.
-THIS IS THE LEGACY VERSION. I decided to change a bit on the user interface, rather than breaking backward compatibility I made a new command name `plann`. Please visit https://github.com/tobixen/plann for the new version (though be aware that it still has some sharp edges).
+THIS IS THE LEGACY VERSION. If you're already using calendar-cli and don't want to change anything, then keep using it. If you need a production-ready mature command-line utility for accessing your calendar, then this is the right tool ... as for now. I decided to change a bit on the user interface, rather than breaking backward compatibility I made a new command name `plann`. I would recommend visit https://github.com/tobixen/plann for the new version.
calendar-cli will be maintained primarily for backward compatibility. Pull-requests dealing with bugfixes or minor "missing" features will be considered - but for anyone in need of a command-line interface towards a CalDAV calendar server, the recommendation is to use [plann](https://github.com/tobixen/plann) instead.
diff --git a/tests/test_calendar-cli.sh b/tests/test_calendar-cli.sh
index e99546f..1010bae 100755
--- a/tests/test_calendar-cli.sh
+++ b/tests/test_calendar-cli.sh
@@ -17,7 +17,6 @@ if [ -n "$radicale_pid" ]
then
echo "## Radicale now running on pid $radicale_pid"
calendar_cli="../calendar-cli.py --caldav-url=http://localhost:5232/ --caldav-pass=password1 --caldav-user=testuser --calendar-url=/testuser/calendar-cli-test-calendar"
- kal="../cal.py --caldav-password=password1 --caldav-url=http://localhost:5232/ --caldav-user=testuser --calendar-url=/testuser/calendar-cli-test-calendar"
echo "## Creating a calendar"
$calendar_cli calendar create calendar-cli-test-calendar
@@ -25,13 +24,11 @@ then
## the calendar is created. Without the statement above, I'll
## just get 404 when running tests.
export calendar_cli
- export kal
if [ -n "$DEBUG" ]
then
echo "press enter to run tests"
read foo
fi
- ./tests_kal.sh
./tests.sh
if [ -n "$DEBUG" ]
then
@@ -60,11 +57,8 @@ if [ -n "$xandikos_pid" ]
then
echo "## Xandikos now running on pid $xandikos_pid"
calendar_cli="../calendar-cli --caldav-url=http://localhost:8080/ --caldav-user=user"
- kal="../cal.py --caldav-url=http://localhost:8080/ --caldav-user=user"
export calendar_cli
- export kal
- ./tests_kal.sh
- #./tests.sh
+ ./tests.sh
kill $xandikos_pid
else
echo "## Could not start up xandikos (is it installed?). Will skip running tests towards xandikos"
diff --git a/tests/tests.sh b/tests/tests.sh
index 9eb7341..7d1e277 100755
--- a/tests/tests.sh
+++ b/tests/tests.sh
@@ -101,9 +101,6 @@ cat $outfile > $tmpfile
echo "## cleanup, delete it"
calendar_cli calendar delete --event-uid=$uid
-echo "## Same, using kal add ics"
-calendar_cli calendar addics --file $tmpfile
-
rm $tmpfile
calendar_cli --icalendar calendar agenda --from-time=2010-10-13 --agenda-days=1
echo "$output" | grep -q "whole day" || error "could not find the event"
diff --git a/tests/tests_kal.sh b/tests/tests_kal.sh
deleted file mode 100755
index 4d3019d..0000000
--- a/tests/tests_kal.sh
+++ /dev/null
@@ -1,282 +0,0 @@
-#!/bin/bash
-
-set -e
-
-########################################################################
-## SETUP
-########################################################################
-
-for path in . .. ./tests ../tests
-do
- setup="$path/_setup_alias"
- [ -f $setup ] && source $setup
-done
-
-if [ -z "$RUNTESTSNOPAUSE" ]
-then
- echo "tests.sh"
- echo
- echo "Generally, tests.sh should only be run directly if you know what you are doing"
- echo "You may want to use test_calendar-cli.sh instead"
- echo
- echo "This script will use the following commands to access a calendar server:"
- echo
- echo "$kal"
- echo "$calendar_cli"
- echo
- echo "This may work if you have configured a calendar server."
- echo "The tests will add and delete events and tasks."
- echo "Content from 2010-10 may be deleted"
- echo
- echo "Press enter or ctrl-C"
- read foo
-fi
-
-echo "## CLEANUP from earlier failed test runs, if any"
-
-QUIET=true
-for uid in $($calendar_cli calendar agenda --from-time=2010-10-09 --agenda-days=5 --event-template='{uid}') ; do calendar_cli calendar delete --event-uid=$uid ; done
-calendar_cli todo --categories scripttest delete
-unset QUIET
-
-########################################################################
-## TEST CODE FOLLOWS
-########################################################################
-
-echo "## EVENTS"
-
-echo "## this is a very simple test script without advanced error handling"
-echo "## if this test script doesn't output 'ALL TESTS COMPLETED! YAY!' in the end, something went wrong"
-
-echo "## Attempting to add an event at 2010-10-09 20:00:00, 2 hours duration"
-kal add event 'testing testing' '2010-10-09 20:00:00+2h'
-uid=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-[ -n "$uid" ] || error "got no UID back"
-
-echo "## Attempting to add an event at 2010-10-10 20:00:00, CET (1 hour duration is default), with description and non-ascii location"
-kal add event 'testing testing' '2010-10-10 20:00:00+01:00' --set-description='this is a test calendar event' --set-location='Москва'
-uid2=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-[ -n "$uid2" ] || error "got no UID back"
-
-echo "## Attempting to add an event at 2010-10-11 20:00:00, CET, 3h duration"
-kal add event 'testing testing' '2010-10-11 20:00:00+01:00+3h'
-uid3=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-echo "## OK: Added the event, uid is $uid"
-
-echo "## Taking out the agenda for 2010-10-09 + four days"
-kal select --start=2010-10-09 --end=+4d --event list --template='{DESCRIPTION} {LOCATION}'
-echo $output | { grep -q 'this is a test calendar event Москва' && echo "## OK: found the event" ; } || error "didn't find the event"
-
-echo "## Taking out the agenda for 2010-10-10, with uid"
-kal select --start=2010-10-10 --end=+1d --event list --template='{DTSTART.dt} {UID}'
-echo $output | { grep -q $uid2 && echo "## OK: found the UID" ; } || error "didn't find the UID"
-
-echo "## Deleting events with uid $uid $uid2 $uid3"
-kal select --event --uid=$uid delete
-kal select --event --uid=$uid2 delete
-kal select --event --uid=$uid3 delete
-
-echo "## Searching again for the deleted event"
-kal select --event --start=2010-10-10 --end=+3d list
-echo $output | { grep -q 'testing testing' && error "still found the event" ; } || echo "## OK: didn't find the event"
-
-echo "## Adding a full day event"
-kal add event 'whole day testing' '2010-10-10+4d'
-uid=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-[ -n "$uid" ] || error "got no UID back"
-
-echo "## fetching the full day event, in ics format"
-kal select --start=2010-10-13 --end=+1d --event list --ics
-
-echo "$output" | grep -q "whole day" || error "could not find the event"
-echo "$output" | grep -q "20101010" || error "could not find the date"
-echo "$output" | grep -q "20101010T" && error "a supposed whole day event was found to be with the time of day"
-echo "OK: found the event"
-
-## saving the ics data
-tmpfile=$(mktemp)
-cat $outfile > $tmpfile
-
-echo "## cleanup, delete it"
-kal select --event --uid=$uid delete
-
-echo "## Same, using kal add ics"
-kal add ical --ical-file=$tmpfile
-rm $tmpfile
-
-kal select --event --start=2010-10-13 --end=2010-10-14 list --ics
-echo "$output" | grep -q "whole day" || error "could not find the event"
-echo "$output" | grep -q "20101010" || error "could not find the date"
-echo "$output" | grep -q "20101010T" && error "a supposed whole day event was found to be with the time of day"
-echo "$output" | grep UID
-echo "OK: found the event"
-echo "## cleanup, delete it"
-
-kal select --event --uid=$uid delete
-
-## TODO: PROCRASTINATING TIME ZONES. Waiting for a release of the icalendar library that doesn't depend on pytz
-if [ -n "" ]; then
-echo "## testing timezone support"
-echo "## Create a UTC event"
-calendar_cli --timezone='UTC' calendar add '2010-10-09 12:00:00+10m' 'testevent with a UTC timezone'
-uid=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-[ -n "$uid" ] || error "got no UID back"
-
-echo "## fetching the UTC-event, as ical data"
-calendar_cli --icalendar --timezone=UTC calendar agenda --from-time='2010-10-09 11:59' --agenda-mins=3
-[ -n "$output" ] || error "failed to find the event that was just added"
-echo "$output" | grep -q "20101009T120000Z" || error "failed to find the UTC timestamp. Perhaps the server is yielding timezone data for the UTC timezone? In that case, the assert in the test code should be adjusted"
-
-echo "## cleanup, delete it"
-calendar_cli calendar delete --event-uid=$uid
-
-echo "## Create an event with a somewhat remote time zone, west of UTC"
-calendar_cli --timezone='Brazil/DeNoronha' calendar add '2010-10-09 12:00:00+10m' 'testevent with a time zone west of UTC'
-uid=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-[ -n "$uid" ] || error "got no UID back"
-
-echo "## fetching the remote time zone event, as ical data"
-calendar_cli --icalendar --timezone=UTC calendar agenda --from-time='2010-10-09 13:59' --agenda-mins=3
-## zimbra changes Brazil/DeNoronha to America/Noronha. Actually, the server may theoretically use arbitrary IDs for the timezones.
-echo "$output" | grep -Eq "TZID=\"?[a-zA-Z/]*Noronha" || echo "$output" | grep -q "140000Z" ||
- error "failed to find the remote timezone"
-
-echo "## fetching the remote time zone event, in UTC-time"
-calendar_cli --timezone=UTC calendar agenda --from-time='2010-10-09 13:59' --agenda-mins=3 --event-template='{dtstart}'
-[ "$output" == '2010-10-09 14:00 (Sat)' ] || error "expected dtstart to be 2010-10-09 14:00 (Sat)"
-
-echo "## fetching the remote time zone event, in CET-time (UTC+2 with DST, and October is defined as summer in Oslo, weird)"
-calendar_cli --timezone=Europe/Oslo calendar agenda --from-time='2010-10-09 15:59' --agenda-mins=3 --event-template='{dtstart}'
-[ "$output" == '2010-10-09 16:00 (Sat)' ] || error "expected dtstart to be 2010-10-09 15:00 (Sat)"
-
-echo "## cleanup, delete it"
-calendar_cli calendar delete --event-uid=$uid
-fi
-
-echo "## TODOS / TASK LISTS"
-
-echo "## Attempting to add a task with category 'scripttest'"
-kal add todo --set-class=PRIVATE --set-category scripttest "edit this task"
-uidtodo1=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-kal add todo --set-class=CONFIDENTIAL --set-category scripttest "edit this task2"
-uidtodo2=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-kal add todo --set-class=PUBLIC "another task for testing sorting, offset and limit"
-uidtodo3=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-
-echo "## Listing out all tasks with category set to 'scripttest'"
-kal select --todo --category scripttest list
-[ $(echo "$output" | wc -l) == 2 ] || error "We found more or less or none of the two todo items we just added"
-
-
-echo "## Sort order and limit. CONFIDENTIAL class should come first. Only one task should be returned"
-kal select --todo --sort-key=CLASS --limit 1 list --template '{CLASS}'
-echo "$output" | grep -q CONFIDENTIAL || error "Sorting does not work as expected"
-echo "$output" | grep -q PRIVATE && error "Limit does not work as expected"
-echo "## print-uid subcommand will print the uid of the first thing found"
-kal select --todo --sort-key=CLASS print-uid
-[ $output == $uidtodo2 ] || error "print-uid subcommand does not work"
-
-kal select --todo --sort-key='class' --limit 2 list --template '{CLASS}'
-[ $(echo "$output" | wc -l) == 2 ] && echo "## OK: limit=2 working"
-echo "$output" | grep -q PRIVATE || error "Limit/sorting does not work as expected"
-
-echo "## Offset. PRIVATE should come in the middle"
-kal select --todo --sort-key=class --limit 1 --offset 1 list --template '{CLASS}'
-echo "$output" | grep -q PRIVATE || error "Offset does not work as expected"
-
-echo "## Reverse order. PUBLIC should come first"
-kal select --todo --sort-key=-CLASS --limit 1 list --template '{CLASS}'
-echo "$output" | grep -q PUBLIC || error "Reverse sort does not work as expected"
-
-echo "## Templating. The task without category should come first or last"
-kal select --todo --sort-key='{CATEGORIES.cats[0]:?aaa?}' --limit 1 list --template '{SUMMARY}'
-echo "$output" | grep -q 'another task' || error "sort by template not working as expected"
-kal select --todo --sort-key='{CATEGORIES.cats[0]:?zzz?}' --limit 1 list --template '{SUMMARY}'
-echo "$output" | grep -q 'another task' && error "sort by template not working as expected"
-
-echo "## Utilizing two sort keys"
-kal select --todo --sort-key='{CATEGORIES.cats[0]:?zzz?}' --sort-key=CLASS --limit 1 list --template '{CLASS}'
-[ "$output" == "CONFIDENTIAL" ] || error "two sort keys didn't work as expected"
-kal select --todo --sort-key='{CATEGORIES.cats[0]:?zzz?}' --sort-key=-CLASS --limit 1 list --template '{CLASS}'
-[ "$output" == "PRIVATE" ] || error "two sort keys didn't work as expected"
-
-echo "## Editing the task"
-kal select --todo --category scripttest edit --set-summary "editing" --add-category "scripttest2"
-
-echo "## Verifying that the edits got through"
-kal select --todo --category scripttest list
-[ $(echo "$output" | wc -l) == 1 ] && echo "## OK: found the todo item we just edited and nothing more"
-kal select --todo --category scripttest2 list
-[ $(echo "$output" | wc -l) == 1 ] && echo "## OK: found the todo item we just edited and nothing more"
-kal select --todo --category scripttest3 list
-[ $(echo "$output" | wc -l) == 1 ] && echo "## OK: found the todo item we just edited and nothing more"
-kal select --todo --comment editing list
-[ $(echo "$output" | wc -l) == 1 ] && echo "## OK: found the todo item we just edited and nothing more"
-
-
-echo "## Complete the task"
-kal select --todo --category scripttest edit --complete
-kal select --todo --category scripttest list
-[ -z "$output" ] && echo "## OK: todo-item is done"
-echo "## Test that we can list out completed tasks, and also undo completion"
-kal select --todo --category scripttest --include-completed edit --uncomplete
-kal select --todo --category scripttest list
-[ -z "$output" ] && error "--uncomplete does not work!"
-kal select --todo --uid $uidtodo1 --uid $uidtodo2 --uid $uidtodo3 delete --multi-delete
-
-echo "## parent-child relationships"
-echo "## Going to add three todo-items with children/parent relationships"
-kal add todo --set-category scripttest "this is a grandparent"
-uidtodo1=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-kal add todo --set-category scripttest --set-parent $uidtodo1 "this is both a parent and a child"
-uidtodo2=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-kal add todo --set-category scripttest --set-parent $uidtodo1 --set-parent $uidtodo2 "this task is a child of it's grandparent ... (what?)"
-uidtodo3=$(echo $output | perl -ne '/uid=(.*)$/ && print $1')
-kal select --todo --category scripttest list
-[ $(echo "$output" | wc -l) == 3 ] && echo "## OK: found three tasks"
-kal select --todo --category scripttest --skip-parents list
-[ $(echo "$output" | wc -l) == 1 ] && echo "## OK: found only one task now"
-kal select --todo --category scripttest --skip-children list
-[ $(echo "$output" | wc -l) == 1 ] && echo "## OK: found only one task now"
-echo "## Going to complete the grandchildren task"
-kal select --todo --skip-parents --category scripttest edit --complete
-kal select --todo --skip-parents --category scripttest list
-[ $(echo "$output" | wc -l) == 1 ] && echo "## OK: found only one task now"
-echo "## Going to complete the child task"
-kal select --todo --skip-parents --category scripttest edit --complete
-kal select --todo --skip-parents --category scripttest list
-[ $(echo "$output" | wc -l) == 1 ] && echo "## OK: found only one task now"
-echo "## Going to complete the grandparent task"
-kal select --todo --skip-parents --category scripttest edit --complete
-kal select --todo --skip-parents --category scripttest list
-[ -z "$output" ] && echo "## OK: found no tasks now"
-kal select --todo --category scripttest list
-[ -z "$output" ] && echo "## OK: found no tasks now"
-
-kal select --todo --uid $uidtodo1 --uid $uidtodo2 --uid $uidtodo3 delete --multi-delete
-
-echo "## test completion of recurring task"
-kal add todo --set-category=scripttest --set-rrule="FREQ=YEARLY;COUNT=2" "this is a yearly task to be performed twice"
-uidtodo=$(echo "$output" | perl -ne '/uid=(.*)$/ && print $1')
-kal select --todo list --template='{UID}'
-## since no time range is given, the task cannot be expanded
-[ "$output" == "$uidtodo" ] || error "weird problem"
-echo "## completing it should efficiently move the due one year into the future"
-kal select --todo complete
-kal select --todo list --template='{DUE.dt:%F}'
-echo "$output" | grep -q "$(date -d '+1 year' +%F)" || error "completion of event with RRULE did not go so well"
-echo "## since count is set to two, completing it for the second time should complete the whole thing"
-kal select --todo complete
-[ -z "$output" ] && echo "## OK: found no tasks now"
-kal select --todo --uid $uidtodo delete
-
-echo "## test completion of recurring task with fixed occurance time"
-kal add todo --set-category=scripttest --set-rrule='FREQ=YEARLY;BYMONTH=1;BYMONTHDAY=1;BYHOUR=13;BYMINUTE=0;BYSECOND=0' "This task should be done next time 1st of January"
-kal select --todo complete
-kal select --todo list --template='{DUE.dt:%F}'
-echo "$output" | grep -q "$(date -d '+1 year' +%Y)-01-01" || error "completion of event with RRULE did not go so well"
-
-echo "## some kal TESTS COMPLETED SUCCESSFULLY! YAY!"
-
-rm $outfile
-