iro/tests/config.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 24 Aug 2012 01:05:06 +0200
branchdevel
changeset 294 0e75bd39767d
parent 282 50cc13814bfb
permissions -rw-r--r--
adding LICENSE to all files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
294
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
     1
# Copyright (c) 2012 netzguerilla.net <iro@netzguerilla.net>
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
     2
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
     3
# This file is part of Iro.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
     4
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
     5
# Permission is hereby granted, free of charge, to any person obtaining a copy of
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
     6
# this software and associated documentation files (the "Software"), to deal in
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
     7
# the Software without restriction, including without limitation the rights to use,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
     8
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
     9
# #Software, and to permit persons to whom the Software is furnished to do so,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    10
# subject to the following conditions:
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    11
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    12
# The above copyright notice and this permission notice shall be included in
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    13
# all copies or substantial portions of the Software.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    14
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    15
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    16
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    17
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    18
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    19
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    20
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 282
diff changeset
    21
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    22
from mock import patch, Mock
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    23
from twisted.trial import unittest
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    24
import signal
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    25
import io
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    26
import ConfigParser
269
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
    27
from functools import partial
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
    28
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
    29
from iro import config, error, validate 
282
50cc13814bfb make iro working with python v2.6
Sandro Knauß <knauss@netzguerilla.net>
parents: 269
diff changeset
    30
from iro.config import OrderedDict
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
    31
from iro.offer.provider import Provider, providers
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    32
188
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    33
class TestModuleConfig(unittest.TestCase):
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    34
    '''test config class'''
269
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
    35
 
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    36
    def setUp(self):
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    37
        self._reloadList=config.configParser.reloadList
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    38
        config.configParser.reloadList=[]
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    39
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    40
    def tearDown(self):
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    41
        config.configParser.reloadList = self._reloadList
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    42
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    43
    @patch('iro.config.main')
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    44
    @patch('iro.config.configParser')
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    45
    def testReadConfig(self,pConfig,pMain):
188
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    46
        pMain._init = True
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    47
        config.readConfig()
231
3929338fd17f moving tests -> iro.tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 220
diff changeset
    48
        self.assertEqual([i[0] for i in pConfig.method_calls],["read","reload_","items"])
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    49
        pConfig.read.assert_called_once_with(config.confFiles)
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    50
        pConfig.items.assert_called_once_with("main")
231
3929338fd17f moving tests -> iro.tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 220
diff changeset
    51
        pConfig.reload_.assert_called_once_with()
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    52
        self.assertEqual(pMain.load.called,1)
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    53
188
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    54
    @patch('iro.config.main')
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    55
    @patch('iro.config.configParser')
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    56
    def testReadConfigInit(self,pConfig,pMain):
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    57
        pConfig.items.return_value = [('dburl',''),("port",1000)]
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    58
        pMain._init = False
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    59
        config.readConfig()
231
3929338fd17f moving tests -> iro.tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 220
diff changeset
    60
        self.assertEqual([i[0] for i in pConfig.method_calls],["read","reload_","items"])
188
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    61
        self.assertEqual([i[0] for i in pMain.method_calls],["same"])
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    62
        sa = pMain.same.call_args_list[0][0][0]
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    63
        self.assertEqual(sa.port,1000)
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    64
        self.assertEqual(sa.dburl,'')
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    65
        pMain.same.return_value = False
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    66
        self.assertRaises(Exception,config.readConfig,)
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    67
239
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    68
    @patch('iro.config.main')
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    69
    @patch('iro.config.configParser')
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    70
    def testInit(self,pConfig,pMain):
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    71
        pMain._init = False
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    72
        config.init()
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    73
        self.assertEqual([i[0] for i in pConfig.method_calls],["read", "items"])
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    74
        pConfig.read.assert_called_once_with(config.confFiles)
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    75
        pConfig.items.assert_called_once_with("main")
4cf5e664c847 adding tests
Sandro Knauß <knauss@netzguerilla.net>
parents: 231
diff changeset
    76
        self.assertEqual(pMain.load.called,1)
188
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    77
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
    78
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    79
    @patch('signal.signal')
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    80
    @patch('iro.config.readConfig')
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    81
    def testRegisterSignal(self, pReadConfig, pSignal):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    82
        config.registerSignal()
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    83
        self.assertEqual(pSignal.call_args[0][0],signal.SIGUSR2)
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    84
        self.assertEqual(pReadConfig.called,0)
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    85
        pSignal.call_args[0][1](None, None)
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    86
        pReadConfig.assert_called_once_with()
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    87
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    88
    def testRegisterReload(self):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    89
        def x():
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    90
            pass
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    91
        config.configParser.registerReload(x)
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    92
        self.assertEqual(config.configParser.reloadList,[x])
146
8cae6cfc1de4 adding ConfigTest and OfferTest
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    93
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    94
    def testReload(self):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    95
        x = Mock()
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    96
        config.configParser.reloadList = [x] 
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    97
        config.configParser.reload_()
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    98
        x.assert_called_once_with()
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    99
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   100
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   101
class TestRead(unittest.TestCase):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   102
269
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   103
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   104
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   105
    def tearDown(self):
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   106
        for s in config.configParser.sections():
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   107
            config.configParser.remove_section(s)
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   108
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   109
    @patch('iro.config.ConfigParser.read')
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   110
    def testMain(self,pRead):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   111
        sample_config = """[main]
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   112
port = 8000
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   113
dburl = sdfdsafgsfdg
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   114
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   115
        config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   116
        config.configParser.read([])
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   117
        pRead.assert_called_once_with(config.configParser,[])
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   118
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   119
    @patch('iro.config.ConfigParser.read')
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   120
    def testMainBadPort(self,pRead):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   121
        sample_config = """[main]
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   122
port = -8000
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   123
dburl = sadfaserasg
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   124
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   125
        config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   126
        self.assertRaises(error.ValidateException, config.configParser.read, [])
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   127
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   128
    @patch('iro.config.ConfigParser.read')
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   129
    def testMainNoMust(self,pRead):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   130
        sample_config = """[main]
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   131
port = 8000
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   132
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   133
        config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   134
        self.assertRaises(config.NeededOption, config.configParser.read, [])
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   135
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   136
    @patch('iro.config.ConfigParser.read')
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   137
    def testMust(self,pRead):
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   138
        v=Mock()
188
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   139
        config.main.options["test"] = config.Option(v,default="jehei")
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   140
        try:
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   141
            sample_config = """[main]
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   142
dburl = sdfawersdf
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   143
port = 8000
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   144
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   145
            config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   146
            config.configParser.read([])
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   147
            self.assertEqual(v.called,0)
188
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   148
            config.main.load(config.configParser.items("main"))
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   149
            self.assertEqual(config.main.test,'jehei')
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   150
            sample_config = """[main]
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   151
dburl = adfgsdftsfg
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   152
port = 8000
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   153
test = foohu
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   154
    """
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   155
            config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   156
            config.configParser.read([])
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   157
            v.assert_called_once_with("foohu","test")
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   158
        finally:
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   159
            del(config.main.options["test"])
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   160
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   161
    @patch('iro.config.ConfigParser.read')
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   162
    def testProviders(self, pRead):
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   163
        v=Mock()
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   164
        class TestProvider(Provider):
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   165
            def __init__(self,name):
269
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   166
                o = [("test",config.Option(v))]
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   167
                Provider.__init__(self, name, options=o)
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   168
        providers["test"]=TestProvider
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   169
        try:
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   170
            sample_config = """[p]
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   171
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   172
            config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   173
            self.assertRaises(ConfigParser.NoOptionError, config.configParser.read, [])  
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   174
            self.assertEqual(v.called,0)
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   175
            sample_config = """[p]
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   176
typ= test
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   177
test= foo
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   178
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   179
            config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   180
            config.configParser.read([])
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   181
            v.assert_called_once_with("foo","test")
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   182
        finally:
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   183
            del(providers["test"])
188
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   184
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   185
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   186
class TestConfig(unittest.TestCase):
269
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   187
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   188
    def config(self,name):
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   189
        return config.Config(name, OrderedDict([
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   190
                ("dburl",config.Option(lambda x,y:x,long="Connection URL to database",must=True)),
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   191
                ("port",config.Option(partial(validate.vInteger,minv=0),long="Port under that twisted is running",must=True)),
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   192
                ])
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   193
            )
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   194
188
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   195
    def testSame(self):
269
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   196
        c1 = self.config("1")
188
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   197
        c1.port = 1
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   198
        c1.dburl = "dburl1"
269
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   199
        c2 = self.config("2")
188
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   200
        c2.port = 1
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   201
        c2.dburl = "dburl1"
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   202
        self.assertTrue(c1.same(c2))
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   203
        self.assertTrue(c1.same(c1))
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   204
        self.assertTrue(c2.same(c1))
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   205
        c2.port = 2
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   206
        self.assertFalse(c2.same(c1))
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   207
        self.assertFalse(c1.same(c2))
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   208
        c2.port = 1
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   209
        c2.dburl = "dburl2"
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   210
        self.assertFalse(c2.same(c1))
4d6130d91e56 test for config.same
Sandro Knauß <knauss@netzguerilla.net>
parents: 187
diff changeset
   211
        self.assertFalse(c1.same(c2))
220
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   212
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   213
    def testSampleConf(self):
269
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   214
        c1 = self.config("1")
220
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   215
        self.assertEqual(c1.sampleConf(),["[1]",
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   216
            "# Connection URL to database",
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   217
            "dburl = ","",
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   218
            "# Port under that twisted is running",
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   219
            "port = ",""])
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   220
269
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   221
    def testSampleConfDefault(self):
0d134b173cb1 iro.config: using OrderedDict instead of Dict + List for Options.
Sandro Knauß <knauss@netzguerilla.net>
parents: 239
diff changeset
   222
        c1 = self.config("1")
220
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   223
        c1.options["port"].default = 12345
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   224
        c1.options["port"].must = False
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   225
        c1.options["dburl"].default = True
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   226
        self.assertEqual(c1.sampleConf(),["[1]",
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   227
            "# Connection URL to database",
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   228
            "dburl = True","",
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   229
            "# Port under that twisted is running",
602720314930 adding config.Config.sampleConf for creating a sample configuration
Sandro Knauß <knauss@netzguerilla.net>
parents: 188
diff changeset
   230
            "# port = 12345",""])