summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2005-06-11 12:34:46 (GMT)
committerSteven Knight <knight@baldmt.com>2005-06-11 12:34:46 (GMT)
commitc7027ef1090fc224c9b519dfb2b6928cb3a3512e (patch)
treecb6ad0b4b4c74488881ce054c0b3eee3fa34ca70
parent0462645d5027fcf4286775d88d2f6fb52abad3b1 (diff)
downloadSCons-c7027ef1090fc224c9b519dfb2b6928cb3a3512e.zip
SCons-c7027ef1090fc224c9b519dfb2b6928cb3a3512e.tar.gz
SCons-c7027ef1090fc224c9b519dfb2b6928cb3a3512e.tar.bz2
Gary's bug.
-rw-r--r--src/engine/SCons/Node/FS.py16
-rw-r--r--src/engine/SCons/Node/FSTests.py11
2 files changed, 16 insertions, 11 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py
index a1cadf0..f2eb1aa 100644
--- a/src/engine/SCons/Node/FS.py
+++ b/src/engine/SCons/Node/FS.py
@@ -909,7 +909,15 @@ class FS(LocalFS):
# Lookup the directory
for orig, norm in map(None, path_orig, path_norm):
try:
- directory = directory.entries[norm]
+ entries = directory.entries
+ except AttributeError:
+ # We tried to look up the entry in either an Entry or
+ # a File. Give whatever it is a chance to do what's
+ # appropriate: morph into a Dir or raise an exception.
+ directory.must_be_a_Dir()
+ entries = directory.entries
+ try:
+ directory = entries[norm]
except KeyError:
if not create:
raise SCons.Errors.UserError
@@ -923,12 +931,6 @@ class FS(LocalFS):
directory.entries[norm] = d
directory.add_wkid(d)
directory = d
- except AttributeError:
- # We tried to look up the entry in either an Entry or
- # a File. Give whatever it is a chance to do what's
- # appropriate: morph into a Dir or raise an exception.
- directory.must_be_a_Dir()
- directory = directory.entries[norm]
directory.must_be_a_Dir()
diff --git a/src/engine/SCons/Node/FSTests.py b/src/engine/SCons/Node/FSTests.py
index f7a2a63..a8b5b6d 100644
--- a/src/engine/SCons/Node/FSTests.py
+++ b/src/engine/SCons/Node/FSTests.py
@@ -1713,8 +1713,8 @@ class DirTestCase(_tempdirTestCase):
r = sub.file_on_disk('dir')
assert not r, r
-class EntryTestCase(unittest.TestCase):
- def runTest(self):
+class EntryTestCase(_tempdirTestCase):
+ def test_runTest(self):
"""Test methods specific to the Entry sub-class.
"""
test = TestCmd(workdir='')
@@ -1803,7 +1803,10 @@ class EntryTestCase(unittest.TestCase):
# Doesn't exist, no sources, and no builder: no sig
assert sig is None, sig
-
+ def test_Entry_Entry_lookup(self):
+ """Test looking up an Entry within another Entry"""
+ self.fs.Entry('#topdir')
+ self.fs.Entry('#topdir/a/b/c')
class RepositoryTestCase(_tempdirTestCase):
@@ -2779,7 +2782,6 @@ class SaveStringsTestCase(unittest.TestCase):
if __name__ == "__main__":
suite = unittest.TestSuite()
suite.addTest(BuildDirTestCase())
- suite.addTest(EntryTestCase())
suite.addTest(find_fileTestCase())
suite.addTest(StringDirTestCase())
suite.addTest(stored_infoTestCase())
@@ -2795,6 +2797,7 @@ if __name__ == "__main__":
tclasses = [
BaseTestCase,
BuildInfoTestCase,
+ EntryTestCase,
NodeInfoTestCase,
FSTestCase,
DirTestCase,