~ubuntu-branches/ubuntu/precise/trac/precise

« back to all changes in this revision

Viewing changes to trac/tests/config.py

  • Committer: Bazaar Package Importer
  • Author(s): Luis Matos
  • Date: 2008-07-13 23:46:20 UTC
  • mfrom: (1.1.13 upstream)
  • Revision ID: james.westby@ubuntu.com-20080713234620-13ynpdpkbaymfg1z
Tags: 0.11-2
* Re-added python-setup-tools to build dependences. Closes: #490320 #468705
* New upstream release Closes: 489727
* Added sugestion for other vcs support available: git bazaar mercurial 
* Added spamfilter plugin to sugests
* Moved packaging from python-support to python-central
* Added an entry to the NEWS about the cgi Closes: #490275
* Updated 10_remove_trac_suffix_from_title patch to be used in 0.11

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# -*- coding: utf-8 -*-
2
2
#
3
 
# Copyright (C) 2005 Edgewall Software
4
 
# Copyright (C) 2005 Christopher Lenz <cmlenz@gmx.de>
 
3
# Copyright (C) 2005-2008 Edgewall Software
 
4
# Copyright (C) 2005-2007 Christopher Lenz <cmlenz@gmx.de>
5
5
# All rights reserved.
6
6
#
7
7
# This software is licensed as described in the file COPYING, which
11
11
# This software consists of voluntary contributions made by many
12
12
# individuals. For the exact contribution history, see the revision
13
13
# history and logs, available at http://trac.edgewall.org/log/.
14
 
#
15
 
# Author: Christopher Lenz <cmlenz@gmx.de>
16
 
 
17
 
from trac.config import *
18
 
from trac.test import TestConfiguration
19
14
 
20
15
import os
21
16
from StringIO import StringIO
23
18
import time
24
19
import unittest
25
20
 
 
21
from trac.config import *
 
22
from trac.test import Configuration
 
23
 
26
24
 
27
25
class ConfigurationTestCase(unittest.TestCase):
28
26
 
37
35
        os.remove(self.filename)
38
36
 
39
37
    def _read(self):
40
 
        return TestConfiguration(self.filename)
 
38
        return Configuration(self.filename)
41
39
 
42
40
    def _write(self, lines):
43
41
        fileobj = open(self.filename, 'w')
70
68
    def test_default_int(self):
71
69
        config = self._read()
72
70
        self.assertRaises(ConfigurationError, config.getint, 'a', 'option', 'b')
73
 
        self.assertEquals(None, config.getint('a', 'option'))
 
71
        self.assertEquals(0, config.getint('a', 'option'))
74
72
        self.assertEquals(1, config.getint('a', 'option', '1'))
75
73
        self.assertEquals(1, config.getint('a', 'option', 1))
76
74
 
84
82
        config = self._read()
85
83
        self.assertEquals('x', config.get('a', 'option'))
86
84
        self.assertEquals('x', config.get('a', 'option', 'y'))
 
85
        self.assertEquals('y', config.get('b', 'option2', 'y'))
87
86
 
88
87
    def test_read_and_getbool(self):
89
88
        self._write(['[a]', 'option = yes'])
90
89
        config = self._read()
91
90
        self.assertEquals(True, config.getbool('a', 'option'))
92
91
        self.assertEquals(True, config.getbool('a', 'option', False))
 
92
        self.assertEquals(False, config.getbool('b', 'option2'))
 
93
        self.assertEquals(False, config.getbool('b', 'option2', False))
 
94
        self.assertEquals(False, config.getbool('b', 'option2', 'disabled'))
93
95
 
94
96
    def test_read_and_getint(self):
95
97
        self._write(['[a]', 'option = 42'])
96
98
        config = self._read()
97
99
        self.assertEquals(42, config.getint('a', 'option'))
98
100
        self.assertEquals(42, config.getint('a', 'option', 25))
 
101
        self.assertEquals(0, config.getint('b', 'option2'))
 
102
        self.assertEquals(25, config.getint('b', 'option2', 25))
 
103
        self.assertEquals(25, config.getint('b', 'option2', '25'))
99
104
 
100
105
    def test_read_and_getlist(self):
101
106
        self._write(['[a]', 'option = foo, bar, baz'])
102
107
        config = self._read()
103
108
        self.assertEquals(['foo', 'bar', 'baz'],
104
109
                          config.getlist('a', 'option'))
 
110
        self.assertEquals([],
 
111
                          config.getlist('b', 'option2'))
 
112
        self.assertEquals(['foo', 'bar', 'baz'],
 
113
                    config.getlist('b', 'option2', ['foo', 'bar', 'baz']))
 
114
        self.assertEquals(['foo', 'bar', 'baz'],
 
115
                    config.getlist('b', 'option2', 'foo, bar, baz'))
105
116
 
106
117
    def test_read_and_getlist_sep(self):
107
118
        self._write(['[a]', 'option = foo | bar | baz'])
136
147
                           'option0 = x\n', 
137
148
                           "option1 = Voilà l'été\n", 
138
149
                           "option2 = Voilà l'été\n", 
139
 
                           # "option3 = Voilà l'été\n", 
 
150
                           # "option3 = Voilà l'été\n", 
140
151
                           '\n',
141
152
                           '[b]\n',
142
153
                           'option0 = y\n', 
149
160
        self.assertEquals(u"Voilà l'été", config2.get('a', 'option2'))
150
161
        # self.assertEquals(u"Voilà l'été", config2.get('a', 'option3'))
151
162
 
 
163
    def test_set_and_save_inherit(self):
 
164
        def testcb():
 
165
            config = self._read()
 
166
            config.set('a', 'option2', "Voilà l'été")  # UTF-8
 
167
            config.set('a', 'option1', u"Voilà l'été") # unicode
 
168
            self.assertEquals('x', config.get('a', 'option'))
 
169
            self.assertEquals(u"Voilà l'été", config.get('a', 'option1'))
 
170
            self.assertEquals(u"Voilà l'été", config.get('a', 'option2'))
 
171
            config.save()
 
172
 
 
173
            configfile = open(self.filename, 'r')
 
174
            self.assertEquals(['# -*- coding: utf-8 -*-\n',
 
175
                               '\n',
 
176
                               '[a]\n',
 
177
                               "option1 = Voilà l'été\n", 
 
178
                               "option2 = Voilà l'été\n", 
 
179
                               '\n',
 
180
                               '[inherit]\n',
 
181
                               "file = trac-site.ini\n", 
 
182
                               '\n'],
 
183
                              configfile.readlines())
 
184
            configfile.close()
 
185
            config2 = Configuration(self.filename)
 
186
            self.assertEquals('x', config2.get('a', 'option'))
 
187
            self.assertEquals(u"Voilà l'été", config2.get('a', 'option1'))
 
188
            self.assertEquals(u"Voilà l'été", config2.get('a', 'option2'))
 
189
        self._test_with_inherit(testcb)
 
190
 
152
191
    def test_sections(self):
153
192
        self._write(['[a]', 'option = x', '[b]', 'option = y'])
154
193
        config = self._read()
155
194
        self.assertEquals(['a', 'b'], config.sections())
156
 
        config.site_parser.add_section('c')
157
 
        self.assertEquals(['a', 'b', 'c'], config.sections())
158
195
 
159
196
    def test_options(self):
160
197
        self._write(['[a]', 'option = x', '[b]', 'option = y'])
163
200
        self.assertEquals(('option', 'y'), iter(config.options('b')).next())
164
201
        self.assertRaises(StopIteration, iter(config.options('c')).next)
165
202
 
 
203
    def test_has_option(self):
 
204
        config = self._read()
 
205
        self.assertEquals(False, config.has_option('a', 'option'))
 
206
        self._write(['[a]', 'option = x'])
 
207
        config = self._read()
 
208
        self.assertEquals(True, config.has_option('a', 'option'))
 
209
 
166
210
    def test_reparse(self):
167
211
        self._write(['[a]', 'option = x'])
168
212
        config = self._read()
169
213
        self.assertEquals('x', config.get('a', 'option'))
170
 
        time.sleep(1) # needed because of low mtime granularity
 
214
        time.sleep(2) # needed because of low mtime granularity,
 
215
                      # especially on fat filesystems
171
216
 
172
217
        self._write(['[a]', 'option = y'])
173
218
        config.parse_if_needed()
174
219
        self.assertEquals('y', config.get('a', 'option'))
175
220
 
 
221
    def test_inherit_one_level(self):
 
222
        def testcb():
 
223
            config = self._read()
 
224
            self.assertEqual('x', config.get('a', 'option'))
 
225
            self.assertEqual(['a', 'inherit'], config.sections())
 
226
            config.remove('a', 'option') # Should *not* remove option in parent
 
227
            self.assertEqual('x', config.get('a', 'option'))
 
228
            self.assertEqual([('option', 'x')], list(config.options('a')))
 
229
            self.assertEqual(True, 'a' in config)
 
230
        self._test_with_inherit(testcb)
 
231
 
 
232
 
 
233
    def _test_with_inherit(self, testcb):
 
234
        sitename = os.path.join(tempfile.gettempdir(), 'trac-site.ini')
 
235
        sitefile = open(sitename, 'w')
 
236
        try:
 
237
            try:
 
238
                sitefile.write('[a]\noption = x\n')
 
239
            finally:
 
240
                sitefile.close()
 
241
 
 
242
            self._write(['[inherit]', 'file = trac-site.ini'])
 
243
            testcb()
 
244
        finally:
 
245
            os.remove(sitename)
 
246
 
176
247
 
177
248
def suite():
178
249
    return unittest.makeSuite(ConfigurationTestCase, 'test')