diff options
| author | Steven Knight <knight@baldmt.com> | 2003-10-18 19:22:25 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2003-10-18 19:22:25 (GMT) |
| commit | e48bef4f0520f04d71dfa2654621f3aa8a4fabe9 (patch) | |
| tree | eb654ea23be6a82f3a29d8b451e652d9cd2e883b /src/engine/SCons/Sig | |
| parent | 528ebad33f8ecbe8401ef779ce64648a7de0851a (diff) | |
| download | SCons-e48bef4f0520f04d71dfa2654621f3aa8a4fabe9.zip SCons-e48bef4f0520f04d71dfa2654621f3aa8a4fabe9.tar.gz SCons-e48bef4f0520f04d71dfa2654621f3aa8a4fabe9.tar.bz2 | |
Allow SConsignFile() to take a dbm module argument; portability fixes. (Ralf W. Grosse-Kunstleve) Make ParseConfig() and env.Append() work regardless of initial construction variable values. Make new Dir() support work with empty directories and timestamps. Make the new Queue-based Job implementation portable to Python 1.5.2.
Diffstat (limited to 'src/engine/SCons/Sig')
| -rw-r--r-- | src/engine/SCons/Sig/SigTests.py | 36 | ||||
| -rw-r--r-- | src/engine/SCons/Sig/__init__.py | 8 |
2 files changed, 41 insertions, 3 deletions
diff --git a/src/engine/SCons/Sig/SigTests.py b/src/engine/SCons/Sig/SigTests.py index c82d2c5..f297464 100644 --- a/src/engine/SCons/Sig/SigTests.py +++ b/src/engine/SCons/Sig/SigTests.py @@ -490,6 +490,41 @@ class SConsignDirFileTestCase(unittest.TestCase): assert f.get('foo') == (3, 1, 2) assert f.get_implicit('foo') == ['bar'] +class SConsignFileTestCase(unittest.TestCase): + + def runTest(self): + test = TestCmd.TestCmd(workdir = '') + file = test.workpath('sconsign_file') + + assert SCons.Sig.SConsign_db is None, SCons.Sig.SConsign_db + + SCons.Sig.SConsignFile(file) + + assert not SCons.Sig.SConsign_db is None, SCons.Sig.SConsign_db + + class Fake_DBM: + def open(self, name, mode): + self.name = name + self.mode = mode + return self + + fake_dbm = Fake_DBM() + + SCons.Sig.SConsignFile(file, fake_dbm) + + assert not SCons.Sig.SConsign_db is None, SCons.Sig.SConsign_db + assert not hasattr(fake_dbm, 'name'), fake_dbm + assert not hasattr(fake_dbm, 'mode'), fake_dbm + + SCons.Sig.SConsign_db = None + + SCons.Sig.SConsignFile(file, fake_dbm) + + assert not SCons.Sig.SConsign_db is None, SCons.Sig.SConsign_db + assert fake_dbm.name == file, fake_dbm.name + assert fake_dbm.mode == "c", fake_dbm.mode + + def suite(): suite = unittest.TestSuite() @@ -500,6 +535,7 @@ def suite(): suite.addTest(_SConsignTestCase()) suite.addTest(SConsignDBTestCase()) suite.addTest(SConsignDirFileTestCase()) + suite.addTest(SConsignFileTestCase()) return suite if __name__ == "__main__": diff --git a/src/engine/SCons/Sig/__init__.py b/src/engine/SCons/Sig/__init__.py index 4898f29..dfddf34 100644 --- a/src/engine/SCons/Sig/__init__.py +++ b/src/engine/SCons/Sig/__init__.py @@ -301,15 +301,17 @@ class SConsignDirFile(SConsignDir): SConsignForDirectory = SConsignDirFile -def SConsignFile(name): +def SConsignFile(name, dbm_module=None): """ Arrange for all signatures to be stored in a global .sconsign.dbm file. """ global SConsign_db if SConsign_db is None: - import anydbm - SConsign_db = anydbm.open(name, "c") + if dbm_module is None: + import anydbm + dbm_module = anydbm + SConsign_db = dbm_module.open(name, "c") global SConsignForDirectory SConsignForDirectory = SConsignDB |
