import SCons.SConsign
class BuildInfo:
+ def merge(self, object):
+ pass
+
+class DummySConsignEntry:
def __init__(self, name):
self.name = name
+ self.binfo = BuildInfo()
def convert_to_sconsign(self):
self.c_to_s = 1
def convert_from_sconsign(self, dir, name):
self.c_from_s = 1
-class DummyModule:
- def to_string(self, sig):
- return str(sig)
-
- def from_string(self, sig):
- return int(sig)
-
class FS:
def __init__(self, top):
self.Top = top
self.Top.repositories = []
class DummyNode:
- def __init__(self, path='not_a_valid_path'):
+ def __init__(self, path='not_a_valid_path', binfo=None):
self.path = path
self.tpath = path
self.fs = FS(self)
+ self.binfo = binfo
+ def get_stored_info(self):
+ return self.binfo
+ def get_binfo(self):
+ return self.binfo
class SConsignTestCase(unittest.TestCase):
def setUp(self):
class BaseTestCase(SConsignTestCase):
- def runTest(self):
- aaa = BuildInfo('aaa')
- bbb = BuildInfo('bbb')
+ def test_Base(self):
+ aaa = DummySConsignEntry('aaa')
+ bbb = DummySConsignEntry('bbb')
bbb.arg1 = 'bbb arg1'
- ccc = BuildInfo('ccc')
+ ccc = DummySConsignEntry('ccc')
ccc.arg2 = 'ccc arg2'
f = SCons.SConsign.Base()
f.set_entry('aaa', aaa)
f.set_entry('bbb', bbb)
+ #f.merge()
+
e = f.get_entry('aaa')
assert e == aaa, e
assert e.name == 'aaa', e.name
assert not hasattr(e, 'arg2'), e
f.set_entry('bbb', ccc)
+
e = f.get_entry('bbb')
assert e.name == 'ccc', e.name
assert not hasattr(e, 'arg1'), e
assert e.arg2 == 'ccc arg2', e.arg1
- ddd = BuildInfo('ddd')
- eee = BuildInfo('eee')
- fff = BuildInfo('fff')
+ ddd = DummySConsignEntry('ddd')
+ eee = DummySConsignEntry('eee')
+ fff = DummySConsignEntry('fff')
fff.arg = 'fff arg'
- f = SCons.SConsign.Base(DummyModule())
+ f = SCons.SConsign.Base()
f.set_entry('ddd', ddd)
f.set_entry('eee', eee)
assert not hasattr(e, 'arg'), e
f.set_entry('eee', fff)
+
+ e = f.get_entry('eee')
+ assert e.name == 'fff', e.name
+ assert e.arg == 'fff arg', e.arg
+
+ def test_store_info(self):
+ aaa = DummySConsignEntry('aaa')
+ bbb = DummySConsignEntry('bbb')
+ bbb.arg1 = 'bbb arg1'
+ ccc = DummySConsignEntry('ccc')
+ ccc.arg2 = 'ccc arg2'
+
+ f = SCons.SConsign.Base()
+ f.store_info('aaa', DummyNode('aaa', aaa))
+ f.store_info('bbb', DummyNode('bbb', bbb))
+
+ try:
+ e = f.get_entry('aaa')
+ except KeyError:
+ pass
+ else:
+ raise "unexpected entry %s" % e
+
+ try:
+ e = f.get_entry('bbb')
+ except KeyError:
+ pass
+ else:
+ raise "unexpected entry %s" % e
+
+ f.merge()
+
+ e = f.get_entry('aaa')
+ assert e == aaa, "aaa = %s, e = %s" % (aaa, e)
+ assert e.name == 'aaa', e.name
+
+ e = f.get_entry('bbb')
+ assert e == bbb, "bbb = %s, e = %s" % (bbb, e)
+ assert e.name == 'bbb', e.name
+ assert e.arg1 == 'bbb arg1', e.arg1
+ assert not hasattr(e, 'arg2'), e
+
+ f.store_info('bbb', DummyNode('bbb', ccc))
+
+ e = f.get_entry('bbb')
+ assert e == bbb, e
+ assert e.name == 'bbb', e.name
+ assert e.arg1 == 'bbb arg1', e.arg1
+ assert not hasattr(e, 'arg2'), e
+
+ f.merge()
+
+ e = f.get_entry('bbb')
+ assert e.name == 'ccc', e.name
+ assert not hasattr(e, 'arg1'), e
+ assert e.arg2 == 'ccc arg2', e.arg1
+
+ ddd = DummySConsignEntry('ddd')
+ eee = DummySConsignEntry('eee')
+ fff = DummySConsignEntry('fff')
+ fff.arg = 'fff arg'
+
+ f = SCons.SConsign.Base()
+ f.store_info('ddd', DummyNode('ddd', ddd))
+ f.store_info('eee', DummyNode('eee', eee))
+
+ f.merge()
+
+ e = f.get_entry('ddd')
+ assert e == ddd, e
+ assert e.name == 'ddd', e.name
+
+ e = f.get_entry('eee')
+ assert e == eee, e
+ assert e.name == 'eee', e.name
+ assert not hasattr(e, 'arg'), e
+
+ f.store_info('eee', DummyNode('eee', fff))
+
+ e = f.get_entry('eee')
+ assert e == eee, e
+ assert e.name == 'eee', e.name
+ assert not hasattr(e, 'arg'), e
+
+ f.merge()
+
e = f.get_entry('eee')
assert e.name == 'fff', e.name
assert e.arg == 'fff arg', e.arg
class SConsignDBTestCase(SConsignTestCase):
- def runTest(self):
+ def test_SConsignDB(self):
save_DataBase = SCons.SConsign.DataBase
SCons.SConsign.DataBase = {}
try:
d1 = SCons.SConsign.DB(DummyNode('dir1'))
- d1.set_entry('aaa', BuildInfo('aaa name'))
- d1.set_entry('bbb', BuildInfo('bbb name'))
+ d1.set_entry('aaa', DummySConsignEntry('aaa name'))
+ d1.set_entry('bbb', DummySConsignEntry('bbb name'))
+
aaa = d1.get_entry('aaa')
assert aaa.name == 'aaa name'
bbb = d1.get_entry('bbb')
assert bbb.name == 'bbb name'
d2 = SCons.SConsign.DB(DummyNode('dir2'))
- d2.set_entry('ccc', BuildInfo('ccc name'))
- d2.set_entry('ddd', BuildInfo('ddd name'))
+ d2.set_entry('ccc', DummySConsignEntry('ccc name'))
+ d2.set_entry('ddd', DummySConsignEntry('ddd name'))
+
ccc = d2.get_entry('ccc')
assert ccc.name == 'ccc name'
ddd = d2.get_entry('ddd')
assert ddd.name == 'ddd name'
d31 = SCons.SConsign.DB(DummyNode('dir3/sub1'))
- d31.set_entry('eee', BuildInfo('eee name'))
- d31.set_entry('fff', BuildInfo('fff name'))
+ d31.set_entry('eee', DummySConsignEntry('eee name'))
+ d31.set_entry('fff', DummySConsignEntry('fff name'))
+
eee = d31.get_entry('eee')
assert eee.name == 'eee name'
fff = d31.get_entry('fff')
assert fff.name == 'fff name'
d32 = SCons.SConsign.DB(DummyNode('dir3%ssub2' % os.sep))
- d32.set_entry('ggg', BuildInfo('ggg name'))
- d32.set_entry('hhh', BuildInfo('hhh name'))
+ d32.set_entry('ggg', DummySConsignEntry('ggg name'))
+ d32.set_entry('hhh', DummySConsignEntry('hhh name'))
+
ggg = d32.get_entry('ggg')
assert ggg.name == 'ggg name'
hhh = d32.get_entry('hhh')
assert hhh.name == 'hhh name'
+
finally:
+
SCons.SConsign.DataBase = save_DataBase
class SConsignDirFileTestCase(SConsignTestCase):
- def runTest(self):
- bi_foo = BuildInfo('foo')
- bi_bar = BuildInfo('bar')
+ def test_SConsignDirFile(self):
+ bi_foo = DummySConsignEntry('foo')
+ bi_bar = DummySConsignEntry('bar')
- f = SCons.SConsign.DirFile(DummyNode(), DummyModule())
+ f = SCons.SConsign.DirFile(DummyNode())
f.set_entry('foo', bi_foo)
f.set_entry('bar', bi_bar)
assert e == bi_foo, e
assert e.name == 'foo', e.name
- assert bi_foo.c_from_s, bi_foo.c_from_s
-
e = f.get_entry('bar')
assert e == bi_bar, e
assert e.name == 'bar', e.name
assert not hasattr(e, 'arg'), e
- assert bi_bar.c_from_s, bi_bar.c_from_s
-
- bbb = BuildInfo('bbb')
+ bbb = DummySConsignEntry('bbb')
bbb.arg = 'bbb arg'
+
f.set_entry('bar', bbb)
+
e = f.get_entry('bar')
assert e.name == 'bbb', e.name
assert e.arg == 'bbb arg', e.arg
class SConsignFileTestCase(SConsignTestCase):
- def runTest(self):
+ def test_SConsignFile(self):
test = self.test
file = test.workpath('sconsign_file')
class writeTestCase(SConsignTestCase):
- def runTest(self):
+ def test_write(self):
test = self.test
file = test.workpath('sconsign_file')
SCons.SConsign.DataBase = {}
SCons.SConsign.File(file, fake_dbm)
- f = SCons.SConsign.DB(DummyNode(), DummyModule())
+ f = SCons.SConsign.DB(DummyNode())
- bi_foo = BuildInfo('foo')
- bi_bar = BuildInfo('bar')
+ bi_foo = DummySConsignEntry('foo')
+ bi_bar = DummySConsignEntry('bar')
f.set_entry('foo', bi_foo)
f.set_entry('bar', bi_bar)
assert fake_dbm.sync_count == 1, fake_dbm.sync_count
-def suite():
- suite = unittest.TestSuite()
- suite.addTest(BaseTestCase())
- suite.addTest(SConsignDBTestCase())
- suite.addTest(SConsignDirFileTestCase())
- suite.addTest(SConsignFileTestCase())
- suite.addTest(writeTestCase())
- return suite
if __name__ == "__main__":
- runner = unittest.TextTestRunner()
- result = runner.run(suite())
- if not result.wasSuccessful():
+ suite = unittest.TestSuite()
+ tclasses = [
+ BaseTestCase,
+ SConsignDBTestCase,
+ SConsignDirFileTestCase,
+ SConsignFileTestCase,
+ writeTestCase,
+ ]
+ for tclass in tclasses:
+ names = unittest.getTestCaseNames(tclass, 'test_')
+ suite.addTests(map(tclass, names))
+ if not unittest.TextTestRunner().run(suite).wasSuccessful():
sys.exit(1)
-