コード例 #1
0
ファイル: test_emitter.py プロジェクト: Witos/watchdog
def test_passing_bytes_should_give_bytes(p):
    path = p('').encode()

    event_queue = Queue()
    emitter = Emitter(event_queue, ObservedWatch(path, recursive=True))
    emitter.start()
    touch(p('a'))
    event = event_queue.get(timeout=5)[0]
    assert isinstance(event.src_path, bytes)
コード例 #2
0
def test_delete_watched_directory(p):
    mkdir(p('dir'))
    inotify = InotifyBuffer(p('dir').encode())
    rm(p('dir'), recursive=True)

    # Wait for the event to be picked up
    inotify.read_event()

    # Ensure InotifyBuffer shuts down cleanly without raising an exception
    inotify.close()
コード例 #3
0
def test_delete_watched_directory(p):
    mkdir(p('dir'))
    inotify = InotifyBuffer(p('dir').encode())
    rm(p('dir'), recursive=True)

    # Wait for the event to be picked up
    inotify.read_event()

    # Ensure InotifyBuffer shuts down cleanly without raising an exception
    inotify.close()
コード例 #4
0
ファイル: test_emitter.py プロジェクト: Witos/watchdog
def test_modify(p):
    touch(p('a'))
    event_queue, emitter = _setup_emitter(p(''))
    touch(p('a'))

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('a')
    assert isinstance(event, FileModifiedEvent)

    emitter.stop()
コード例 #5
0
ファイル: test_emitter.py プロジェクト: cgc1983/watchdog
def test_modify(p):
    touch(p('a'))
    event_queue, emitter = _setup_emitter(p(''))
    touch(p('a'))

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('a').encode()
    assert isinstance(event, FileModifiedEvent)

    emitter.stop()
コード例 #6
0
ファイル: test_emitter.py プロジェクト: cgc1983/watchdog
def test_passing_bytes_should_give_bytes(p):
    from watchdog.utils.unicode_paths import bytes_cls
    path = bytes_cls(p(''), 'ascii')
    assert isinstance(p(''), bytes_cls)

    event_queue = Queue()
    emitter = Emitter(event_queue, ObservedWatch(path, recursive=True))
    emitter.start()
    touch(p('a'))
    event = event_queue.get(timeout=5)[0]
    assert isinstance(event.src_path, bytes_cls)
コード例 #7
0
ファイル: test_emitter.py プロジェクト: cgc1983/watchdog
def test_passing_bytes_should_give_bytes(p):
    from watchdog.utils.unicode_paths import bytes_cls
    path = bytes_cls(p(''), 'ascii')
    assert isinstance(p(''), bytes_cls)

    event_queue = Queue()
    emitter = Emitter(event_queue, ObservedWatch(path, recursive=True))
    emitter.start()
    touch(p('a'))
    event = event_queue.get(timeout=5)[0]
    assert isinstance(event.src_path, bytes_cls)
コード例 #8
0
def test_dir_modify_on_move(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))
    ref = DirectorySnapshot(p(''))
    wait()
    mv(p('dir1', 'a'), p('dir2', 'b'))
    diff = DirectorySnapshotDiff(ref, DirectorySnapshot(p('')))
    assert set(diff.dirs_modified) == set([p('dir1'), p('dir2')])
コード例 #9
0
def test_dir_modify_on_move(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))
    ref = DirectorySnapshot(p(''))
    wait()
    mv(p('dir1', 'a'), p('dir2', 'b'))
    diff = DirectorySnapshotDiff(ref, DirectorySnapshot(p('')))
    assert set(diff.dirs_modified) == set([p('dir1'), p('dir2')])
コード例 #10
0
def test_detect_modify_for_moved_files(p):
    touch(p('a'))
    ref = DirectorySnapshot(p(''))
    wait()
    touch(p('a'))
    mv(p('a'), p('b'))
    diff = DirectorySnapshotDiff(ref, DirectorySnapshot(p('')))
    assert diff.files_moved == [(p('a'), p('b'))]
    assert diff.files_modified == [p('a')]
コード例 #11
0
def test_detect_modify_for_moved_files(p):
    touch(p('a'))
    ref = DirectorySnapshot(p(''))
    wait()
    touch(p('a'))
    mv(p('a'), p('b'))
    diff = DirectorySnapshotDiff(ref, DirectorySnapshot(p('')))
    assert diff.files_moved == [(p('a'), p('b'))]
    assert diff.files_modified == [p('a')]
コード例 #12
0
ファイル: test_emitter.py プロジェクト: Witos/watchdog
def test_create(p):
    event_queue, emitter = _setup_emitter(p(''))
    open(p('a'), 'a').close()

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('a')
    assert isinstance(event, FileCreatedEvent)

    event = event_queue.get(timeout=5)[0]
    assert os.path.normpath(event.src_path) == os.path.normpath(p(''))
    assert isinstance(event, DirModifiedEvent)

    emitter.stop()
コード例 #13
0
ファイル: test_emitter.py プロジェクト: cgc1983/watchdog
def test_create(p):
    event_queue, emitter = _setup_emitter(p(''))
    open(p('a'), 'a').close()

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('a').encode()
    assert isinstance(event, FileCreatedEvent)

    event = event_queue.get(timeout=5)[0]
    assert os.path.normpath(event.src_path) == os.path.normpath(p('').encode())
    assert isinstance(event, DirModifiedEvent)

    emitter.stop()
コード例 #14
0
def test_move_internal(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))
    ref = DirectorySnapshot(p(''))
    mv(p('dir1', 'a'), p('dir2', 'b'))
    diff = DirectorySnapshotDiff(ref, DirectorySnapshot(p('')))
    assert diff.files_moved == [(p('dir1', 'a'), p('dir2', 'b'))]
    assert diff.files_created == []
    assert diff.files_deleted == []
コード例 #15
0
def test_move_internal(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))
    ref = DirectorySnapshot(p(''))
    mv(p('dir1', 'a'), p('dir2', 'b'))
    diff = DirectorySnapshotDiff(ref, DirectorySnapshot(p('')))
    assert diff.files_moved == [(p('dir1', 'a'), p('dir2', 'b'))]
    assert diff.files_created == []
    assert diff.files_deleted == []
コード例 #16
0
ファイル: test_emitter.py プロジェクト: cgc1983/watchdog
def test_delete(p):
    touch(p('a'))
    event_queue, emitter = _setup_emitter(p(''))
    rm(p('a'))

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('a').encode()
    assert isinstance(event, FileDeletedEvent)

    event = event_queue.get(timeout=5)[0]
    assert os.path.normpath(event.src_path) == os.path.normpath(p('').encode())
    assert isinstance(event, DirModifiedEvent)

    emitter.stop()
コード例 #17
0
ファイル: test_emitter.py プロジェクト: Witos/watchdog
def test_delete(p):
    touch(p('a'))
    event_queue, emitter = _setup_emitter(p(''))
    rm(p('a'))

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('a')
    assert isinstance(event, FileDeletedEvent)

    event = event_queue.get(timeout=5)[0]
    assert os.path.normpath(event.src_path) == os.path.normpath(p(''))
    assert isinstance(event, DirModifiedEvent)

    emitter.stop()
コード例 #18
0
def test_move_from(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))
    ref = DirectorySnapshot(p('dir1'))
    mv(p('dir1', 'a'), p('dir2', 'b'))
    diff = DirectorySnapshotDiff(ref, DirectorySnapshot(p('dir1')))
    assert diff.files_deleted == [p('dir1', 'a')]
コード例 #19
0
def test_move_from(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))
    ref = DirectorySnapshot(p('dir1'))
    mv(p('dir1', 'a'), p('dir2', 'b'))
    diff = DirectorySnapshotDiff(ref, DirectorySnapshot(p('dir1')))
    assert diff.files_deleted == [p('dir1', 'a')]
コード例 #20
0
def test_move_internal(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))

    inotify = InotifyBuffer(p('').encode(), recursive=True)
    mv(p('dir1', 'a'), p('dir2', 'b'))
    frm, to = wait_for_move_event(inotify.read_event)
    assert frm.src_path == p('dir1', 'a').encode()
    assert to.src_path == p('dir2', 'b').encode()
    inotify.close()
コード例 #21
0
def test_move_internal(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))

    inotify = InotifyBuffered(p(''), recursive=True)
    mv(p('dir1', 'a'), p('dir2', 'b'))
    frm, to = wait_for_move_event(inotify.read_event)
    assert frm.src_path.decode() == p('dir1', 'a')
    assert to.src_path.decode() == p('dir2', 'b')
    inotify.close()
コード例 #22
0
ファイル: test_emitter.py プロジェクト: cgc1983/watchdog
def test_move(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))
    event_queue, emitter = _setup_emitter(p(''))

    mv(p('dir1', 'a'), p('dir2', 'b'))

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('dir1', 'a').encode()
    assert event.dest_path == p('dir2', 'b').encode()
    assert isinstance(event, FileMovedEvent)

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('dir1').encode()
    assert isinstance(event, DirModifiedEvent)

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('dir2').encode()
    assert isinstance(event, DirModifiedEvent)

    emitter.stop()
コード例 #23
0
ファイル: test_emitter.py プロジェクト: Witos/watchdog
def test_move(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))
    event_queue, emitter = _setup_emitter(p(''))

    mv(p('dir1', 'a'), p('dir2', 'b'))

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('dir1', 'a')
    assert event.dest_path == p('dir2', 'b')
    assert isinstance(event, FileMovedEvent)

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('dir1')
    assert isinstance(event, DirModifiedEvent)

    event = event_queue.get(timeout=5)[0]
    assert event.src_path == p('dir2')
    assert isinstance(event, DirModifiedEvent)

    emitter.stop()
コード例 #24
0
def test_move_to(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))

    inotify = InotifyBuffer(p('dir2').encode())
    mv(p('dir1', 'a'), p('dir2', 'b'))
    event = wait_for_move_event(inotify.read_event)
    assert event.is_moved_to
    assert event.src_path == p('dir2', 'b').encode()
    inotify.close()
コード例 #25
0
def test_move_to(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))

    inotify = InotifyBuffered(p('dir2'))
    mv(p('dir1', 'a'), p('dir2', 'b'))
    event = wait_for_move_event(inotify.read_event)
    assert event.is_moved_to
    assert event.src_path == p('dir2', 'b').encode()
    inotify.close()
コード例 #26
0
ファイル: test_emitter.py プロジェクト: Witos/watchdog
def test_move_from(p):
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    touch(p('dir1', 'a'))
    event_queue, emitter = _setup_emitter(p('dir1'))

    mv(p('dir1', 'a'), p('dir2', 'b'))
    event = event_queue.get(timeout=5)[0]
    assert isinstance(event, FileDeletedEvent)
    assert event.src_path == p('dir1', 'a')

    emitter.stop()
コード例 #27
0
ファイル: test_emitter.py プロジェクト: Witos/watchdog
def test_separate_consecutive_moves(p):
    mkdir(p('dir1'))
    touch(p('dir1', 'a'))
    touch(p('b'))

    event_queue, emitter = _setup_emitter(p('dir1'))

    mv(p('dir1', 'a'), p('c'))
    mv(p('b'), p('dir1', 'd'))

    event = event_queue.get(timeout=5)[0]
    assert isinstance(event, FileDeletedEvent)
    assert event.src_path == p('dir1', 'a')

    assert isinstance(event_queue.get(timeout=5)[0], DirModifiedEvent)

    event = event_queue.get(timeout=5)[0]
    assert isinstance(event, FileCreatedEvent)
    assert event.src_path == p('dir1', 'd')

    assert isinstance(event_queue.get(timeout=5)[0], DirModifiedEvent)

    emitter.stop()
コード例 #28
0
ファイル: test_emitter.py プロジェクト: cgc1983/watchdog
def test_separate_consecutive_moves(p):
    mkdir(p('dir1'))
    touch(p('dir1', 'a'))
    touch(p('b'))

    event_queue, emitter = _setup_emitter(p('dir1'))

    mv(p('dir1', 'a'), p('c'))
    mv(p('b'), p('dir1', 'd'))

    event = event_queue.get(timeout=5)[0]
    assert isinstance(event, FileDeletedEvent)
    assert event.src_path == p('dir1', 'a').encode()

    assert isinstance(event_queue.get(timeout=5)[0], DirModifiedEvent)

    event = event_queue.get(timeout=5)[0]
    assert isinstance(event, FileCreatedEvent)
    assert event.src_path == p('dir1', 'd').encode()

    assert isinstance(event_queue.get(timeout=5)[0], DirModifiedEvent)

    emitter.stop()
コード例 #29
0
def test_move_internal_batch(p):
    n = 100
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    files = ['%d' % i for i in range(n)]
    for f in files:
        touch(p('dir1', f))

    inotify = InotifyBuffered(p(''), recursive=True)

    random.shuffle(files)
    for f in files:
        mv(p('dir1', f), p('dir2', f))

    # Check that all n events are paired
    i = 0
    while i < n:
        frm, to = wait_for_move_event(inotify.read_event)
        assert os.path.dirname(frm.src_path).endswith(b'/dir1')
        assert os.path.dirname(to.src_path).endswith(b'/dir2')
        assert frm.name == to.name
        i += 1
    inotify.close()
コード例 #30
0
def test_move_internal_batch(p):
    n = 100
    mkdir(p('dir1'))
    mkdir(p('dir2'))
    files = ['%d' % i for i in range(n)]
    for f in files:
        touch(p('dir1', f))

    inotify = InotifyBuffer(p('').encode(), recursive=True)

    random.shuffle(files)
    for f in files:
        mv(p('dir1', f), p('dir2', f))

    # Check that all n events are paired
    i = 0
    while i < n:
        frm, to = wait_for_move_event(inotify.read_event)
        assert os.path.dirname(frm.src_path).endswith(b'/dir1')
        assert os.path.dirname(to.src_path).endswith(b'/dir2')
        assert frm.name == to.name
        i += 1
    inotify.close()
コード例 #31
0
ファイル: test_emitter.py プロジェクト: Witos/watchdog
def test_delete_self(p):
    mkdir(p('dir1'))
    event_queue, emitter = _setup_emitter(p('dir1'))
    rm(p('dir1'), True)
    event_queue.get(timeout=5)[0]
    emitter.stop()
コード例 #32
0
def test_close_should_terminate_thread(p):
    inotify = InotifyBuffer(p('').encode(), recursive=True)
    assert inotify.is_alive()
    inotify.close()
    assert not inotify.is_alive()
コード例 #33
0
def test_dir_modify_on_create(p):
    ref = DirectorySnapshot(p(''))
    wait()
    touch(p('a'))
    diff = DirectorySnapshotDiff(ref, DirectorySnapshot(p('')))
    assert diff.dirs_modified == [p('')]
コード例 #34
0
def test_dir_modify_on_create(p):
    ref = DirectorySnapshot(p(''))
    wait()
    touch(p('a'))
    diff = DirectorySnapshotDiff(ref, DirectorySnapshot(p('')))
    assert diff.dirs_modified == [p('')]
コード例 #35
0
def test_close_should_terminate_thread(p):
    inotify = InotifyBuffer(p('').encode(), recursive=True)
    assert inotify.is_alive()
    inotify.close()
    assert not inotify.is_alive()
コード例 #36
0
ファイル: test_emitter.py プロジェクト: cgc1983/watchdog
def test_delete_self(p):
    mkdir(p('dir1'))
    event_queue, emitter = _setup_emitter(p('dir1'))
    rm(p('dir1'), True)
    event_queue.get(timeout=5)[0]
    emitter.stop()