diff options
author | Steven Knight <knight@baldmt.com> | 2005-12-27 22:24:55 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2005-12-27 22:24:55 (GMT) |
commit | b03e7ab4ca681e521249cfed7a727299c76378db (patch) | |
tree | acaae981ff2f6ce27cbf760c83b113f76129705e /src/engine/SCons/Scanner | |
parent | 0859903f99927abc0383b2e642d060604d5f9695 (diff) | |
download | SCons-b03e7ab4ca681e521249cfed7a727299c76378db.zip SCons-b03e7ab4ca681e521249cfed7a727299c76378db.tar.gz SCons-b03e7ab4ca681e521249cfed7a727299c76378db.tar.bz2 |
Handle scanning of the in-memory entries for a Dir with a scanner, not a hard-coded Python method.
Diffstat (limited to 'src/engine/SCons/Scanner')
-rw-r--r-- | src/engine/SCons/Scanner/Dir.py | 30 | ||||
-rw-r--r-- | src/engine/SCons/Scanner/DirTests.py | 22 |
2 files changed, 43 insertions, 9 deletions
diff --git a/src/engine/SCons/Scanner/Dir.py b/src/engine/SCons/Scanner/Dir.py index 3da1661..fb23d1b 100644 --- a/src/engine/SCons/Scanner/Dir.py +++ b/src/engine/SCons/Scanner/Dir.py @@ -43,15 +43,31 @@ def DirEntryScanner(**kw): """Return a prototype Scanner instance for "scanning" directory Nodes for their in-memory entries""" kw['node_factory'] = SCons.Node.FS.Entry - kw['recursive'] = only_dirs + kw['recursive'] = None return apply(SCons.Scanner.Base, (scan_in_memory, "DirEntryScanner"), kw) -skip_entry = { - '.' : 1, - '..' : 1, - '.sconsign' : 1, - '.sconsign.dblite' : 1, -} +skip_entry = {} + +skip_entry_list = [ + '.', + '..', + '.sconsign', + # Used by the native dblite.py module. + '.sconsign.dblite', + # Used by dbm and dumbdbm. + '.sconsign.dir', + # Used by dbm. + '.sconsign.pag', + # Used by dumbdbm. + '.sconsign.dat', + '.sconsign.bak', + # Used by some dbm emulations using Berkeley DB. + '.sconsign.db', +] + +for skip in skip_entry_list: + skip_entry[skip] = 1 + skip_entry[SCons.Node.FS._my_normcase(skip)] = 1 do_not_scan = lambda k: not skip_entry.has_key(k) diff --git a/src/engine/SCons/Scanner/DirTests.py b/src/engine/SCons/Scanner/DirTests.py index e4e59a3..0dde95e 100644 --- a/src/engine/SCons/Scanner/DirTests.py +++ b/src/engine/SCons/Scanner/DirTests.py @@ -62,11 +62,20 @@ class DirScannerTestBase(unittest.TestCase): self.test.write(['dir', 'f1'], "dir/f1\n") self.test.write(['dir', 'f2'], "dir/f2\n") self.test.write(['dir', '.sconsign'], "dir/.sconsign\n") + self.test.write(['dir', '.sconsign.bak'], "dir/.sconsign.bak\n") + self.test.write(['dir', '.sconsign.dat'], "dir/.sconsign.dat\n") + self.test.write(['dir', '.sconsign.db'], "dir/.sconsign.db\n") self.test.write(['dir', '.sconsign.dblite'], "dir/.sconsign.dblite\n") + self.test.write(['dir', '.sconsign.dir'], "dir/.sconsign.dir\n") + self.test.write(['dir', '.sconsign.pag'], "dir/.sconsign.pag\n") self.test.write(['dir', 'sub', 'f3'], "dir/sub/f3\n") self.test.write(['dir', 'sub', 'f4'], "dir/sub/f4\n") self.test.write(['dir', 'sub', '.sconsign'], "dir/.sconsign\n") + self.test.write(['dir', 'sub', '.sconsign.bak'], "dir/.sconsign.bak\n") + self.test.write(['dir', 'sub', '.sconsign.dat'], "dir/.sconsign.dat\n") self.test.write(['dir', 'sub', '.sconsign.dblite'], "dir/.sconsign.dblite\n") + self.test.write(['dir', 'sub', '.sconsign.dir'], "dir/.sconsign.dir\n") + self.test.write(['dir', 'sub', '.sconsign.pag'], "dir/.sconsign.pag\n") class DirScannerTestCase1(DirScannerTestBase): def runTest(self): @@ -74,13 +83,22 @@ class DirScannerTestCase1(DirScannerTestBase): s = SCons.Scanner.Dir.DirScanner() + expect = [ + os.path.join('dir', 'f1'), + os.path.join('dir', 'f2'), + os.path.join('dir', 'sub'), + ] deps = s(env.Dir('dir'), env, ()) sss = map(str, deps) - assert sss == ['dir/f1', 'dir/f2', 'dir/sub'], sss + assert sss == expect, sss + expect = [ + os.path.join('dir', 'sub', 'f3'), + os.path.join('dir', 'sub', 'f4'), + ] deps = s(env.Dir('dir/sub'), env, ()) sss = map(str, deps) - assert sss == ['dir/sub/f3', 'dir/sub/f4'], sss + assert sss == expect, sss class DirScannerTestCase2(DirScannerTestBase): def runTest(self): |