summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2001-10-02 13:11:42 (GMT)
committerSteven Knight <knight@baldmt.com>2001-10-02 13:11:42 (GMT)
commitf987fbf31938ce3009b89f1f62f880cdc2a511f4 (patch)
treef015a31b8b8f7b59fe1dac86b7f404424772d37e
parent3451935a570c186d36e020b7d48cf2dd3dc2be0b (diff)
downloadSCons-f987fbf31938ce3009b89f1f62f880cdc2a511f4.zip
SCons-f987fbf31938ce3009b89f1f62f880cdc2a511f4.tar.gz
SCons-f987fbf31938ce3009b89f1f62f880cdc2a511f4.tar.bz2
Add children() methods for nodes.
-rw-r--r--src/engine/SCons/Node/FS.py5
-rw-r--r--src/engine/SCons/Node/FSTests.py12
-rw-r--r--src/engine/SCons/Node/NodeTests.py11
-rw-r--r--src/engine/SCons/Node/__init__.py3
4 files changed, 31 insertions, 0 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index 2595766..2950c97 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -226,6 +226,11 @@ class Dir(Node):
else:
return self.entries['..'].root()
+ def children(self):
+ return map(lambda x, s=self: s.entries[x],
+ filter(lambda k: k != '.' and k != '..',
+ self.entries.keys()))
+
# XXX TODO?
# rfile
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py
index 1cffd8c..568022b 100644
--- a/src/engine/SCons/Node/FSTests.py
+++ b/src/engine/SCons/Node/FSTests.py
@@ -95,6 +95,18 @@ class FSTestCase(unittest.TestCase):
except:
raise
+ # Test Dir.children()
+ dir = fs.Dir('ddd')
+ fs.File('ddd/f1')
+ fs.File('ddd/f2')
+ fs.File('ddd/f3')
+ fs.Dir('ddd/d1')
+ fs.Dir('ddd/d1/f4')
+ fs.Dir('ddd/d1/f5')
+ kids = map(lambda x: x.path, dir.children())
+ kids.sort()
+ assert kids == ['ddd/d1/', 'ddd/f1', 'ddd/f2', 'ddd/f3']
+
# Test for sub-classing of node building.
global built_it
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py
index 26cf6bd..3ea6d7f 100644
--- a/src/engine/SCons/Node/NodeTests.py
+++ b/src/engine/SCons/Node/NodeTests.py
@@ -119,6 +119,17 @@ class NodeTestCase(unittest.TestCase):
node.add_source(['two', 'three'])
assert node.sources == ['one', 'two', 'three']
+ def test_children(self):
+ """Test fetching the "children" of a Node.
+ """
+ node = SCons.Node.Node()
+ node.add_source(['one', 'two', 'three'])
+ node.add_dependency(['four', 'five', 'six'])
+ kids = node.children()
+ kids.sort()
+ print kids
+ assert kids == ['five', 'four', 'one', 'six', 'three', 'two']
+
if __name__ == "__main__":
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index 03afc27..6026900 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -58,3 +58,6 @@ class Node:
if type(source) is not type([]):
raise TypeError("source must be a list")
self.sources.extend(source)
+
+ def children(self):
+ return self.sources + self.depends