test for config.same devel
authorSandro Knauß <knauss@netzguerilla.net>
Sun, 26 Feb 2012 17:48:28 +0100
branchdevel
changeset 188 4d6130d91e56
parent 187 352527f2b6ca
child 189 ae2767918faa
test for config.same test for readConfig - init
iro/config.py
tests/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'''
--- 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))