diff options
author | Steven Knight <knight@baldmt.com> | 2005-06-11 12:34:46 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2005-06-11 12:34:46 (GMT) |
commit | c7027ef1090fc224c9b519dfb2b6928cb3a3512e (patch) | |
tree | cb6ad0b4b4c74488881ce054c0b3eee3fa34ca70 | |
parent | 0462645d5027fcf4286775d88d2f6fb52abad3b1 (diff) | |
download | SCons-c7027ef1090fc224c9b519dfb2b6928cb3a3512e.zip SCons-c7027ef1090fc224c9b519dfb2b6928cb3a3512e.tar.gz SCons-c7027ef1090fc224c9b519dfb2b6928cb3a3512e.tar.bz2 |
Gary's bug.
-rw-r--r-- | src/engine/SCons/Node/FS.py | 16 | ||||
-rw-r--r-- | src/engine/SCons/Node/FSTests.py | 11 |
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, |