diff --git a/taskflow/persistence/backends/impl_memory.py b/taskflow/persistence/backends/impl_memory.py index 1b9ea531..4cb90f00 100644 --- a/taskflow/persistence/backends/impl_memory.py +++ b/taskflow/persistence/backends/impl_memory.py @@ -141,6 +141,10 @@ class FakeFilesystem(object): paths.append(child_path) return paths + def clear(self): + for node in list(self._root.reverse_iter()): + node.disassociate() + def _iter_pieces(self, path, include_root=False): if path == self._root.item: # Check for this directly as the following doesn't work with diff --git a/taskflow/tests/unit/persistence/test_memory_persistence.py b/taskflow/tests/unit/persistence/test_memory_persistence.py index 069e88de..2b3599e4 100644 --- a/taskflow/tests/unit/persistence/test_memory_persistence.py +++ b/taskflow/tests/unit/persistence/test_memory_persistence.py @@ -113,6 +113,17 @@ class MemoryFilesystemTest(test.TestCase): path += "/" + p self.assertIsNone(fs[path]) + def test_clear(self): + fs = impl_memory.FakeFilesystem() + paths = ['/b', '/c', '/a/b/c'] + for p in paths: + fs.ensure_path(p) + for p in paths: + self.assertIsNone(self._get_item_path(fs, p)) + fs.clear() + for p in paths: + self.assertRaises(exc.NotFound, self._get_item_path, fs, p) + def test_not_found(self): fs = impl_memory.FakeFilesystem() self.assertRaises(exc.NotFound, self._get_item_path, fs, '/c')