comparison martini/tests/test_config.txt @ 0:3c3522ce6e3a

initial import of martINI from https://svn.openplans.org/svn/standalone/martINI/
author k0s <k0scist@gmail.com>
date Tue, 08 Dec 2009 15:13:28 -0500
parents
children 09bed87f7fa4
comparison
equal deleted inserted replaced
-1:000000000000 0:3c3522ce6e3a
1 Test martini.config
2 =====================
3
4 The obligatory imports:
5
6 >>> import sys
7 >>> from pprint import pprint
8 >>> from martini.config import ConfigMunger
9 >>> from ConfigParser import InterpolationMissingOptionError
10 >>> from StringIO import StringIO
11
12 Make the munger and some .ini files:
13
14 >>> munger = ConfigMunger()
15 >>> foo = StringIO("[foo]\nbar = fleem")
16
17 Test basic reading + writing functionality:
18
19 >>> munger.read(foo)
20 >>> munger.write(sys.stdout)
21 [foo]
22 bar = fleem
23
24 Test overriding:
25
26 >>> munger.read("[foo]\nblah = florg\nbar=thorg")
27 >>> munger.write(sys.stdout)
28 [foo]
29 bar = thorg
30 blah = florg
31
32 Test variable interpolation:
33
34 >>> munger.read("[variable]\nvar=%(value)s")
35 >>> buffer = StringIO()
36 >>> try:
37 ... munger.write(buffer)
38 ... except InterpolationMissingOptionError, e:
39 ... print e.reference
40 value
41 >>> munger.write(sys.stdout, vars=dict(value='interpolated'))
42 [foo]
43 bar = thorg
44 blah = florg
45 <BLANKLINE>
46 [variable]
47 var = interpolated
48
49 Testing dict-like functionality:
50
51 >>> munger = ConfigMunger()
52 >>> munger.read("[foo]\nblah = florg\nbar=thorg")
53 >>> munger['foo']['bar']
54 'thorg'
55 >>> pprint(munger.dict())
56 {'foo': {'bar': 'thorg', 'blah': 'florg'}}
57 >>> pprint(munger['foo'])
58 {'bar': 'thorg', 'blah': 'florg'}
59
60 You can read from a dictionary too:
61
62 >>> munger = ConfigMunger()
63 >>> munger.read({'foo': {'bar': 'baz'}})
64 >>> munger['foo']['bar']
65 'baz'
66 >>> munger.write(sys.stdout)
67 [foo]
68 bar = baz
69
70 Test the ability to parse sectionless .ini files:
71
72 >>> munger = ConfigMunger()
73 >>> munger.read("foo = bar\nbaz=fleem")
74 >>> munger.sections()
75 ['DEFAULTS']
76 >>> munger['DEFAULTS']
77 {'foo': 'bar', 'baz': 'fleem'}
78 >>> munger.write(sys.stdout)
79 [DEFAULTS]
80 baz = fleem
81 foo = bar
82 >>> munger = ConfigMunger()
83 >>> munger.read("foo = bar\n\n[foo]\nbaz=fleem")
84 >>> sorted(munger.sections())
85 ['DEFAULTS', 'foo']
86 >>> munger['DEFAULTS']['foo']
87 'bar'
88 >>> munger['foo']['baz']
89 'fleem'
90
91 Move a secton around:
92
93 >>> munger.rename_section('foo', 'oof')
94 >>> sorted(munger.sections())
95 ['DEFAULTS', 'oof']
96 >>> munger['oof']
97 {'baz': 'fleem'}
98
99 Test the ability to parse multi-line .ini files [TODO]:
100
101 >>> munger = ConfigMunger()
102 >>> # munger.read("[Jeff Hammel]\naddress = 639 W. 173 St.\nApt. 11D\nNew York, NY 10032")