From 7890fd0aa5331541c71b893c313553765ca1628e Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Wed, 15 Aug 2012 09:00:09 -0400 Subject: fixed event on data directory itself to DirectoryBacked plugins --- src/lib/Bcfg2/Server/Plugin.py | 5 ++++- testsuite/Testlib/TestServer/TestPlugin.py | 13 +++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/lib/Bcfg2/Server/Plugin.py b/src/lib/Bcfg2/Server/Plugin.py index 7e7f7db18..58e5dafeb 100644 --- a/src/lib/Bcfg2/Server/Plugin.py +++ b/src/lib/Bcfg2/Server/Plugin.py @@ -547,7 +547,10 @@ class DirectoryBacked(object): return # Clean up path names - event.filename = os.path.normpath(event.filename.lstrip('/')) + event.filename = os.path.normpath(event.filename) + if event.filename.startswith(self.data): + # the first event we get is on the data directory itself + event.filename = event.filename[len(self.data) + 1:] # Calculate the absolute and relative paths this event refers to abspath = os.path.join(self.data, self.handles[event.requestID], diff --git a/testsuite/Testlib/TestServer/TestPlugin.py b/testsuite/Testlib/TestServer/TestPlugin.py index 3cfe0ca42..ab9754e00 100644 --- a/testsuite/Testlib/TestServer/TestPlugin.py +++ b/testsuite/Testlib/TestServer/TestPlugin.py @@ -489,7 +489,8 @@ class TestDirectoryBacked(Bcfg2TestCase): def get_obj(self, fam=None): if fam is None: fam = Mock() - return self.test_obj(datastore, fam) + return self.test_obj(os.path.join(datastore, self.test_obj.__name__), + fam) @patch("Bcfg2.Server.Plugin.%s.add_directory_monitor" % test_obj.__name__) def test__init(self, mock_add_monitor): @@ -587,8 +588,16 @@ class TestDirectoryBacked(Bcfg2TestCase): event.requestID = requestID return event - # test that events on paths that aren't handled fail properly + # test events on the data directory itself reset() + mock_isdir.return_value = True + event = get_event(db.data, "exists", 1) + db.HandleEvent(event) + mock_add_monitor.assert_called_with("") + + # test events on paths that aren't handled + reset() + mock_isdir.return_value = False event = get_event('/foo', 'created', max(self.testpaths.keys()) + 1) db.HandleEvent(event) self.assertFalse(mock_add_monitor.called) -- cgit v1.2.3-1-g7c22