From 622aa212ccc968d96c977d30b106f7a622dbcb32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rud=C3=A1=20Moura?= Date: Tue, 23 Sep 2014 11:13:59 -0300 Subject: [PATCH] avocado.core.tree: Add method to detach a node. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add method to detach a node from the tree. Signed-off-by: Rudá Moura --- avocado/core/tree.py | 6 ++++++ selftests/all/unit/avocado/tree_unittest.py | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/avocado/core/tree.py b/avocado/core/tree.py index a7974c5e..1e3e914a 100644 --- a/avocado/core/tree.py +++ b/avocado/core/tree.py @@ -192,6 +192,12 @@ class TreeNode(object): else: return [char1 + '-' + node_name], 0 + def detach(self): + if self.parent: + self.parent.children.remove(self) + self.parent = None + return self + def ordered_load(stream, Loader=yaml.Loader, object_pairs_hook=collections.OrderedDict): diff --git a/selftests/all/unit/avocado/tree_unittest.py b/selftests/all/unit/avocado/tree_unittest.py index f6dbb43f..def606fb 100644 --- a/selftests/all/unit/avocado/tree_unittest.py +++ b/selftests/all/unit/avocado/tree_unittest.py @@ -127,6 +127,11 @@ class TestTreeNode(unittest.TestCase): self.assertDictEqual(self.treenode.children[1].children[1].children[0].environment, {'dev-tools': 'cygwin', 'metro': False}) self.assertDictEqual(self.treenode.children[1].children[1].children[1].environment, {'dev-tools': 'cygwin', 'metro': True}) + def test_detach(self): + n = self.treenode.children[1].detach() + self.assertEqual(n.name, 'os') + self.assertNotIn(n, self.treenode.children) + if __name__ == '__main__': unittest.main() -- GitLab