cc-4227: fixed small bugs in upgrade script and finished testing

This commit is contained in:
Rudi Grinberg 2012-08-20 12:15:29 -04:00
parent b4c014dbcc
commit abeef43a5b
2 changed files with 49 additions and 3 deletions

View File

@ -1,5 +1,51 @@
from configobj import ConfigObj
import unittest
import os
import upgrade2dot2
def create_cfg(cfg):
config = ConfigObj()
config.filename = cfg['path']
for k,v in cfg['data'].iteritems(): config[k] = v
return config
class TestUpgrade(unittest.TestCase):
pass
def setUp(self):
self.source = 'ttt1.cfg'
self.dest = 'ttt2.cfg'
def test_upgrade(self):
cf = {
'source' : {
'path' : self.source,
'data' : {
'key1' : 'val1',
'key2' : 'val2',
'key3' : 5,
'key4' : 10,},
},
'dest' : {
'path' : self.dest,
'data' : {
'key1' : 'NEW_VAL',
'key3' : 25, }
}
}
config1, config2 = create_cfg(cf['source']), create_cfg(cf['dest'])
for c in [config1,config2]: c.write()
self.assertTrue( os.path.exists(cf['source']['path']) )
self.assertTrue( os.path.exists(cf['dest']['path']) )
# Finished preparing
upgrade2dot2.upgrade({ cf['source']['path'] : cf['dest']['path'] })
c1, c2 = ConfigObj(cf['source']['path']), ConfigObj(cf['dest']['path'])
self.assertEqual( c2['key2'], 'val2')
self.assertEqual( c2['key4'], '10')
self.assertEqual( c2['key3'], '25')
def tearDown(self):
for clean in [ self.source, self.dest ]:
os.unlink(clean)
if __name__ == '__main__': unittest.main()

View File

@ -12,13 +12,13 @@ def upgrade(upgrade_data):
Must be ran as sudo. will do upgrade of configuration files by filling in
missing values according to upgrade_data
"""
for source, destination in upgrade_data:
for source, destination in upgrade_data.iteritems():
if not os.path.exists(source):
print("Cannot upgrade '%s'. Skipping this file" % source)
continue
try:
cfg_source, cfg_dest = ConfigObj(source), ConfigObj(destination)
for key, val in cfg_source:
for key, val in cfg_source.iteritems():
if key not in cfg_dest: cfg_dest[key] = val
cfg_dest.write()
except Exception: