1from __future__ import annotations 2 3from watchdog.events import ( 4 EVENT_TYPE_CLOSED, 5 EVENT_TYPE_CLOSED_NO_WRITE, 6 EVENT_TYPE_CREATED, 7 EVENT_TYPE_DELETED, 8 EVENT_TYPE_MODIFIED, 9 EVENT_TYPE_MOVED, 10 EVENT_TYPE_OPENED, 11 DirCreatedEvent, 12 DirDeletedEvent, 13 DirModifiedEvent, 14 DirMovedEvent, 15 FileClosedEvent, 16 FileClosedNoWriteEvent, 17 FileCreatedEvent, 18 FileDeletedEvent, 19 FileModifiedEvent, 20 FileMovedEvent, 21 FileOpenedEvent, 22 FileSystemEvent, 23 LoggingEventHandler, 24) 25 26path_1 = "/path/xyz" 27path_2 = "/path/abc" 28 29 30class _TestableEventHandler(LoggingEventHandler): 31 def on_any_event(self, event): 32 assert isinstance(event, FileSystemEvent) 33 34 def on_modified(self, event): 35 super().on_modified(event) 36 assert event.event_type == EVENT_TYPE_MODIFIED 37 38 def on_deleted(self, event): 39 super().on_deleted(event) 40 assert event.event_type == EVENT_TYPE_DELETED 41 42 def on_moved(self, event): 43 super().on_moved(event) 44 assert event.event_type == EVENT_TYPE_MOVED 45 46 def on_created(self, event): 47 super().on_created(event) 48 assert event.event_type == EVENT_TYPE_CREATED 49 50 def on_closed(self, event): 51 super().on_closed(event) 52 assert event.event_type == EVENT_TYPE_CLOSED 53 54 def on_closed_no_write(self, event): 55 super().on_closed_no_write(event) 56 assert event.event_type == EVENT_TYPE_CLOSED_NO_WRITE 57 58 def on_opened(self, event): 59 super().on_opened(event) 60 assert event.event_type == EVENT_TYPE_OPENED 61 62 63def test_logging_event_handler_dispatch(): 64 dir_del_event = DirDeletedEvent("/path/blah.py") 65 file_del_event = FileDeletedEvent("/path/blah.txt") 66 dir_cre_event = DirCreatedEvent("/path/blah.py") 67 file_cre_event = FileCreatedEvent("/path/blah.txt") 68 dir_mod_event = DirModifiedEvent("/path/blah.py") 69 file_mod_event = FileModifiedEvent("/path/blah.txt") 70 dir_mov_event = DirMovedEvent("/path/blah.py", "/path/blah") 71 file_mov_event = FileMovedEvent("/path/blah.txt", "/path/blah") 72 file_ope_event = FileOpenedEvent("/path/blah.txt") 73 file_clo_event = FileClosedEvent("/path/blah.txt") 74 file_clo_nw_event = FileClosedNoWriteEvent("/path/blah.txt") 75 76 all_events = [ 77 dir_mod_event, 78 dir_del_event, 79 dir_cre_event, 80 dir_mov_event, 81 file_mod_event, 82 file_del_event, 83 file_cre_event, 84 file_mov_event, 85 file_ope_event, 86 file_clo_event, 87 file_clo_nw_event, 88 ] 89 90 handler = _TestableEventHandler() 91 for event in all_events: 92 handler.dispatch(event) 93