summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/Bcfg2/Server/Plugin.py5
-rw-r--r--testsuite/Testlib/TestServer/TestPlugin.py13
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)