Erik Grinaker is sharing code with you
Bitbucket is a code hosting site. Unlimited public and private repositories. Free for small teams.
Don't show this againRevelation / test / config.py
- commit
- cff0e6f7ef34
- parent
- e0a14b958359
- branch
- default
- tags
- revelation-0.4.0-pre2
bumped version number to 0.4.0-pre2
1 |
991e09fe2dfd
|
#!/usr/bin/env python |
2 |
991e09fe2dfd
|
|
3 |
991e09fe2dfd
|
# |
4 |
b6047522c64d
|
# Revelation 0.4.0 - a password manager for GNOME 2 |
5 |
991e09fe2dfd
|
# http://oss.codepoet.no/revelation/ |
6 |
b6047522c64d
|
# $Id$ |
7 |
991e09fe2dfd
|
# |
8 |
991e09fe2dfd
|
# Unit tests for config module |
9 |
991e09fe2dfd
|
# |
10 |
991e09fe2dfd
|
# |
11 |
07c1fb2b0c27
|
# Copyright (c) 2003-2005 Erik Grinaker |
12 |
991e09fe2dfd
|
# |
13 |
991e09fe2dfd
|
# This program is free software; you can redistribute it and/or |
14 |
991e09fe2dfd
|
# modify it under the terms of the GNU General Public License |
15 |
991e09fe2dfd
|
# as published by the Free Software Foundation; either version 2 |
16 |
991e09fe2dfd
|
# of the License, or (at your option) any later version. |
17 |
991e09fe2dfd
|
# |
18 |
991e09fe2dfd
|
# This program is distributed in the hope that it will be useful, |
19 |
991e09fe2dfd
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
20 |
991e09fe2dfd
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
21 |
991e09fe2dfd
|
# GNU General Public License for more details. |
22 |
991e09fe2dfd
|
# |
23 |
991e09fe2dfd
|
# You should have received a copy of the GNU General Public License |
24 |
991e09fe2dfd
|
# along with this program; if not, write to the Free Software |
25 |
991e09fe2dfd
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
26 |
991e09fe2dfd
|
# |
27 |
991e09fe2dfd
|
|
28 |
991e09fe2dfd
|
from revelation import config |
29 |
991e09fe2dfd
|
|
30 |
704e07bb5692
|
import gconf, gobject, gtk, unittest |
31 |
704e07bb5692
|
|
32 |
704e07bb5692
|
|
33 |
704e07bb5692
|
|
34 |
704e07bb5692
|
class attrs(unittest.TestCase): |
35 |
704e07bb5692
|
"config attributes" |
36 |
704e07bb5692
|
|
37 |
704e07bb5692
|
def test_attrs(self): |
38 |
704e07bb5692
|
"config module has required attributes" |
39 |
704e07bb5692
|
|
40 |
704e07bb5692
|
attrs = [ |
41 |
704e07bb5692
|
"APPNAME", "VERSION", "DATAVERSION", "RELNAME", |
42 |
704e07bb5692
|
"URL", "AUTHOR", "COPYRIGHT", |
43 |
704e07bb5692
|
"DIR_GCONFSCHEMAS", "DIR_ICONS", "DIR_UI", |
44 |
704e07bb5692
|
"FILE_GCONFTOOL" |
45 |
704e07bb5692
|
] |
46 |
704e07bb5692
|
|
47 |
704e07bb5692
|
for attr in attrs: |
48 |
704e07bb5692
|
self.assertEquals(hasattr(config, attr), True) |
49 |
991e09fe2dfd
|
|
50 |
991e09fe2dfd
|
|
51 |
991e09fe2dfd
|
|
52 |
991e09fe2dfd
|
class Config__init(unittest.TestCase): |
53 |
991e09fe2dfd
|
"Config.__init__()" |
54 |
991e09fe2dfd
|
|
55 |
991e09fe2dfd
|
def test_basedir(self): |
56 |
991e09fe2dfd
|
"Config.__init__() sets correct default basedir" |
57 |
991e09fe2dfd
|
|
58 |
991e09fe2dfd
|
cfg = config.Config() |
59 |
991e09fe2dfd
|
self.assertEquals(cfg.basedir, "/apps/revelation") |
60 |
991e09fe2dfd
|
|
61 |
991e09fe2dfd
|
|
62 |
991e09fe2dfd
|
def test_inv_basedir(self): |
63 |
991e09fe2dfd
|
"Config.__init__() raises ConfigError on invalid basedir" |
64 |
991e09fe2dfd
|
|
65 |
991e09fe2dfd
|
self.assertRaises(config.ConfigError, config.Config, "/test/123") |
66 |
991e09fe2dfd
|
|
67 |
991e09fe2dfd
|
|
68 |
991e09fe2dfd
|
|
69 |
991e09fe2dfd
|
class Config_check(unittest.TestCase): |
70 |
991e09fe2dfd
|
"Config.check()" |
71 |
991e09fe2dfd
|
|
72 |
991e09fe2dfd
|
pass |
73 |
991e09fe2dfd
|
|
74 |
991e09fe2dfd
|
|
75 |
991e09fe2dfd
|
|
76 |
704e07bb5692
|
class Config_forget(unittest.TestCase): |
77 |
704e07bb5692
|
"Config.forget()" |
78 |
704e07bb5692
|
|
79 |
704e07bb5692
|
def test_forget(self): |
80 |
704e07bb5692
|
"Config.forget() removes the callback" |
81 |
704e07bb5692
|
|
82 |
704e07bb5692
|
global foo |
83 |
704e07bb5692
|
foo = 0 |
84 |
704e07bb5692
|
|
85 |
704e07bb5692
|
def cb(key, value, userdata): |
86 |
704e07bb5692
|
global foo |
87 |
704e07bb5692
|
foo += 1 |
88 |
704e07bb5692
|
|
89 |
704e07bb5692
|
if gtk.main_level() > 0: |
90 |
704e07bb5692
|
gtk.main_quit() |
91 |
704e07bb5692
|
|
92 |
704e07bb5692
|
cfg = config.Config() |
93 |
704e07bb5692
|
id = cfg.monitor("file/autoload_file", cb) |
94 |
704e07bb5692
|
|
95 |
704e07bb5692
|
cfg.set("file/autoload_file", "test123") |
96 |
704e07bb5692
|
gtk.main() |
97 |
704e07bb5692
|
self.assertEquals(foo, 2) |
98 |
704e07bb5692
|
|
99 |
704e07bb5692
|
cfg.forget(id) |
100 |
704e07bb5692
|
|
101 |
704e07bb5692
|
cfg.set("file/autoload_file", "test") |
102 |
704e07bb5692
|
gobject.timeout_add(500, lambda: gtk.main_quit()) |
103 |
704e07bb5692
|
gtk.main() |
104 |
704e07bb5692
|
self.assertEquals(foo, 2) |
105 |
704e07bb5692
|
|
106 |
704e07bb5692
|
|
107 |
704e07bb5692
|
def test_inv_id(self): |
108 |
704e07bb5692
|
"Config.forget() raises ConfigError on invalid id" |
109 |
704e07bb5692
|
|
110 |
704e07bb5692
|
cfg = config.Config() |
111 |
704e07bb5692
|
self.assertRaises(config.ConfigError, cfg.forget, 1) |
112 |
704e07bb5692
|
|
113 |
704e07bb5692
|
|
114 |
704e07bb5692
|
|
115 |
991e09fe2dfd
|
class Config_get(unittest.TestCase): |
116 |
991e09fe2dfd
|
"Config.get()" |
117 |
991e09fe2dfd
|
|
118 |
991e09fe2dfd
|
|
119 |
991e09fe2dfd
|
def test_absolute(self): |
120 |
991e09fe2dfd
|
"Config.get() handles absolute paths" |
121 |
991e09fe2dfd
|
|
122 |
991e09fe2dfd
|
cfg = config.Config() |
123 |
991e09fe2dfd
|
cfg.get("/desktop/gnome/interface/gtk_theme") |
124 |
991e09fe2dfd
|
|
125 |
991e09fe2dfd
|
|
126 |
991e09fe2dfd
|
def test_nonexist(self): |
127 |
991e09fe2dfd
|
"Config.get() raises ConfigError on non-existant node" |
128 |
991e09fe2dfd
|
|
129 |
991e09fe2dfd
|
cfg = config.Config() |
130 |
991e09fe2dfd
|
self.assertRaises(config.ConfigError, cfg.get, "test/123") |
131 |
991e09fe2dfd
|
|
132 |
991e09fe2dfd
|
|
133 |
991e09fe2dfd
|
def test_relative(self): |
134 |
991e09fe2dfd
|
"Config.get() handles relative paths" |
135 |
991e09fe2dfd
|
|
136 |
991e09fe2dfd
|
cfg = config.Config() |
137 |
991e09fe2dfd
|
cfg.get("file/autoload_file") |
138 |
991e09fe2dfd
|
|
139 |
991e09fe2dfd
|
|
140 |
991e09fe2dfd
|
|
141 |
991e09fe2dfd
|
class Config_monitor(unittest.TestCase): |
142 |
991e09fe2dfd
|
"Config.monitor()" |
143 |
991e09fe2dfd
|
|
144 |
991e09fe2dfd
|
def test_change(self): |
145 |
991e09fe2dfd
|
"Config.monitor() calls callback on change" |
146 |
991e09fe2dfd
|
|
147 |
991e09fe2dfd
|
global foo |
148 |
991e09fe2dfd
|
foo = 0 |
149 |
991e09fe2dfd
|
|
150 |
991e09fe2dfd
|
def cb(key, value, userdata): |
151 |
991e09fe2dfd
|
global foo |
152 |
991e09fe2dfd
|
foo += 1 |
153 |
991e09fe2dfd
|
|
154 |
991e09fe2dfd
|
if gtk.main_level() > 0: |
155 |
991e09fe2dfd
|
gtk.main_quit() |
156 |
991e09fe2dfd
|
|
157 |
991e09fe2dfd
|
cfg = config.Config() |
158 |
991e09fe2dfd
|
cfg.monitor("file/autoload_file", cb) |
159 |
991e09fe2dfd
|
|
160 |
991e09fe2dfd
|
cfg.set("file/autoload_file", "test123") |
161 |
991e09fe2dfd
|
gtk.main() |
162 |
991e09fe2dfd
|
self.assertEquals(foo, 2) |
163 |
991e09fe2dfd
|
|
164 |
991e09fe2dfd
|
|
165 |
704e07bb5692
|
def test_id(self): |
166 |
704e07bb5692
|
"Config.monitor() returns a valid callback id" |
167 |
704e07bb5692
|
|
168 |
704e07bb5692
|
cfg = config.Config() |
169 |
704e07bb5692
|
id = cfg.monitor("file/autoload_file", lambda k,v,d: None) |
170 |
704e07bb5692
|
|
171 |
704e07bb5692
|
self.assertNotEqual(id, None) |
172 |
704e07bb5692
|
cfg.forget(id) |
173 |
704e07bb5692
|
|
174 |
704e07bb5692
|
|
175 |
991e09fe2dfd
|
def test_init(self): |
176 |
991e09fe2dfd
|
"Config.monitor() calls callback on setup" |
177 |
991e09fe2dfd
|
|
178 |
991e09fe2dfd
|
def cb(key, value, userdata): |
179 |
991e09fe2dfd
|
global foo |
180 |
991e09fe2dfd
|
foo = "test" |
181 |
991e09fe2dfd
|
|
182 |
991e09fe2dfd
|
cfg = config.Config() |
183 |
991e09fe2dfd
|
cfg.monitor("file/autoload_file", cb) |
184 |
991e09fe2dfd
|
|
185 |
991e09fe2dfd
|
self.assertEquals(foo, "test") |
186 |
991e09fe2dfd
|
|
187 |
991e09fe2dfd
|
|
188 |
991e09fe2dfd
|
|
189 |
991e09fe2dfd
|
class Config_set(unittest.TestCase): |
190 |
991e09fe2dfd
|
"Config.set()" |
191 |
991e09fe2dfd
|
|
192 |
991e09fe2dfd
|
def test_absolute(self): |
193 |
991e09fe2dfd
|
"Config.set() handler absolute paths" |
194 |
991e09fe2dfd
|
|
195 |
991e09fe2dfd
|
cfg = config.Config() |
196 |
991e09fe2dfd
|
|
197 |
991e09fe2dfd
|
cfg.set("/apps/revelation/file/autoload_file", "123test") |
198 |
991e09fe2dfd
|
self.assertEquals(cfg.get("/apps/revelation/file/autoload_file"), "123test") |
199 |
991e09fe2dfd
|
|
200 |
991e09fe2dfd
|
|
201 |
991e09fe2dfd
|
def test_relative(self): |
202 |
991e09fe2dfd
|
"Config.set() handles relative paths" |
203 |
991e09fe2dfd
|
|
204 |
991e09fe2dfd
|
cfg = config.Config() |
205 |
991e09fe2dfd
|
|
206 |
991e09fe2dfd
|
cfg.set("file/autoload_file", "test123") |
207 |
991e09fe2dfd
|
self.assertEquals(cfg.get("file/autoload_file"), "test123") |
208 |
991e09fe2dfd
|
|
209 |
991e09fe2dfd
|
|
210 |
991e09fe2dfd
|
|
211 |
991e09fe2dfd
|
if __name__ == "__main__": |
212 |
991e09fe2dfd
|
unittest.main() |
213 |
991e09fe2dfd
|