Loading pkgs/development/python-modules/watchdog/default.nix +7 −3 Original line number Diff line number Diff line Loading @@ -14,16 +14,18 @@ buildPythonPackage rec { pname = "watchdog"; version = "2.3.1"; version = "3.0.0"; format = "setuptools"; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; hash = "sha256-2fntJu0iqdMxggqEMsNoBwfqi1QSHdzJ3H2fLO6zaQY="; hash = "sha256-TZijIFldp6fFoY/EjLYzwuc82nj5PKwu9C1Cv2CaM/k="; }; # force kqueue on x86_64-darwin, because our api version does # not support fsevents patches = lib.optionals (stdenv.isDarwin && !stdenv.isAarch64) [ ./force-kqueue.patch ]; Loading Loading @@ -60,6 +62,7 @@ buildPythonPackage rec { ] ++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [ # FileCreationEvent != FileDeletionEvent "--deselect=tests/test_emitter.py::test_separate_consecutive_moves" "--deselect=tests/test_observers_polling.py::test___init__" # segfaults "--deselect=tests/test_delayed_queue.py::test_delayed_get" "--deselect=tests/test_emitter.py::test_delete" Loading @@ -86,9 +89,10 @@ buildPythonPackage rec { disabledTestPaths = [ # tests timeout easily "tests/test_inotify_buffer.py" ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ ] ++ lib.optionals (stdenv.isDarwin) [ # segfaults the testsuite "tests/test_emitter.py" # unsupported on x86_64-darwin "tests/test_fsevents.py" ]; Loading pkgs/development/python-modules/watchdog/force-kqueue.patch +17 −150 Original line number Diff line number Diff line diff --git a/setup.py b/setup.py index 072dfc8..64732bb 100644 index 337e4be..55ef9a6 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,7 @@ _apple_devices = ('appletv', 'iphone', 'ipod', 'ipad', 'watch') is_macos = sys.platform == 'darwin' and not machine().lower().startswith(_apple_devices) @@ -38,7 +38,7 @@ _apple_devices = ("appletv", "iphone", "ipod", "ipad", "watch") is_macos = sys.platform == "darwin" and not machine().lower().startswith(_apple_devices) ext_modules = [] -if is_macos or os.getenv('FORCE_MACOS_MACHINE', '0') == '1': -if is_macos or os.getenv("FORCE_MACOS_MACHINE", "0") == "1": +if False: ext_modules = [ Extension( name='_watchdog_fsevents', diff --git a/tests/test_emitter.py b/tests/test_emitter.py index bec052c..242fbea 100644 --- a/tests/test_emitter.py +++ b/tests/test_emitter.py @@ -42,13 +42,11 @@ if platform.is_linux(): InotifyEmitter as Emitter, InotifyFullEmitter, ) -elif platform.is_darwin(): name="_watchdog_fsevents", diff --git a/tests/utils.py b/tests/utils.py index 00dcf40..9fbc42a 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -15,8 +15,6 @@ Emitter: Type[EventEmitter] if sys.platform.startswith("linux"): from watchdog.observers.inotify import InotifyEmitter as Emitter from watchdog.observers.inotify import InotifyFullEmitter -elif sys.platform.startswith("darwin"): - from watchdog.observers.fsevents import FSEventsEmitter as Emitter elif platform.is_windows(): from watchdog.observers.read_directory_changes import ( WindowsApiEmitter as Emitter ) -elif platform.is_bsd(): +elif platform.is_bsd() or platform.is_darwin(): from watchdog.observers.kqueue import ( KqueueEmitter as Emitter ) @@ -57,12 +55,6 @@ logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) -if platform.is_darwin(): - # enable more verbose logs - fsevents_logger = logging.getLogger("fsevents") - fsevents_logger.setLevel(logging.DEBUG) - - @pytest.fixture(autouse=True) def setup_teardown(tmpdir): global p, emitter, event_queue @@ -85,9 +77,6 @@ def start_watching(path=None, use_full_emitter=False, recursive=True): else: emitter = Emitter(event_queue, ObservedWatch(path, recursive=recursive)) - if platform.is_darwin(): - emitter.suppress_history = True - emitter.start() @@ -345,7 +334,7 @@ def test_separate_consecutive_moves(): if platform.is_windows(): expected_events = [a_deleted, d_created] - if platform.is_bsd(): + if platform.is_bsd() or platform.is_darwin(): # Due to the way kqueue works, we can't really order # 'Created' and 'Deleted' events in time, so creation queues first expected_events = [d_created, a_deleted, dir_modif, dir_modif] @@ -355,7 +344,7 @@ def test_separate_consecutive_moves(): @pytest.mark.flaky(max_runs=5, min_passes=1, rerun_filter=rerun_filter) -@pytest.mark.skipif(platform.is_bsd(), reason="BSD create another set of events for this test") +@pytest.mark.skipif(platform.is_bsd() or platform.is_darwin(), reason="BSD create another set of events for this test") def test_delete_self(): mkdir(p('dir1')) start_watching(p('dir1')) @@ -365,7 +354,7 @@ def test_delete_self(): assert not emitter.is_alive() -@pytest.mark.skipif(platform.is_windows() or platform.is_bsd(), +@pytest.mark.skipif(platform.is_windows() or platform.is_bsd() or platform.is_darwin(), reason="Windows|BSD create another set of events for this test") def test_fast_subdirectory_creation_deletion(): root_dir = p('dir1') @@ -429,7 +418,7 @@ def test_recursive_on(): assert event.src_path == p('dir1', 'dir2', 'dir3') assert isinstance(event, DirModifiedEvent) - if not platform.is_bsd(): + if not (platform.is_bsd() or platform.is_darwin()): event = event_queue.get(timeout=5)[0] assert event.src_path == p('dir1', 'dir2', 'dir3', 'a') assert isinstance(event, FileModifiedEvent) @@ -452,26 +441,6 @@ def test_recursive_off(): if platform.is_linux(): expect_event(FileClosedEvent(p('b'))) - # currently limiting these additional events to macOS only, see https://github.com/gorakhargosh/watchdog/pull/779 - if platform.is_darwin(): - mkdir(p('dir1', 'dir2')) - with pytest.raises(Empty): - event_queue.get(timeout=5) - mkfile(p('dir1', 'dir2', 'somefile')) - with pytest.raises(Empty): - event_queue.get(timeout=5) - - mkdir(p('dir3')) - expect_event(DirModifiedEvent(p())) # the contents of the parent directory changed - - mv(p('dir1', 'dir2', 'somefile'), p('somefile')) - expect_event(FileMovedEvent(p('dir1', 'dir2', 'somefile'), p('somefile'))) - expect_event(DirModifiedEvent(p())) - - mv(p('dir1', 'dir2'), p('dir2')) - expect_event(DirMovedEvent(p('dir1', 'dir2'), p('dir2'))) - expect_event(DirModifiedEvent(p())) - @pytest.mark.skipif(platform.is_windows(), reason="Windows create another set of events for this test") @@ -493,7 +462,7 @@ def test_renaming_top_level_directory(): expect_event(DirMovedEvent(p('a', 'b'), p('a2', 'b'))) - if platform.is_bsd(): + if platform.is_bsd() or platform.is_darwin(): expect_event(DirModifiedEvent(p())) open(p('a2', 'b', 'c'), 'a').close() @@ -584,7 +553,7 @@ def test_move_nested_subdirectories(): expect_event(DirMovedEvent(p('dir1', 'dir2', 'dir3'), p('dir2', 'dir3'))) expect_event(FileMovedEvent(p('dir1', 'dir2', 'dir3', 'a'), p('dir2', 'dir3', 'a'))) - if platform.is_bsd(): + if platform.is_bsd() or platform.is_darwin(): event = event_queue.get(timeout=5)[0] assert p(event.src_path) == p() assert isinstance(event, DirModifiedEvent) @@ -643,7 +612,7 @@ def test_move_nested_subdirectories_on_windows(): @pytest.mark.flaky(max_runs=5, min_passes=1, rerun_filter=rerun_filter) -@pytest.mark.skipif(platform.is_bsd(), reason="BSD create another set of events for this test") +@pytest.mark.skipif(platform.is_bsd() or platform.is_darwin(), reason="BSD create another set of events for this test") def test_file_lifecyle(): start_watching() diff --git a/tests/test_fsevents.py b/tests/test_fsevents.py index 4a4fabf..49886a1 100644 --- a/tests/test_fsevents.py +++ b/tests/test_fsevents.py @@ -3,8 +3,7 @@ import pytest from watchdog.utils import platform -if not platform.is_darwin(): # noqa - pytest.skip("macOS only.", allow_module_level=True) +pytest.skip("doesn't work with Nix yet", allow_module_level=True) import logging import os elif sys.platform.startswith("win"): from watchdog.observers.read_directory_changes import WindowsApiEmitter as Emitter elif sys.platform.startswith(("dragonfly", "freebsd", "netbsd", "openbsd", "bsd")): Loading
pkgs/development/python-modules/watchdog/default.nix +7 −3 Original line number Diff line number Diff line Loading @@ -14,16 +14,18 @@ buildPythonPackage rec { pname = "watchdog"; version = "2.3.1"; version = "3.0.0"; format = "setuptools"; disabled = pythonOlder "3.7"; src = fetchPypi { inherit pname version; hash = "sha256-2fntJu0iqdMxggqEMsNoBwfqi1QSHdzJ3H2fLO6zaQY="; hash = "sha256-TZijIFldp6fFoY/EjLYzwuc82nj5PKwu9C1Cv2CaM/k="; }; # force kqueue on x86_64-darwin, because our api version does # not support fsevents patches = lib.optionals (stdenv.isDarwin && !stdenv.isAarch64) [ ./force-kqueue.patch ]; Loading Loading @@ -60,6 +62,7 @@ buildPythonPackage rec { ] ++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [ # FileCreationEvent != FileDeletionEvent "--deselect=tests/test_emitter.py::test_separate_consecutive_moves" "--deselect=tests/test_observers_polling.py::test___init__" # segfaults "--deselect=tests/test_delayed_queue.py::test_delayed_get" "--deselect=tests/test_emitter.py::test_delete" Loading @@ -86,9 +89,10 @@ buildPythonPackage rec { disabledTestPaths = [ # tests timeout easily "tests/test_inotify_buffer.py" ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ ] ++ lib.optionals (stdenv.isDarwin) [ # segfaults the testsuite "tests/test_emitter.py" # unsupported on x86_64-darwin "tests/test_fsevents.py" ]; Loading
pkgs/development/python-modules/watchdog/force-kqueue.patch +17 −150 Original line number Diff line number Diff line diff --git a/setup.py b/setup.py index 072dfc8..64732bb 100644 index 337e4be..55ef9a6 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,7 @@ _apple_devices = ('appletv', 'iphone', 'ipod', 'ipad', 'watch') is_macos = sys.platform == 'darwin' and not machine().lower().startswith(_apple_devices) @@ -38,7 +38,7 @@ _apple_devices = ("appletv", "iphone", "ipod", "ipad", "watch") is_macos = sys.platform == "darwin" and not machine().lower().startswith(_apple_devices) ext_modules = [] -if is_macos or os.getenv('FORCE_MACOS_MACHINE', '0') == '1': -if is_macos or os.getenv("FORCE_MACOS_MACHINE", "0") == "1": +if False: ext_modules = [ Extension( name='_watchdog_fsevents', diff --git a/tests/test_emitter.py b/tests/test_emitter.py index bec052c..242fbea 100644 --- a/tests/test_emitter.py +++ b/tests/test_emitter.py @@ -42,13 +42,11 @@ if platform.is_linux(): InotifyEmitter as Emitter, InotifyFullEmitter, ) -elif platform.is_darwin(): name="_watchdog_fsevents", diff --git a/tests/utils.py b/tests/utils.py index 00dcf40..9fbc42a 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -15,8 +15,6 @@ Emitter: Type[EventEmitter] if sys.platform.startswith("linux"): from watchdog.observers.inotify import InotifyEmitter as Emitter from watchdog.observers.inotify import InotifyFullEmitter -elif sys.platform.startswith("darwin"): - from watchdog.observers.fsevents import FSEventsEmitter as Emitter elif platform.is_windows(): from watchdog.observers.read_directory_changes import ( WindowsApiEmitter as Emitter ) -elif platform.is_bsd(): +elif platform.is_bsd() or platform.is_darwin(): from watchdog.observers.kqueue import ( KqueueEmitter as Emitter ) @@ -57,12 +55,6 @@ logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) -if platform.is_darwin(): - # enable more verbose logs - fsevents_logger = logging.getLogger("fsevents") - fsevents_logger.setLevel(logging.DEBUG) - - @pytest.fixture(autouse=True) def setup_teardown(tmpdir): global p, emitter, event_queue @@ -85,9 +77,6 @@ def start_watching(path=None, use_full_emitter=False, recursive=True): else: emitter = Emitter(event_queue, ObservedWatch(path, recursive=recursive)) - if platform.is_darwin(): - emitter.suppress_history = True - emitter.start() @@ -345,7 +334,7 @@ def test_separate_consecutive_moves(): if platform.is_windows(): expected_events = [a_deleted, d_created] - if platform.is_bsd(): + if platform.is_bsd() or platform.is_darwin(): # Due to the way kqueue works, we can't really order # 'Created' and 'Deleted' events in time, so creation queues first expected_events = [d_created, a_deleted, dir_modif, dir_modif] @@ -355,7 +344,7 @@ def test_separate_consecutive_moves(): @pytest.mark.flaky(max_runs=5, min_passes=1, rerun_filter=rerun_filter) -@pytest.mark.skipif(platform.is_bsd(), reason="BSD create another set of events for this test") +@pytest.mark.skipif(platform.is_bsd() or platform.is_darwin(), reason="BSD create another set of events for this test") def test_delete_self(): mkdir(p('dir1')) start_watching(p('dir1')) @@ -365,7 +354,7 @@ def test_delete_self(): assert not emitter.is_alive() -@pytest.mark.skipif(platform.is_windows() or platform.is_bsd(), +@pytest.mark.skipif(platform.is_windows() or platform.is_bsd() or platform.is_darwin(), reason="Windows|BSD create another set of events for this test") def test_fast_subdirectory_creation_deletion(): root_dir = p('dir1') @@ -429,7 +418,7 @@ def test_recursive_on(): assert event.src_path == p('dir1', 'dir2', 'dir3') assert isinstance(event, DirModifiedEvent) - if not platform.is_bsd(): + if not (platform.is_bsd() or platform.is_darwin()): event = event_queue.get(timeout=5)[0] assert event.src_path == p('dir1', 'dir2', 'dir3', 'a') assert isinstance(event, FileModifiedEvent) @@ -452,26 +441,6 @@ def test_recursive_off(): if platform.is_linux(): expect_event(FileClosedEvent(p('b'))) - # currently limiting these additional events to macOS only, see https://github.com/gorakhargosh/watchdog/pull/779 - if platform.is_darwin(): - mkdir(p('dir1', 'dir2')) - with pytest.raises(Empty): - event_queue.get(timeout=5) - mkfile(p('dir1', 'dir2', 'somefile')) - with pytest.raises(Empty): - event_queue.get(timeout=5) - - mkdir(p('dir3')) - expect_event(DirModifiedEvent(p())) # the contents of the parent directory changed - - mv(p('dir1', 'dir2', 'somefile'), p('somefile')) - expect_event(FileMovedEvent(p('dir1', 'dir2', 'somefile'), p('somefile'))) - expect_event(DirModifiedEvent(p())) - - mv(p('dir1', 'dir2'), p('dir2')) - expect_event(DirMovedEvent(p('dir1', 'dir2'), p('dir2'))) - expect_event(DirModifiedEvent(p())) - @pytest.mark.skipif(platform.is_windows(), reason="Windows create another set of events for this test") @@ -493,7 +462,7 @@ def test_renaming_top_level_directory(): expect_event(DirMovedEvent(p('a', 'b'), p('a2', 'b'))) - if platform.is_bsd(): + if platform.is_bsd() or platform.is_darwin(): expect_event(DirModifiedEvent(p())) open(p('a2', 'b', 'c'), 'a').close() @@ -584,7 +553,7 @@ def test_move_nested_subdirectories(): expect_event(DirMovedEvent(p('dir1', 'dir2', 'dir3'), p('dir2', 'dir3'))) expect_event(FileMovedEvent(p('dir1', 'dir2', 'dir3', 'a'), p('dir2', 'dir3', 'a'))) - if platform.is_bsd(): + if platform.is_bsd() or platform.is_darwin(): event = event_queue.get(timeout=5)[0] assert p(event.src_path) == p() assert isinstance(event, DirModifiedEvent) @@ -643,7 +612,7 @@ def test_move_nested_subdirectories_on_windows(): @pytest.mark.flaky(max_runs=5, min_passes=1, rerun_filter=rerun_filter) -@pytest.mark.skipif(platform.is_bsd(), reason="BSD create another set of events for this test") +@pytest.mark.skipif(platform.is_bsd() or platform.is_darwin(), reason="BSD create another set of events for this test") def test_file_lifecyle(): start_watching() diff --git a/tests/test_fsevents.py b/tests/test_fsevents.py index 4a4fabf..49886a1 100644 --- a/tests/test_fsevents.py +++ b/tests/test_fsevents.py @@ -3,8 +3,7 @@ import pytest from watchdog.utils import platform -if not platform.is_darwin(): # noqa - pytest.skip("macOS only.", allow_module_level=True) +pytest.skip("doesn't work with Nix yet", allow_module_level=True) import logging import os elif sys.platform.startswith("win"): from watchdog.observers.read_directory_changes import WindowsApiEmitter as Emitter elif sys.platform.startswith(("dragonfly", "freebsd", "netbsd", "openbsd", "bsd")):