summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Node
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2001-12-11 03:22:06 (GMT)
committerSteven Knight <knight@baldmt.com>2001-12-11 03:22:06 (GMT)
commit760ec2007ab98e6528dafba7d83e786d3e6fdda1 (patch)
tree17b556384203a53a84a525538a94f62167cc06eb /src/engine/SCons/Node
parentc1b33d572499fb75730be8630db33e50e87f834d (diff)
downloadSCons-760ec2007ab98e6528dafba7d83e786d3e6fdda1.zip
SCons-760ec2007ab98e6528dafba7d83e786d3e6fdda1.tar.gz
SCons-760ec2007ab98e6528dafba7d83e786d3e6fdda1.tar.bz2
Add Scanner objects to source files when we first find them, not later when they're just going to be scanned.
Diffstat (limited to 'src/engine/SCons/Node')
-rw-r--r--src/engine/SCons/Node/FS.py6
-rw-r--r--src/engine/SCons/Node/FSTests.py18
2 files changed, 16 insertions, 8 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index a898f01..b170ef6 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -468,11 +468,7 @@ class File(Entry):
def scan(self):
if not self.scanned and self.env:
if self.scanner:
- scanner = self.scanner
- else:
- scanner = self.env.get_scanner(os.path.splitext(self.name)[1])
- if scanner:
- self.add_dependency(scanner.scan(self.path_, self.env))
+ self.add_dependency(self.scanner.scan(self.path, self.env))
self.scanned = 1
def __createDir(self):
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py
index d9d128e..fc58c4a 100644
--- a/src/engine/SCons/Node/FSTests.py
+++ b/src/engine/SCons/Node/FSTests.py
@@ -38,9 +38,17 @@ class Builder:
built_it = 1
return 0
+scanner_count = 0
+
class Scanner:
+ def __init__(self):
+ global scanner_count
+ scanner_count = scanner_count + 1
+ self.hash = scanner_count
def scan(self, filename, env):
return [SCons.Node.FS.default_fs.File(filename)]
+ def __hash__(self):
+ return self.hash
class Environment:
def __init__(self):
@@ -296,11 +304,15 @@ class FSTestCase(unittest.TestCase):
f1.scanner = Scanner()
f1.scan()
assert f1.depends[0].path_ == os.path.join("d1", "f1")
- f1.scanner = None
- f1.depends = []
- f1.scanned = 0
+ f1.scanner = None
+ f1.scanned = None
f1.scan()
assert f1.depends[0].path_ == os.path.join("d1", "f1")
+ f1.scanner = None
+ f1.scanned = None
+ f1.depends = []
+ f1.scan()
+ assert not f1.depends
# Test building a file whose directory is not there yet...
f1 = fs.File(test.workpath("foo/bar/baz/ack"))