summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2005-12-04 17:10:10 (GMT)
committerSteven Knight <knight@baldmt.com>2005-12-04 17:10:10 (GMT)
commit4b78cf9715b9c9bf96cdf909828533fc8eca0827 (patch)
treed89b1d618fae061c67deb82ff145a0e666eadd9e /src/engine/SCons/Node
parent6a4fd83b9e9d4533017fa4e1c7233f72b42555c8 (diff)
downloadSCons-4b78cf9715b9c9bf96cdf909828533fc8eca0827.zip
SCons-4b78cf9715b9c9bf96cdf909828533fc8eca0827.tar.gz
SCons-4b78cf9715b9c9bf96cdf909828533fc8eca0827.tar.bz2
Refactor to let specific Node types override scanner selection, and to add a separate in-memory Directory scanner (to be used later).
Diffstat (limited to 'src/engine/SCons/Node')
-rw-r--r--src/engine/SCons/Node/NodeTests.py6
-rw-r--r--src/engine/SCons/Node/__init__.py12
2 files changed, 17 insertions, 1 deletions
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py
index 8c2e6ea..11c57a9 100644
--- a/src/engine/SCons/Node/NodeTests.py
+++ b/src/engine/SCons/Node/NodeTests.py
@@ -1030,6 +1030,12 @@ class NodeTestCase(unittest.TestCase):
"""Test that a scanner_key() method exists"""
assert SCons.Node.Node().scanner_key() == None
+ def test_select_scanner(self):
+ """Test the base select_scanner() method returns its scanner"""
+ scanner = Scanner()
+ s = SCons.Node.Node().select_scanner(scanner)
+ assert scanner is s, s
+
def test_children(self):
"""Test fetching the non-ignored "children" of a Node.
"""
diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py
index e73e5f3..a77b09b 100644
--- a/src/engine/SCons/Node/__init__.py
+++ b/src/engine/SCons/Node/__init__.py
@@ -442,7 +442,7 @@ class Node:
# Give the scanner a chance to select a more specific scanner
# for this Node.
- scanner = scanner.select(self)
+ #scanner = scanner.select(self)
nodes = [self]
seen = {}
@@ -556,6 +556,16 @@ class Node:
def scanner_key(self):
return None
+ def select_scanner(self, scanner):
+ """Selects a scanner for this Node.
+
+ This is a separate method so it can be overridden by Node
+ subclasses (specifically, Node.FS.Dir) that *must* use their
+ own Scanner and don't select one the Scanner.Selector that's
+ configured for the target.
+ """
+ return scanner.select(self)
+
def env_set(self, env, safe=0):
if safe and self.env:
return