| From 80010e27d774e8b722d569384492eaab2bc4ac61 Mon Sep 17 00:00:00 2001 |
| From: Joe Slater <joe.slater@windriver.com> |
| Date: Thu, 27 Jul 2023 15:01:04 +0000 |
| Subject: [PATCH] working commit |
| |
| It is not safe to assume the values returned by add_watch(), |
| so we add a local helper get_wd() to retrieve them. This fixes |
| a problem in TestInotifyTree.test__cycle() where the |
| wd's for the 'aa' and 'bb' paths are not '2' and '3', |
| respectively. |
| |
| A second issue is that Inotify._get_event_names() should |
| return a set or sorted list to avoid comparison problems, |
| but that is not addressed here since it could be viewed as |
| changing the API. |
| |
| This test_inotify.py is based on the version in the fix_tests branch of |
| pyinotify as of commit d7d3c58... |
| |
| Upstream-Status: Submitted [github.com/dsoprea/PyInotify/pull/104] |
| |
| Signed-off-by: Joe Slater <joe.slater@windriver.com> |
| --- |
| tests/test_inotify.py | 346 ++++++++++++++++++++++++++++++++---------- |
| 1 file changed, 262 insertions(+), 84 deletions(-) |
| |
| diff --git a/tests/test_inotify.py b/tests/test_inotify.py |
| index d9f1f84..d89a49e 100644 |
| --- a/tests/test_inotify.py |
| +++ b/tests/test_inotify.py |
| @@ -2,6 +2,7 @@ |
| |
| import os |
| import unittest |
| +import time |
| |
| import inotify.constants |
| import inotify.calls |
| @@ -15,6 +16,11 @@ except NameError: |
| else: |
| _HAS_PYTHON2_UNICODE_SUPPORT = True |
| |
| +# Inotify does not have a get for watch descriptors |
| +# |
| +def get_wd(i, path): |
| + return i._Inotify__watches[path] |
| + |
| |
| class TestInotify(unittest.TestCase): |
| def __init__(self, *args, **kwargs): |
| @@ -29,11 +35,11 @@ class TestInotify(unittest.TestCase): |
| @unittest.skipIf(_HAS_PYTHON2_UNICODE_SUPPORT is True, "Not in Python 3") |
| def test__international_naming_python3(self): |
| with inotify.test_support.temp_path() as path: |
| - inner_path = os.path.join(path, '新增資料夾') |
| + inner_path = os.path.join(path, u'新增資料夾') |
| os.mkdir(inner_path) |
| |
| i = inotify.adapters.Inotify() |
| - i.add_watch(inner_path) |
| + wd = i.add_watch(inner_path) |
| |
| with open(os.path.join(inner_path, 'filename'), 'w'): |
| pass |
| @@ -41,12 +47,27 @@ class TestInotify(unittest.TestCase): |
| events = self.__read_all_events(i) |
| |
| expected = [ |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=256, cookie=0, len=16), ['IN_CREATE'], inner_path, 'filename'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=32, cookie=0, len=16), ['IN_OPEN'], inner_path, 'filename'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], inner_path, 'filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd, mask=256, cookie=0, len=16), ['IN_CREATE'], inner_path, 'filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd, mask=32, cookie=0, len=16), ['IN_OPEN'], inner_path, 'filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], inner_path, 'filename'), |
| ] |
| |
| - self.assertEquals(events, expected) |
| + if events != expected: |
| + print("ACTUAL:") |
| + print("") |
| + |
| + for i, event in enumerate(events): |
| + print(event) |
| + |
| + print("") |
| + |
| + print("EXPECTED:") |
| + print("") |
| + |
| + for i, event in enumerate(expected): |
| + print(event) |
| + |
| + raise Exception("Events not correct.") |
| |
| @unittest.skipIf(_HAS_PYTHON2_UNICODE_SUPPORT is False, "Not in Python 2") |
| def test__international_naming_python2(self): |
| @@ -55,7 +76,7 @@ class TestInotify(unittest.TestCase): |
| os.mkdir(inner_path) |
| |
| i = inotify.adapters.Inotify() |
| - i.add_watch(inner_path) |
| + wd = i.add_watch(inner_path) |
| |
| with open(os.path.join(inner_path, u'filename料夾'), 'w'): |
| pass |
| @@ -63,12 +84,28 @@ class TestInotify(unittest.TestCase): |
| events = self.__read_all_events(i) |
| |
| expected = [ |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=256, cookie=0, len=16), ['IN_CREATE'], inner_path, u'filename料夾'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=32, cookie=0, len=16), ['IN_OPEN'], inner_path, u'filename料夾'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], inner_path, u'filename料夾'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd, mask=256, cookie=0, len=16), ['IN_CREATE'], inner_path, u'filename料夾'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd, mask=32, cookie=0, len=16), ['IN_OPEN'], inner_path, u'filename料夾'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], inner_path, u'filename料夾'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd, mask=16, cookie=0, len=16), ['IN_CLOSE_NOWRITE'], inner_path, u'filename料夾'), |
| ] |
| |
| - self.assertEquals(events, expected) |
| + if events != expected: |
| + print("ACTUAL:") |
| + print("") |
| + |
| + for i, event in enumerate(events): |
| + print(event) |
| + |
| + print("") |
| + |
| + print("EXPECTED:") |
| + print("") |
| + |
| + for i, event in enumerate(expected): |
| + print(event) |
| + |
| + raise Exception("Events not correct.") |
| |
| def test__cycle(self): |
| with inotify.test_support.temp_path() as path: |
| @@ -79,7 +116,7 @@ class TestInotify(unittest.TestCase): |
| os.mkdir(path2) |
| |
| i = inotify.adapters.Inotify() |
| - i.add_watch(path1) |
| + wd = i.add_watch(path1) |
| |
| with open('ignored_new_file', 'w'): |
| pass |
| @@ -96,32 +133,47 @@ class TestInotify(unittest.TestCase): |
| |
| expected = [ |
| ( |
| - inotify.adapters._INOTIFY_EVENT(wd=1, mask=256, cookie=0, len=16), |
| + inotify.adapters._INOTIFY_EVENT(wd=wd, mask=256, cookie=0, len=16), |
| ['IN_CREATE'], |
| path1, |
| 'seen_new_file' |
| ), |
| ( |
| - inotify.adapters._INOTIFY_EVENT(wd=1, mask=32, cookie=0, len=16), |
| + inotify.adapters._INOTIFY_EVENT(wd=wd, mask=32, cookie=0, len=16), |
| ['IN_OPEN'], |
| path1, |
| 'seen_new_file' |
| ), |
| ( |
| - inotify.adapters._INOTIFY_EVENT(wd=1, mask=8, cookie=0, len=16), |
| + inotify.adapters._INOTIFY_EVENT(wd=wd, mask=8, cookie=0, len=16), |
| ['IN_CLOSE_WRITE'], |
| path1, |
| 'seen_new_file' |
| ), |
| ( |
| - inotify.adapters._INOTIFY_EVENT(wd=1, mask=512, cookie=0, len=16), |
| + inotify.adapters._INOTIFY_EVENT(wd=wd, mask=512, cookie=0, len=16), |
| ['IN_DELETE'], |
| path1, |
| 'seen_new_file' |
| ) |
| ] |
| |
| - self.assertEquals(events, expected) |
| + if events != expected: |
| + print("ACTUAL:") |
| + print("") |
| + |
| + for i, event in enumerate(events): |
| + print(event) |
| + |
| + print("") |
| + |
| + print("EXPECTED:") |
| + print("") |
| + |
| + for i, event in enumerate(expected): |
| + print(event) |
| + |
| + raise Exception("Events not correct.") |
| |
| # This can't be removed until *after* we've read the events because |
| # they'll be flushed the moment we remove the watch. |
| @@ -131,7 +183,7 @@ class TestInotify(unittest.TestCase): |
| pass |
| |
| events = self.__read_all_events(i) |
| - self.assertEquals(events, []) |
| + self.assertEqual(events, []) |
| |
| @staticmethod |
| def _open_write_close(*args): |
| @@ -167,23 +219,47 @@ class TestInotify(unittest.TestCase): |
| with inotify.test_support.temp_path() as path: |
| path1 = TestInotify._make_temp_path(path, 'aa') |
| path2 = TestInotify._make_temp_path(path, 'bb') |
| + |
| i = inotify.adapters.Inotify([path1, path2]) |
| + |
| TestInotify._open_write_close('ignored_new_file') |
| TestInotify._open_write_close(path1, 'seen_new_file') |
| TestInotify._open_write_close(path2, 'seen_new_file2') |
| + |
| + wd_path1 = get_wd(i, path1) |
| + wd_path2 = get_wd(i, path2) |
| + |
| + |
| os.remove(os.path.join(path1, 'seen_new_file')) |
| + |
| events = self.__read_all_events(i) |
| + |
| expected = [ |
| - TestInotify._event_create(wd=1, path=path1, filename='seen_new_file'), |
| - TestInotify._event_open(wd=1, path=path1, filename='seen_new_file'), |
| - TestInotify._event_close_write(wd=1, path=path1, filename='seen_new_file'), |
| - TestInotify._event_create(wd=2, path=path2, filename='seen_new_file2'), |
| - TestInotify._event_open(wd=2, path=path2, filename='seen_new_file2'), |
| - TestInotify._event_close_write(wd=2, path=path2, filename='seen_new_file2'), |
| - TestInotify._event_general(wd=1, mask=512, type_name='IN_DELETE', |
| - path=path1, filename='seen_new_file') |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=256, cookie=0, len=16), ['IN_CREATE'], path1, u'seen_new_file'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=32, cookie=0, len=16), ['IN_OPEN'], path1, u'seen_new_file'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path1, u'seen_new_file'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=256, cookie=0, len=16), ['IN_CREATE'], path2, u'seen_new_file2'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=32, cookie=0, len=16), ['IN_OPEN'], path2, u'seen_new_file2'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path2, u'seen_new_file2'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=512, cookie=0, len=16), ['IN_DELETE'], path1, u'seen_new_file'), |
| ] |
| - self.assertEquals(events, expected) |
| + |
| + if events != expected: |
| + print("ACTUAL:") |
| + print("") |
| + |
| + for i, event in enumerate(events): |
| + print(event) |
| + |
| + print("") |
| + |
| + print("EXPECTED:") |
| + print("") |
| + |
| + for i, event in enumerate(expected): |
| + print(event) |
| + |
| + raise Exception("Events not correct.") |
| |
| def test__error_on_watch_nonexistent_folder(self): |
| i = inotify.adapters.Inotify() |
| @@ -201,7 +277,7 @@ class TestInotify(unittest.TestCase): |
| i = inotify.adapters.Inotify() |
| names = i._get_event_names(all_mask) |
| |
| - self.assertEquals(names, all_names) |
| + self.assertEqual(names, all_names) |
| |
| |
| class TestInotifyTree(unittest.TestCase): |
| @@ -219,56 +295,101 @@ class TestInotifyTree(unittest.TestCase): |
| path1 = os.path.join(path, 'aa') |
| os.mkdir(path1) |
| |
| + time.sleep(.10) |
| + |
| path2 = os.path.join(path, 'bb') |
| os.mkdir(path2) |
| |
| + time.sleep(.10) |
| + |
| i = inotify.adapters.InotifyTree(path) |
| |
| with open('seen_new_file1', 'w'): |
| pass |
| |
| + time.sleep(.10) |
| + |
| with open(os.path.join(path1, 'seen_new_file2'), 'w'): |
| pass |
| |
| + time.sleep(.10) |
| + |
| with open(os.path.join(path2, 'seen_new_file3'), 'w'): |
| pass |
| |
| + time.sleep(.10) |
| + |
| + wd_path = get_wd(i.inotify, path) |
| + wd_path1 = get_wd(i.inotify, path1) |
| + wd_path2 = get_wd(i.inotify, path2) |
| + |
| os.remove(os.path.join(path, 'seen_new_file1')) |
| + |
| + time.sleep(.10) |
| + |
| os.remove(os.path.join(path1, 'seen_new_file2')) |
| + |
| + time.sleep(.10) |
| + |
| os.remove(os.path.join(path2, 'seen_new_file3')) |
| |
| + time.sleep(.10) |
| + |
| os.rmdir(path1) |
| + |
| + time.sleep(.10) |
| + |
| os.rmdir(path2) |
| |
| - events = self.__read_all_events(i) |
| + time.sleep(.10) |
| |
| + events = self.__read_all_events(i) |
| + events = sorted(events) |
| + |
| expected = [ |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=256, cookie=0, len=16), ['IN_CREATE'], path, 'seen_new_file1'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=32, cookie=0, len=16), ['IN_OPEN'], path, 'seen_new_file1'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path, 'seen_new_file1'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path, mask=256, cookie=0, len=16), ['IN_CREATE'], path, 'seen_new_file1'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path, mask=32, cookie=0, len=16), ['IN_OPEN'], path, 'seen_new_file1'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path, 'seen_new_file1'), |
| |
| - (inotify.adapters._INOTIFY_EVENT(wd=2, mask=256, cookie=0, len=16), ['IN_CREATE'], path1, 'seen_new_file2'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=2, mask=32, cookie=0, len=16), ['IN_OPEN'], path1, 'seen_new_file2'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=2, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path1, 'seen_new_file2'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=256, cookie=0, len=16), ['IN_CREATE'], path1, 'seen_new_file2'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=32, cookie=0, len=16), ['IN_OPEN'], path1, 'seen_new_file2'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path1, 'seen_new_file2'), |
| |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=256, cookie=0, len=16), ['IN_CREATE'], path2, 'seen_new_file3'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=32, cookie=0, len=16), ['IN_OPEN'], path2, 'seen_new_file3'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path2, 'seen_new_file3'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=256, cookie=0, len=16), ['IN_CREATE'], path2, 'seen_new_file3'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=32, cookie=0, len=16), ['IN_OPEN'], path2, 'seen_new_file3'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path2, 'seen_new_file3'), |
| |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=512, cookie=0, len=16), ['IN_DELETE'], path, 'seen_new_file1'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=2, mask=512, cookie=0, len=16), ['IN_DELETE'], path1, 'seen_new_file2'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=512, cookie=0, len=16), ['IN_DELETE'], path2, 'seen_new_file3'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path, mask=512, cookie=0, len=16), ['IN_DELETE'], path, 'seen_new_file1'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=512, cookie=0, len=16), ['IN_DELETE'], path1, 'seen_new_file2'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=512, cookie=0, len=16), ['IN_DELETE'], path2, 'seen_new_file3'), |
| |
| - (inotify.adapters._INOTIFY_EVENT(wd=2, mask=1024, cookie=0, len=0), ['IN_DELETE_SELF'], path1, ''), |
| - (inotify.adapters._INOTIFY_EVENT(wd=2, mask=32768, cookie=0, len=0), ['IN_IGNORED'], path1, ''), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=1073742336, cookie=0, len=16), ['IN_ISDIR', 'IN_DELETE'], path, 'aa'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=1024, cookie=0, len=0), ['IN_DELETE_SELF'], path1, ''), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=32768, cookie=0, len=0), ['IN_IGNORED'], path1, ''), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path, mask=1073742336, cookie=0, len=16), ['IN_DELETE', 'IN_ISDIR'], path, 'aa'), |
| |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=1024, cookie=0, len=0), ['IN_DELETE_SELF'], path2, ''), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=32768, cookie=0, len=0), ['IN_IGNORED'], path2, ''), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=1073742336, cookie=0, len=16), ['IN_ISDIR', 'IN_DELETE'], path, 'bb'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=1024, cookie=0, len=0), ['IN_DELETE_SELF'], path2, ''), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=32768, cookie=0, len=0), ['IN_IGNORED'], path2, ''), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path, mask=1073742336, cookie=0, len=16), ['IN_DELETE', 'IN_ISDIR'], path, 'bb'), |
| ] |
| |
| - self.assertEquals(events, expected) |
| + expected = sorted(expected) |
| + |
| + if events != expected: |
| + print("ACTUAL:") |
| + print("") |
| + |
| + for i, event in enumerate(events): |
| + print(event) |
| + |
| + print("") |
| + |
| + print("EXPECTED:") |
| + print("") |
| + |
| + for i, event in enumerate(expected): |
| + print(event) |
| + |
| + raise Exception("Events not correct.") |
| |
| def test__renames(self): |
| |
| @@ -283,26 +404,30 @@ class TestInotifyTree(unittest.TestCase): |
| new_path = os.path.join(path, 'new_folder') |
| |
| os.mkdir(old_path) |
| + |
| + wd_path = get_wd(i.inotify, path) |
| |
| events1 = self.__read_all_events(i) |
| |
| expected = [ |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=1073742080, cookie=events1[0][0].cookie, len=16), ['IN_ISDIR', 'IN_CREATE'], path, 'old_folder'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path, mask=1073742080, cookie=events1[0][0].cookie, len=16), ['IN_CREATE', 'IN_ISDIR'], path, 'old_folder'), |
| ] |
| |
| - self.assertEquals(events1, expected) |
| - |
| + self.assertEqual(events1, expected) |
| |
| os.rename(old_path, new_path) |
| |
| + wd_old_path = get_wd(i.inotify, old_path) |
| + |
| events2 = self.__read_all_events(i) |
| |
| expected = [ |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=1073741888, cookie=events2[0][0].cookie, len=16), ['IN_MOVED_FROM', 'IN_ISDIR'], path, 'old_folder'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=1073741952, cookie=events2[1][0].cookie, len=16), ['IN_MOVED_TO', 'IN_ISDIR'], path, 'new_folder'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path, mask=1073741888, cookie=events2[0][0].cookie, len=16), ['IN_MOVED_FROM', 'IN_ISDIR'], path, 'old_folder'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path, mask=1073741952, cookie=events2[1][0].cookie, len=16), ['IN_MOVED_TO', 'IN_ISDIR'], path, 'new_folder'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_old_path, mask=2048, cookie=0, len=0), ['IN_MOVE_SELF'], new_path, '') |
| ] |
| |
| - self.assertEquals(events2, expected) |
| + self.assertEqual(events2, expected) |
| |
| |
| with open(os.path.join(new_path, 'old_filename'), 'w'): |
| @@ -318,21 +443,33 @@ class TestInotifyTree(unittest.TestCase): |
| events3 = self.__read_all_events(i) |
| |
| expected = [ |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=256, cookie=0, len=16), ['IN_CREATE'], new_path, 'old_filename'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=32, cookie=0, len=16), ['IN_OPEN'], new_path, 'old_filename'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], new_path, 'old_filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_old_path, mask=256, cookie=0, len=16), ['IN_CREATE'], new_path, 'old_filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_old_path, mask=32, cookie=0, len=16), ['IN_OPEN'], new_path, 'old_filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_old_path, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], new_path, 'old_filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_old_path, mask=64, cookie=events3[3][0].cookie, len=16), ['IN_MOVED_FROM'], new_path, 'old_filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_old_path, mask=128, cookie=events3[4][0].cookie, len=16), ['IN_MOVED_TO'], new_path, 'new_filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_old_path, mask=512, cookie=0, len=16), ['IN_DELETE'], new_path, 'new_filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_old_path, mask=1024, cookie=0, len=0), ['IN_DELETE_SELF'], new_path, ''), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_old_path, mask=32768, cookie=0, len=0), ['IN_IGNORED'], new_path, ''), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path, mask=1073742336, cookie=0, len=16), ['IN_DELETE', 'IN_ISDIR'], path, 'new_folder'), |
| + ] |
| |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=64, cookie=events3[3][0].cookie, len=16), ['IN_MOVED_FROM'], new_path, 'old_filename'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=128, cookie=events3[4][0].cookie, len=16), ['IN_MOVED_TO'], new_path, 'new_filename'), |
| + if events3 != expected: |
| + print("ACTUAL:") |
| + print("") |
| |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=512, cookie=0, len=16), ['IN_DELETE'], new_path, 'new_filename'), |
| + for i, event in enumerate(events3): |
| + print(event) |
| |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=1024, cookie=0, len=0), ['IN_DELETE_SELF'], new_path, ''), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=32768, cookie=0, len=0), ['IN_IGNORED'], new_path, ''), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=1073742336, cookie=0, len=16), ['IN_ISDIR', 'IN_DELETE'], path, 'new_folder'), |
| - ] |
| + print("") |
| + |
| + print("EXPECTED:") |
| + print("") |
| |
| - self.assertEquals(events3, expected) |
| + for i, event in enumerate(expected): |
| + print(event) |
| + |
| + raise Exception("Events not correct.") |
| |
| def test__automatic_new_watches_on_new_paths(self): |
| |
| @@ -346,39 +483,60 @@ class TestInotifyTree(unittest.TestCase): |
| path2 = os.path.join(path1, 'folder2') |
| |
| os.mkdir(path1) |
| + |
| + wd_path = get_wd(i.inotify, path) |
| |
| events = self.__read_all_events(i) |
| |
| expected = [ |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=1073742080, cookie=0, len=16), ['IN_ISDIR', 'IN_CREATE'], path, 'folder1'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path, mask=1073742080, cookie=0, len=16), ['IN_CREATE', 'IN_ISDIR'], path, 'folder1'), |
| ] |
| |
| - self.assertEquals(events, expected) |
| + self.assertEqual(events, expected) |
| |
| |
| os.mkdir(path2) |
| |
| + wd_path1 = get_wd(i.inotify, path1) |
| + |
| events = self.__read_all_events(i) |
| |
| expected = [ |
| - (inotify.adapters._INOTIFY_EVENT(wd=2, mask=1073742080, cookie=0, len=16), ['IN_ISDIR', 'IN_CREATE'], path1, 'folder2'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=1073742080, cookie=0, len=16), ['IN_CREATE', 'IN_ISDIR'], path1, 'folder2'), |
| ] |
| |
| - self.assertEquals(events, expected) |
| + self.assertEqual(events, expected) |
| |
| |
| with open(os.path.join(path2,'filename'), 'w'): |
| pass |
| |
| + wd_path2 = get_wd(i.inotify, path2) |
| + |
| events = self.__read_all_events(i) |
| |
| expected = [ |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=256, cookie=0, len=16), ['IN_CREATE'], path2, 'filename'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=32, cookie=0, len=16), ['IN_OPEN'], path2, 'filename'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path2, 'filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=256, cookie=0, len=16), ['IN_CREATE'], path2, 'filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=32, cookie=0, len=16), ['IN_OPEN'], path2, 'filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path2, 'filename'), |
| ] |
| |
| - self.assertEquals(events, expected) |
| + if events != expected: |
| + print("ACTUAL:") |
| + print("") |
| + |
| + for i, event in enumerate(events): |
| + print(event) |
| + |
| + print("") |
| + |
| + print("EXPECTED:") |
| + print("") |
| + |
| + for i, event in enumerate(expected): |
| + print(event) |
| + |
| + raise Exception("Events not correct.") |
| |
| def test__automatic_new_watches_on_existing_paths(self): |
| |
| @@ -396,16 +554,33 @@ class TestInotifyTree(unittest.TestCase): |
| |
| with open(os.path.join(path2,'filename'), 'w'): |
| pass |
| + |
| + wd = get_wd(i.inotify, path2) |
| |
| events = self.__read_all_events(i) |
| |
| expected = [ |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=256, cookie=0, len=16), ['IN_CREATE'], path2, 'filename'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=32, cookie=0, len=16), ['IN_OPEN'], path2, 'filename'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=3, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path2, 'filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd, mask=256, cookie=0, len=16), ['IN_CREATE'], path2, 'filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd, mask=32, cookie=0, len=16), ['IN_OPEN'], path2, 'filename'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path2, 'filename'), |
| ] |
| |
| - self.assertEquals(events, expected) |
| + if events != expected: |
| + print("ACTUAL:") |
| + print("") |
| + |
| + for i, event in enumerate(events): |
| + print(event) |
| + |
| + print("") |
| + |
| + print("EXPECTED:") |
| + print("") |
| + |
| + for i, event in enumerate(expected): |
| + print(event) |
| + |
| + raise Exception("Events not correct.") |
| |
| |
| class TestInotifyTrees(unittest.TestCase): |
| @@ -428,6 +603,9 @@ class TestInotifyTrees(unittest.TestCase): |
| |
| i = inotify.adapters.InotifyTrees([path1, path2]) |
| |
| + wd_path1 = get_wd(i.inotify, path1) |
| + wd_path2 = get_wd(i.inotify, path2) |
| + |
| with open(os.path.join(path1, 'seen_new_file1'), 'w'): |
| pass |
| |
| @@ -437,13 +615,13 @@ class TestInotifyTrees(unittest.TestCase): |
| events = self.__read_all_events(i) |
| |
| expected = [ |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=256, cookie=0, len=16), ['IN_CREATE'], path1, 'seen_new_file1'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=32, cookie=0, len=16), ['IN_OPEN'], path1, 'seen_new_file1'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=1, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path1, 'seen_new_file1'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=256, cookie=0, len=16), ['IN_CREATE'], path1, 'seen_new_file1'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=32, cookie=0, len=16), ['IN_OPEN'], path1, 'seen_new_file1'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path1, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path1, 'seen_new_file1'), |
| |
| - (inotify.adapters._INOTIFY_EVENT(wd=2, mask=256, cookie=0, len=16), ['IN_CREATE'], path2, 'seen_new_file2'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=2, mask=32, cookie=0, len=16), ['IN_OPEN'], path2, 'seen_new_file2'), |
| - (inotify.adapters._INOTIFY_EVENT(wd=2, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path2, 'seen_new_file2'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=256, cookie=0, len=16), ['IN_CREATE'], path2, 'seen_new_file2'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=32, cookie=0, len=16), ['IN_OPEN'], path2, 'seen_new_file2'), |
| + (inotify.adapters._INOTIFY_EVENT(wd=wd_path2, mask=8, cookie=0, len=16), ['IN_CLOSE_WRITE'], path2, 'seen_new_file2'), |
| ] |
| |
| - self.assertEquals(events, expected) |
| + self.assertEqual(events, expected) |
| -- |
| 2.35.5 |
| |