Re: [Avocado-devel] TreeNode constructor parent parameter

2016-11-09 Thread Lukáš Doktor

Dne 9.11.2016 v 04:36 Cleber Rosa napsal(a):

Lukáš,

While reviewing your PR (mux-separation3), I came across the fact that
the "parent" parameter of TreeNode doesn't do what *I* expected it to
do. That is, the following test code fails:

import unittest

from avocado.core import tree

class ParentTest(unittest.TestCase):

def test_parent_parameter(self):
parent = tree.TreeNode(name='parent')
child = tree.TreeNode(name='child', parent=parent)
grandchild = tree.TreeNode(name='grandchild', parent=child)
self.assertIn(child, parent.children)
self.assertIn(grandchild, child.children)


But it would work with this simple change:


diff --git a/avocado/core/tree.py b/avocado/core/tree.py
index 27d30f0..2fb3e11 100644
--- a/avocado/core/tree.py
+++ b/avocado/core/tree.py
@@ -69,6 +69,8 @@ class TreeNode(object):
 children = []
 self.name = name
 self.value = value
+if parent is not None:
+parent.add_child(self)
 self.parent = parent
 self.children = []
 self.ctrl = []


This is similar to what is already done with "children", and I have the
feeling that both should behave similarly.

Does it make sense?



It's been a while since I touched this code. I remember it had a purpose 
back then, the children were added, but parent had to be managed 
manually. I don't remember why or whether it was just inherited from the 
original code, but I can try adding it. Please comment it on GH, I'll 
add a commit and we'll see whether it breaks anything.


Lukáš



signature.asc
Description: OpenPGP digital signature


[Avocado-devel] TreeNode constructor parent parameter

2016-11-08 Thread Cleber Rosa
Lukáš,

While reviewing your PR (mux-separation3), I came across the fact that
the "parent" parameter of TreeNode doesn't do what *I* expected it to
do. That is, the following test code fails:

import unittest

from avocado.core import tree

class ParentTest(unittest.TestCase):

def test_parent_parameter(self):
parent = tree.TreeNode(name='parent')
child = tree.TreeNode(name='child', parent=parent)
grandchild = tree.TreeNode(name='grandchild', parent=child)
self.assertIn(child, parent.children)
self.assertIn(grandchild, child.children)


But it would work with this simple change:


diff --git a/avocado/core/tree.py b/avocado/core/tree.py
index 27d30f0..2fb3e11 100644
--- a/avocado/core/tree.py
+++ b/avocado/core/tree.py
@@ -69,6 +69,8 @@ class TreeNode(object):
 children = []
 self.name = name
 self.value = value
+if parent is not None:
+parent.add_child(self)
 self.parent = parent
 self.children = []
 self.ctrl = []


This is similar to what is already done with "children", and I have the
feeling that both should behave similarly.

Does it make sense?

-- 
Cleber Rosa
[ Sr Software Engineer - Virtualization Team - Red Hat ]
[ Avocado Test Framework - avocado-framework.github.io ]



signature.asc
Description: OpenPGP digital signature