summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Scanner
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2005-12-27 22:24:55 (GMT)
committerSteven Knight <knight@baldmt.com>2005-12-27 22:24:55 (GMT)
commitb03e7ab4ca681e521249cfed7a727299c76378db (patch)
treeacaae981ff2f6ce27cbf760c83b113f76129705e /src/engine/SCons/Scanner
parent0859903f99927abc0383b2e642d060604d5f9695 (diff)
downloadSCons-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.py30
-rw-r--r--src/engine/SCons/Scanner/DirTests.py22
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):