# HG changeset patch # User Sandro Knauß # Date 1330274908 -3600 # Node ID 4d6130d91e5603fc0bd9c0f086c41517725d5fca # Parent 352527f2b6caa74826b87a7719a19e27aa385697 test for config.same test for readConfig - init diff -r 352527f2b6ca -r 4d6130d91e56 iro/config.py --- a/iro/config.py Sat Feb 25 16:22:21 2012 +0100 +++ b/iro/config.py Sun Feb 26 17:48:28 2012 +0100 @@ -41,7 +41,7 @@ "port":Option(partial(vInteger,minv=0),long="Port under that twisted is running",must=True), "dburl":Option(lambda x,y:x,long="Connection URL to database",must=True), } - self.read=False + self._init=True def _read(self, cfg, write=False): @@ -51,7 +51,7 @@ try: value = option.validate(c[o],o) if write: - self.read = True + self.init = False setattr(self,o,value) except KeyError: if option.must: @@ -75,12 +75,13 @@ def readConfig(): configParser.read(confFiles) configParser.reload() - if not main.read: + if main._init: main.load(configParser.items("main")) else: - m = Config("main").load(configParser.items("main")) + m = Config("main") + m.load(configParser.items("main")) if not main.same(m): - raise Exception("Main options can't be reloaded, you have to restart.") + raise Exception("Main options can't be reloaded, please restart your Application.") def registerSignal(): '''register readConfig to SIGUSR2''' diff -r 352527f2b6ca -r 4d6130d91e56 tests/config.py --- a/tests/config.py Sat Feb 25 16:22:21 2012 +0100 +++ b/tests/config.py Sun Feb 26 17:48:28 2012 +0100 @@ -6,7 +6,7 @@ from iro import config, error from iro.offer.provider import Provider, providers -class TestConfig(unittest.TestCase): +class TestModuleConfig(unittest.TestCase): '''test config class''' def setUp(self): @@ -19,7 +19,7 @@ @patch('iro.config.main') @patch('iro.config.configParser') def testReadConfig(self,pConfig,pMain): - pMain.read = False + pMain._init = True config.readConfig() self.assertEqual([i[0] for i in pConfig.method_calls],["read","reload","items"]) pConfig.read.assert_called_once_with(config.confFiles) @@ -27,6 +27,22 @@ pConfig.reload.assert_called_once_with() self.assertEqual(pMain.load.called,1) + @patch('iro.config.main') + @patch('iro.config.configParser') + def testReadConfigInit(self,pConfig,pMain): + pConfig.items.return_value = [('dburl',''),("port",1000)] + pMain._init = False + config.readConfig() + self.assertEqual([i[0] for i in pConfig.method_calls],["read","reload","items"]) + self.assertEqual([i[0] for i in pMain.method_calls],["same"]) + sa = pMain.same.call_args_list[0][0][0] + self.assertEqual(sa.port,1000) + self.assertEqual(sa.dburl,'') + pMain.same.return_value = False + self.assertRaises(Exception,config.readConfig,) + + + @patch('signal.signal') @patch('iro.config.readConfig') def testRegisterSignal(self, pReadConfig, pSignal): @@ -85,7 +101,7 @@ @patch('iro.config.ConfigParser.read') def testMust(self,pRead): v=Mock() - config.main.options["test"] = config.Option(v) + config.main.options["test"] = config.Option(v,default="jehei") try: sample_config = """[main] dburl = sdfawersdf @@ -94,6 +110,8 @@ config.configParser.readfp(io.BytesIO(sample_config)) config.configParser.read([]) self.assertEqual(v.called,0) + config.main.load(config.configParser.items("main")) + self.assertEqual(config.main.test,'jehei') sample_config = """[main] dburl = adfgsdftsfg port = 8000 @@ -128,3 +146,23 @@ v.assert_called_once_with("foo","test") finally: del(providers["test"]) + + +class TestConfig(unittest.TestCase): + def testSame(self): + c1 = config.Config("1") + c1.port = 1 + c1.dburl = "dburl1" + c2 = config.Config("2") + c2.port = 1 + c2.dburl = "dburl1" + self.assertTrue(c1.same(c2)) + self.assertTrue(c1.same(c1)) + self.assertTrue(c2.same(c1)) + c2.port = 2 + self.assertFalse(c2.same(c1)) + self.assertFalse(c1.same(c2)) + c2.port = 1 + c2.dburl = "dburl2" + self.assertFalse(c2.same(c1)) + self.assertFalse(c1.same(c2))