Skip to content

Commit 29bf294

Browse files
committed
no_todo_on_standard_calendar is out, plus misc other fixes
1 parent 15ed930 commit 29bf294

3 files changed

Lines changed: 117 additions & 71 deletions

File tree

check_server_compatibility.py

Lines changed: 108 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#!/usr/bin/env python
2-
import datetime
32
import time
43
import uuid
4+
from datetime import date
5+
from datetime import datetime
6+
from datetime import timedelta
57
from json import dumps
68

79
import click
@@ -16,12 +18,15 @@
1618
from tests.conf import client
1719
from tests.conf import CONNKEYS
1820

21+
1922
def _debugger():
2023
import pdb
24+
2125
## TODO: check some environmental flags
2226
## only hackers want the debug mode
2327
pdb.set_trace()
2428

29+
2530
def _delay_decorator(f, delay=10):
2631
def foo(*a, **kwa):
2732
time.sleep(delay)
@@ -146,7 +151,7 @@ def check_mkcalendar(self):
146151
except NotFoundError:
147152
self.set_flag("non_existing_calendar_found", False)
148153
except Exception as e:
149-
debugger()
154+
_debugger()
150155
pass
151156
## Check on "no_default_calendar" flag
152157
try:
@@ -234,14 +239,14 @@ def check_event(self):
234239

235240
## Two simple events with text fields, dtstart=now and no dtend
236241
obj1 = cal.add_event(
237-
dtstart=datetime.datetime.now(),
242+
dtstart=datetime.now(),
238243
summary="Test event 1",
239244
categories=["foo", "bar"],
240245
class_="CONFIDENTIAL",
241246
uid="check_event_1",
242247
)
243248
obj2 = cal.add_event(
244-
dtstart=datetime.datetime.now(),
249+
dtstart=datetime.now(),
245250
summary="Test event 2",
246251
categories=["zoo", "test"],
247252
uid="check_event_2",
@@ -256,55 +261,59 @@ def check_event(self):
256261
## Recurring events
257262
try:
258263
yearly_time = cal.add_event(
259-
dtstart=datetime.datetime(2000, 1, 1, 0, 0),
264+
dtstart=datetime(2000, 1, 1, 0, 0),
260265
summary="Yearly timed event",
261266
uid="firework_event",
262267
rrule={"FREQ": "YEARLY"},
263268
)
264269
yearly_day = cal.add_event(
265-
dtstart=datetime.date(2000, 5, 1),
270+
dtstart=date(2000, 5, 1),
266271
summary="Yearly day event",
267272
uid="full_day_event",
268273
rrule={"FREQ": "YEARLY"},
269274
)
270275
except:
271276
## should not be here
272-
debugger()
277+
_debugger()
273278
raise
274279
try:
275-
self._check_recurring_events(yearly_time, yearly_day, span1, span2)
280+
self._check_recurring_events(yearly_time, yearly_day)
276281
finally:
277282
yearly_time.delete()
278283
yearly_day.delete()
279284

280285
## Finally, a check that searches involving timespans works as intended
281286
try:
282287
span1 = cal.add_event(
283-
dtstart=datetime.datetime(2000, 7, 1, 8),
284-
dtend=datetime.datetime(2000, 7, 1, 16),
285-
summary="Yearly 8 hour event",
286-
uid="eight_hour_event",
288+
dtstart=datetime(2000, 7, 1, 8),
289+
dtend=datetime(2000, 7, 1, 16),
290+
summary="An 8 hour event",
291+
uid="eight_hour_event1",
287292
)
288293
span2 = cal.add_event(
289-
dtstart=datetime.datetime(2000, 7, 2, 8),
290-
duration=datetime.timedelta(hours=8),
291-
summary="Yearly 8 hour event",
292-
uid="eight_hour_event",
293-
rrule={"FREQ": "YEARLY"},
294+
dtstart=datetime(2000, 7, 2, 8),
295+
duration=timedelta(hours=8),
296+
summary="Another 8 hour event",
297+
uid="eight_hour_event2",
294298
)
295299
except:
296300
## should not be here
297-
debugger()
301+
_debugger()
298302
raise
299-
303+
try:
304+
self._check_spanning_events(span1, span2)
305+
finally:
306+
span1.delete()
307+
span2.delete()
308+
300309
def _check_simple_events(self, obj1, obj2):
301310
cal = self._default_calendar
302311
try:
303312
obj1_ = cal.event_by_url(obj1.url)
304-
assert obj1.data == obj1_.data
313+
assert "SUMMARY:Test event 1" in obj1_.data
305314
except:
306315
self.set_flag("event_by_url_is_broken")
307-
debugger()
316+
_debugger()
308317

309318
try:
310319
foo = cal.event_by_uid("check_event_2")
@@ -328,7 +337,7 @@ def _check_simple_events(self, obj1, obj2):
328337
if len(cal.events()) == 2:
329338
self.set_flag("search_always_needs_comptype", True)
330339
else:
331-
debugger()
340+
_debugger()
332341
pass
333342
## we should not be here
334343
else:
@@ -361,7 +370,7 @@ def _check_simple_events(self, obj1, obj2):
361370
self.set_flag("text_search_is_case_insensitive", False)
362371
else:
363372
## we should not be here
364-
debugger()
373+
_debugger()
365374
pass
366375
events = cal.search(summary="test event", event=True)
367376
if len(events) == 2:
@@ -375,10 +384,10 @@ def _check_simple_events(self, obj1, obj2):
375384
if len(events) == 1:
376385
self.set_flag("combined_search_not_working", False)
377386
elif len(events) == 0:
378-
debugger()
387+
_debugger()
379388
self.set_flag("combined_search_not_working", True)
380389
else:
381-
debugger()
390+
_debugger()
382391
## We should not be here
383392
pass
384393
try:
@@ -391,17 +400,15 @@ def _check_simple_events(self, obj1, obj2):
391400
self.set_flag("category_search_yields_nothing", True)
392401
else:
393402
## we should not be here
394-
debugger()
403+
_debugger()
395404
pass
396405

397-
events = cal.search(summary="test event", class_="CONFIDENTIAL", event=True)
398-
399406
def _check_recurring_events(self, yearly_time, yearly_day):
400407
cal = self._default_calendar
401408
try:
402409
events = cal.search(
403-
start=datetime.datetime(2001, 4, 1),
404-
end=datetime.datetime(2002, 2, 2),
410+
start=datetime(2001, 4, 1),
411+
end=datetime(2002, 2, 2),
405412
event=True,
406413
)
407414
assert len(events) == 2
@@ -413,8 +420,8 @@ def _check_recurring_events(self, yearly_time, yearly_day):
413420
return
414421

415422
events = cal.search(
416-
start=datetime.datetime(2001, 4, 1),
417-
end=datetime.datetime(2002, 2, 2),
423+
start=datetime(2001, 4, 1),
424+
end=datetime(2002, 2, 2),
418425
event=True,
419426
expand="server",
420427
)
@@ -433,6 +440,64 @@ def _check_recurring_events(self, yearly_time, yearly_day):
433440
else:
434441
self.set_flag("broken_expand", True)
435442

443+
def _check_spanning_events(self, span1, span2):
444+
cal = self._default_calendar
445+
one_event_lists = []
446+
try:
447+
## Any overlapping of an event timespan and search timespan
448+
## should yield the event, as I remember the RFC
449+
one_event_lists.append(cal.search(event=True, end=datetime(2000, 7, 1, 10)))
450+
one_event_lists.append(
451+
cal.search(
452+
event=True,
453+
start=datetime(2000, 7, 1, 10),
454+
end=datetime(2000, 7, 1, 12),
455+
)
456+
)
457+
one_event_lists.append(
458+
cal.search(
459+
event=True,
460+
start=datetime(2000, 7, 1, 4),
461+
end=datetime(2000, 7, 1, 12),
462+
)
463+
)
464+
one_event_lists.append(
465+
cal.search(
466+
event=True,
467+
start=datetime(2000, 7, 1, 4),
468+
end=datetime(2000, 7, 1, 22),
469+
)
470+
)
471+
one_event_lists.append(
472+
cal.search(event=True, start=datetime(2000, 7, 2, 10))
473+
)
474+
one_event_lists.append(
475+
cal.search(
476+
event=True,
477+
start=datetime(2000, 7, 2, 10),
478+
end=datetime(2000, 7, 2, 12),
479+
)
480+
)
481+
one_event_lists.append(
482+
cal.search(
483+
event=True,
484+
start=datetime(2000, 7, 2, 4),
485+
end=datetime(2000, 7, 2, 12),
486+
)
487+
)
488+
one_event_lists.append(
489+
cal.search(
490+
event=True,
491+
start=datetime(2000, 7, 2, 4),
492+
end=datetime(2000, 7, 2, 22),
493+
)
494+
)
495+
for one_event in one_event_lists:
496+
assert len(one_event) == 1
497+
except:
498+
_debugger()
499+
raise
500+
436501
def check_todo(self):
437502
try:
438503
## Add a simplest possible todo
@@ -442,28 +507,28 @@ def check_todo(self):
442507
)
443508
todo_with_dtstart = cal.add_todo(
444509
summary="This is a summary",
445-
dtstart=datetime.datetime(2000,1,1)
510+
dtstart=datetime(2000, 1, 1),
446511
uid="check_todo_2",
447512
)
448513
todo_with_due = cal.add_todo(
449514
summary="This is a summary",
450-
due=datetime.datetime(2000,1,1,1,0,0)
515+
due=datetime(2000, 1, 1, 1, 0, 0),
451516
uid="check_todo_3",
452517
)
453518
todo_with_dtstart_due = cal.add_todo(
454519
summary="This is a summary",
455-
dtstart=datetime.datetime(2000,1,1,2,0,0)
456-
due=datetime.datetime(2000,1,1,3,0,0)
520+
dtstart=datetime(2000, 1, 1, 2, 0, 0),
521+
due=datetime(2000, 1, 1, 3, 0, 0),
457522
uid="check_todo_4",
458523
)
459524
todo_with_dtstart_dur = cal.add_todo(
460525
summary="This is a summary",
461-
dtstart=datetime.datetime(2000,1,1,4,0,0)
462-
duration=datetime.timedelta(hours=1)
526+
dtstart=datetime(2000, 1, 1, 4, 0, 0),
527+
duration=timedelta(hours=1),
463528
uid="check_todo_2",
464529
)
465-
if not self.flags['object_by_uid_is_broken']:
466-
assert(len(cal.todo_by_uid('check_todo_1'))==1)
530+
if not self.flags["object_by_uid_is_broken"]:
531+
assert len(cal.todo_by_uid("check_todo_1")) == 1
467532
self.set_flag("no_todo", False)
468533
except:
469534
self.set_flag("no_todo")
@@ -479,9 +544,9 @@ def check_simple_todo(self, todo):
479544
## search for a simple todo
480545
try:
481546
sr = cal.search(summary="This is a summary", todo=True)
482-
assert(len(sr)==1)
547+
assert len(sr) == 1
483548
except:
484-
debugger()
549+
_debugger()
485550
## simple search for a todo won't work.
486551
## I haven't seen that before.
487552
## TODO: add a flag for this
@@ -495,7 +560,7 @@ def check_all(self):
495560
self.check_mkcalendar()
496561
self.check_event()
497562
except:
498-
debugger()
563+
_debugger()
499564
raise
500565
finally:
501566
if self._default_calendar and not self.flags_checked["no_mkcalendar"]:

tests/compatibility_issues.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,6 @@
258258

259259
'text_search_is_case_insensitive',
260260
'text_search_is_exact_match_sometimes',
261-
'combined_search_not_working',
262261
"search_needs_comptype",
263262

264263
## extra features not specified in RFC5545

0 commit comments

Comments
 (0)