10 # Nokia Corporation - initial contribution. |
10 # Nokia Corporation - initial contribution. |
11 # |
11 # |
12 # Contributors: |
12 # Contributors: |
13 # |
13 # |
14 # Description: |
14 # Description: |
15 # |
15 # |
16 |
16 |
17 """ |
17 """ |
18 Test the configuration |
18 Test the configuration |
19 """ |
19 """ |
20 import unittest |
20 import unittest |
21 import string |
21 import os |
22 import sys,os |
22 import pickle |
23 import __init__ |
23 |
24 |
24 from cone.public import api,exceptions |
25 from cone.public import api,exceptions,utils |
|
26 from cone.storage import persistentdictionary |
25 from cone.storage import persistentdictionary |
27 from cone.confml import persistentconfml |
26 from testautomation.utils import remove_if_exists |
|
27 |
|
28 ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) |
28 |
29 |
29 class TestConfiguration(unittest.TestCase): |
30 class TestConfiguration(unittest.TestCase): |
30 def setUp(self): |
31 def setUp(self): |
31 pass |
32 pass |
32 |
33 |
33 # @test |
34 # @test |
34 def test_create_configuration(self): |
35 def test_create_configuration(self): |
35 conf = api.Configuration("testmee.confml") |
36 conf = api.Configuration("testmee.confml") |
36 self.assertTrue(conf) |
37 self.assertTrue(conf) |
|
38 |
|
39 def test_configuration_reduce_ex(self): |
|
40 prj = api.Project(api.Storage('.')) |
|
41 conf = api.Configuration("testmee.confml") |
|
42 prj.add_configuration(conf) |
|
43 tpl = conf.__reduce_ex__(2) |
|
44 self.assertEquals(tpl[2]['_storeint'],prj) |
|
45 self.assertEquals(tpl[2]['path'],'testmee.confml') |
|
46 |
|
47 def test_configuration_pickle(self): |
|
48 remove_if_exists(os.path.join(ROOT_PATH,'temp')) |
|
49 prj = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'temp'), 'w')) |
|
50 conf = api.Configuration("testmee.confml") |
|
51 prj.add_configuration(conf, True) |
|
52 prj.save() |
|
53 dfile = open(os.path.join(ROOT_PATH,'temp/out.dat'), 'w') |
|
54 pickle.dump(conf, dfile) |
|
55 dfile.close() |
|
56 dfile = open(os.path.join(ROOT_PATH,'temp/out.dat')) |
|
57 conf2 = pickle.load(dfile) |
|
58 self.assertEquals(conf2.path,'testmee.confml') |
|
59 self.assertEquals(conf2.name,'testmee_confml') |
|
60 |
37 |
61 |
38 def test_get_root_configuration(self): |
62 def test_get_root_configuration(self): |
39 conf = api.Configuration("testmee.confml") |
63 conf = api.Configuration("testmee.confml") |
40 self.assertEquals(conf.get_root_configuration(),conf) |
64 self.assertEquals(conf.get_root_configuration(),conf) |
41 conf.add_configuration(api.Configuration("foo/foo.confml")) |
65 conf.add_configuration(api.Configuration("foo/foo.confml")) |
102 |
136 |
103 class TestCompositeConfiguration(unittest.TestCase): |
137 class TestCompositeConfiguration(unittest.TestCase): |
104 def test_add(self): |
138 def test_add(self): |
105 conf = api.Configuration("data/simple.confml") |
139 conf = api.Configuration("data/simple.confml") |
106 layer = api.Configuration("laa") |
140 layer = api.Configuration("laa") |
107 conf._add(layer) |
141 conf.add_configuration(layer) |
108 self.assertEquals(conf.list_configurations()[0],"laa") |
142 self.assertEquals(conf.list_configurations()[0],"laa") |
109 |
143 |
110 def test_add_and_access_via_member(self): |
144 def test_add_and_access_via_member(self): |
111 conf = api.Configuration("data/simple.confml") |
145 conf = api.Configuration("data/simple.confml") |
112 layer = api.Configuration("laa") |
146 layer = api.Configuration("laa") |
113 conf._add(layer) |
147 conf.add_configuration(layer) |
114 self.assertEquals(conf.laa._name,"laa") |
148 self.assertEquals(conf.laa.name,"laa") |
115 |
149 |
116 def test_add_and_add_another_config_under(self): |
150 def test_add_and_add_another_config_under(self): |
117 conf = api.Configuration("data/simple.confml") |
151 conf = api.Configuration("data/simple.confml") |
118 layer = api.Configuration("laa") |
152 layer = api.Configuration("laa") |
119 conf._add(layer) |
153 conf.add_configuration(layer) |
120 conf.laa._add(api.Configuration("foo")) |
154 conf.laa.add_configuration(api.Configuration("foo")) |
121 self.assertEquals(conf.laa.foo._name,"foo") |
155 self.assertEquals(conf.laa.foo.name,"foo") |
122 |
156 |
123 def test_add_several_configurations(self): |
157 def test_add_several_configurations(self): |
124 conf = api.Configuration("data/simple.confml") |
158 conf = api.Configuration("data/simple.confml") |
125 layer = api.Configuration("laa") |
159 layer = api.Configuration("laa") |
126 conf._add(layer) |
160 conf.add_configuration(layer) |
127 conf._add(api.Configuration("foo")) |
161 conf.add_configuration(api.Configuration("foo")) |
128 conf._add(api.Configuration("faa")) |
162 conf.add_configuration(api.Configuration("faa")) |
129 self.assertEquals(conf.list_configurations()[0],"laa") |
163 self.assertEquals(conf.list_configurations()[0],"laa") |
130 self.assertEquals(conf.list_configurations()[1],"foo") |
164 self.assertEquals(conf.list_configurations()[1],"foo") |
131 self.assertEquals(conf.list_configurations()[2],"faa") |
165 self.assertEquals(conf.list_configurations()[2],"faa") |
132 |
166 |
133 def test_add_several_and_remove_one_layer(self): |
167 def test_add_several_and_remove_one_layer(self): |
134 conf = api.Configuration("data/simple.confml") |
168 conf = api.Configuration("data/simple.confml") |
135 layer = api.Configuration("laa") |
169 layer = api.Configuration("laa") |
136 conf._add(layer) |
170 conf.add_configuration(layer) |
137 conf._add(api.Configuration("foo")) |
171 conf.add_configuration(api.Configuration("foo")) |
138 conf._add(api.Configuration("faa")) |
172 conf.add_configuration(api.Configuration("faa")) |
139 conf._remove("foo") |
173 conf.remove_configuration("foo") |
140 |
174 |
141 self.assertEquals(conf.list_configurations()[0],"laa") |
175 self.assertEquals(conf.list_configurations()[0],"laa") |
142 self.assertEquals(conf.list_configurations()[1],"faa") |
176 self.assertEquals(conf.list_configurations()[1],"faa") |
143 |
177 |
144 def test_add_several_and_remove_last_layer(self): |
178 def test_add_several_and_remove_last_layer(self): |
145 conf = api.Configuration("data/simple.confml") |
179 conf = api.Configuration("data/simple.confml") |
146 layer = api.Configuration("laa") |
180 layer = api.Configuration("laa") |
147 conf._add(layer) |
181 conf.add_configuration(layer) |
148 conf._add(api.Configuration("foo")) |
182 conf.add_configuration(api.Configuration("foo")) |
149 conf._add(api.Configuration("faa")) |
183 conf.add_configuration(api.Configuration("faa")) |
150 conf._remove("faa") |
184 conf.remove_configuration("faa") |
151 self.assertEquals(conf.list_configurations()[0],"laa") |
185 self.assertEquals(conf.list_configurations()[0],"laa") |
152 self.assertEquals(conf.list_configurations()[1],"foo") |
186 self.assertEquals(conf.list_configurations()[1],"foo") |
153 |
187 |
154 def test_add_several_and_remove_all_configurations(self): |
188 def test_add_several_and_remove_all_configurations(self): |
155 conf = api.Configuration("data/simple.confml") |
189 conf = api.Configuration("data/simple.confml") |
156 layer = api.Configuration("laa") |
190 layer = api.Configuration("laa") |
157 conf._add(layer) |
191 conf.add_configuration(layer) |
158 conf._add(api.Configuration("foo")) |
192 conf.add_configuration(api.Configuration("foo")) |
159 conf._add(api.Configuration("faa")) |
193 conf.add_configuration(api.Configuration("faa")) |
160 for layername in conf.list_configurations(): |
194 for layername in conf.list_configurations(): |
161 conf._remove(layername) |
195 conf.remove_configuration(layername) |
162 |
196 |
163 self.assertTrue(len(conf.list_configurations())==0) |
197 self.assertTrue(len(conf.list_configurations())==0) |
164 |
198 |
165 def test_add_several_and_try_to_remove_not_existing(self): |
199 def test_add_several_and_try_to_remove_not_existing(self): |
166 conf = api.Configuration("data/simple.confml") |
200 conf = api.Configuration("data/simple.confml") |
167 layer = api.Configuration("laa") |
201 layer = api.Configuration("laa") |
168 conf._add(layer) |
202 conf.add_configuration(layer) |
169 conf._add(api.Configuration("foo")) |
203 conf.add_configuration(api.Configuration("foo")) |
170 conf._add(api.Configuration("faa")) |
204 conf.add_configuration(api.Configuration("faa")) |
171 try: |
205 try: |
172 conf._remove("notthere") |
206 conf.remove_configuration("notthere") |
173 self.fail("removing of nonexisting layer succeeds!") |
207 self.fail("removing of nonexisting layer succeeds!") |
174 except exceptions.NotFound: |
208 except exceptions.NotFound: |
175 pass |
209 pass |
176 |
210 |
177 def test_add_view_simple(self): |
211 def test_create_view_simple(self): |
178 conf = api.Configuration("data/simple.confml") |
212 conf = api.Configuration("data/simple.confml") |
179 conf.add_view("view1") |
213 conf.create_view("view1") |
180 view = conf.get_view("view1") |
214 view = conf.get_view("view1") |
181 self.assertEquals(view._list(),[]) |
215 self.assertEquals(view.list_groups(),[]) |
182 |
216 |
183 def test_add_views_and_list_views(self): |
217 def test_create_views_and_list_views(self): |
184 conf = api.Configuration("data/simple.confml") |
218 conf = api.Configuration("data/simple.confml") |
185 conf.add_view("view1") |
219 conf.create_view("view1") |
186 conf.add_view("view2") |
220 conf.create_view("view2") |
187 self.assertEquals(conf.list_views(),['view1','view2']) |
221 self.assertEquals(conf.list_views(),['view1','view2']) |
188 |
222 |
189 def test_add_views_and_remove_one(self): |
223 def test_create_views_and_remove_one(self): |
190 conf = api.Configuration("data/simple.confml") |
224 conf = api.Configuration("data/simple.confml") |
191 conf.add_view("view1") |
225 conf.create_view("view1") |
192 conf.add_view("view2") |
226 conf.create_view("view2") |
193 conf.add_view("view3") |
227 conf.create_view("view3") |
194 conf.remove_view('view2') |
228 conf.remove_view('view2') |
195 self.assertEquals(conf.list_views(),['view1','view3']) |
229 self.assertEquals(conf.list_views(),['view1','view3']) |
196 |
230 |
197 def test_add_views_and_remove_invalid(self): |
231 def test_create_views_and_remove_invalid(self): |
198 conf = api.Configuration("data/simple.confml") |
232 conf = api.Configuration("data/simple.confml") |
199 conf.add_view("view1") |
233 conf.create_view("view1") |
200 conf.add_view("view2") |
234 conf.create_view("view2") |
201 conf.add_view("view3") |
235 conf.create_view("view3") |
202 try: |
236 try: |
203 conf.remove_view('invalid') |
237 conf.remove_view('invalid') |
204 self.fail('Removing invalid view succeeds!') |
238 self.fail('Removing invalid view succeeds!') |
205 except exceptions.NotFound: |
239 except exceptions.NotFound: |
206 pass |
240 pass |
207 |
241 |
208 def test_add_views_and_remove_all(self): |
242 def test_create_views_and_remove_all(self): |
209 conf = api.Configuration("data/simple.confml") |
243 conf = api.Configuration("data/simple.confml") |
210 conf.add_view("view1") |
244 conf.create_view("view1") |
211 conf.add_view("view2") |
245 conf.create_view("view2") |
212 conf.add_view("view3") |
246 conf.create_view("view3") |
213 for view in conf.list_views(): |
247 for view in conf.list_views(): |
214 conf.remove_view(view) |
248 conf.remove_view(view) |
215 self.assertEquals(conf.list_views(),[]) |
249 self.assertEquals(conf.list_views(),[]) |
216 |
250 |
217 def test_add_view_with_data(self): |
251 def test_create_view_with_data(self): |
218 conf = api.Configuration("data/simple.confml") |
252 conf = api.Configuration("data/simple.confml") |
219 conf.add_view("view1") |
253 conf.create_view("view1") |
220 view = conf.get_view("view1") |
254 view = conf.get_view("view1") |
221 view._add(api.Group("group1")) |
255 view.add_group(api.Group("group1")) |
222 view._add(api.Group("group2")) |
256 view.add_group(api.Group("group2")) |
223 view._add(api._FeatureProxy("feature1")) |
257 view.create_featurelink("feature1") |
224 view.group1._add(api.Group("group21")) |
258 view.group1.add_group(api.Group("group21")) |
225 view.group1.group21._add(api._FeatureProxy("feature211")) |
259 view.group1.group21.create_featurelink("feature211") |
226 view.group1.group21._add(api._FeatureProxy("feature212")) |
260 view.group1.group21.create_featurelink("feature212") |
227 view.feature1._add(api._FeatureProxy("feature11")) |
|
228 |
261 |
229 self.assertEquals(sorted(view._list_traverse()), |
262 self.assertEquals(sorted(view._list_traverse()), |
230 sorted(['group1', |
263 sorted(['group1', |
231 'group2', |
264 'group1.group21', |
232 'feature1', |
265 'group1.group21.link_feature211', |
233 'group1.group21', |
266 'group1.group21.link_feature212', |
234 'group1.group21.feature211', |
267 'group2', |
235 'group1.group21.feature212', |
268 'link_feature1'])) |
236 'feature1.feature11'])) |
|
237 |
269 |
238 def test_get_default_view(self): |
270 def test_get_default_view(self): |
239 conf = api.Configuration("data/simple.confml") |
271 conf = api.Configuration("data/simple.confml") |
240 dview = conf.get_default_view() |
272 dview = conf.get_default_view() |
241 self.assertEquals(dview.ref,'_default_view') |
273 self.assertEquals(dview.ref,'?default_view') |
|
274 |
|
275 def test_create_configuration_and_features(self): |
|
276 conf = api.Configuration("data/simple.confml") |
|
277 fea = conf.create_feature("test") |
|
278 self.assertEquals(conf.get_feature('test'), fea) |
|
279 fea = conf.create_feature("test1", name="test name") |
|
280 self.assertEquals(conf.get_feature('test1').name, 'test name') |
|
281 fea.create_feature("subfea", name="subfea name") |
|
282 self.assertEquals(conf.list_all_features(), ['test','test1','test1.subfea']) |
242 |
283 |
243 def test_get_default_view_and_data_to_it(self): |
284 def test_get_default_view_and_data_to_it(self): |
244 conf = api.Configuration("data/simple.confml") |
285 conf = api.Configuration("data/simple.confml") |
245 view = conf.get_default_view() |
286 view = conf.get_default_view() |
246 view._add(api.Group("group1")) |
287 view._add(api.Group("group1")) |
327 # def test_add_feature_namespace(self): |
368 # def test_add_feature_namespace(self): |
328 # conf = api.Configuration("test","com.nokia") |
369 # conf = api.Configuration("test","com.nokia") |
329 # conf.add_feature(api.Feature("feature1")) |
370 # conf.add_feature(api.Feature("feature1")) |
330 # self.assertEquals(conf.list_all_features(),['com.nokia.feature1']) |
371 # self.assertEquals(conf.list_all_features(),['com.nokia.feature1']) |
331 # self.assertEquals(conf.feature1, conf.get_default_view().com.nokia.feature1._obj) |
372 # self.assertEquals(conf.feature1, conf.get_default_view().com.nokia.feature1._obj) |
|
373 def test_get_path_for_parent(self): |
|
374 conf = api.Configuration("test.confml") |
|
375 conf.create_configuration("foo/root.confml") |
|
376 conf.get_configuration("foo/root.confml").create_configuration("confml/jee.confml") |
|
377 self.assertEquals(conf.get_path_for_parent(None), "test.confml") |
|
378 self.assertEquals(conf.get_configuration("foo/root.confml").get_path_for_parent(None), "foo/root.confml") |
|
379 foo = conf.get_configuration("foo/root.confml") |
|
380 jee = foo.get_configuration("confml/jee.confml") |
|
381 self.assertEquals(foo.get_path_for_parent(conf), "foo/root.confml") |
|
382 self.assertEquals(jee.get_path_for_parent(conf), "foo/confml/jee.confml") |
|
383 self.assertEquals(jee.get_path_for_parent(foo._obj), "confml/jee.confml") |
|
384 |
332 |
385 |
333 def test_add_subconfiguration(self): |
386 def test_add_subconfiguration(self): |
334 conf = api.Configuration("test",namespace="com.nokia") |
387 conf = api.Configuration("test",namespace="com.nokia") |
335 conf.create_configuration("foo/root.confml") |
388 conf.create_configuration("foo/root.confml") |
336 conf.create_configuration("platforms/s60.confml") |
389 conf.create_configuration("platforms/s60.confml") |
|
390 dconf = api.Configuration('confml/data.confml') |
|
391 sconf = conf.get_configuration('foo/root.confml') |
|
392 sconf.add_configuration(dconf) |
337 self.assertEquals(conf.list_configurations(),['foo/root.confml', |
393 self.assertEquals(conf.list_configurations(),['foo/root.confml', |
338 'platforms/s60.confml',]) |
394 'platforms/s60.confml',]) |
339 |
395 self.assertEquals(conf.list_all_configurations(),['foo/root.confml', |
|
396 'foo/confml/data.confml', |
|
397 'platforms/s60.confml']) |
|
398 self.assertEquals(conf.get_configuration('foo/root.confml').list_all_configurations(),['confml/data.confml']) |
|
399 |
|
400 |
340 def test_remove_configuration(self): |
401 def test_remove_configuration(self): |
341 conf = api.Configuration("test.confml",namespace="com.nokia") |
402 conf = api.Configuration("test.confml",namespace="com.nokia") |
342 conf.create_configuration("foo/root.confml") |
403 conf.create_configuration("foo/root.confml") |
343 self.assertEquals(conf.list_configurations(),['foo/root.confml']) |
404 self.assertEquals(conf.list_configurations(),['foo/root.confml']) |
344 conf.remove_configuration("foo/root.confml") |
405 conf.remove_configuration("foo/root.confml") |
502 conf.add_feature(api.Feature('feature2')) |
563 conf.add_feature(api.Feature('feature2')) |
503 conf.add_feature(api.Feature('feature3')) |
564 conf.add_feature(api.Feature('feature3')) |
504 conf.add_feature(api.Feature('feature4')) |
565 conf.add_feature(api.Feature('feature4')) |
505 conf.add_feature(api.Feature('feature11'),'feature1') |
566 conf.add_feature(api.Feature('feature11'),'feature1') |
506 conf.add_feature(api.Feature('feature12'),'feature1') |
567 conf.add_feature(api.Feature('feature12'),'feature1') |
507 conf.add_view('fea1') |
568 conf.create_view('fea1') |
508 view1 = conf.get_view('fea1') |
569 view1 = conf.get_view('fea1') |
509 view1.add_group('thegruppe1') |
570 view1.create_group('thegruppe1') |
510 view1.get_group('thegruppe1').add(api.FeatureLink('feature1.feature11')) |
571 view1.get_group('thegruppe1').add(api.FeatureLink('feature1.feature11')) |
511 view1.add(api.FeatureLink('feature1.*')) |
572 view1.add(api.FeatureLink('feature1.*')) |
512 view1.populate() |
573 view1.populate() |
513 self.assertEquals(view1.list_all_features(),['thegruppe1.feature11','feature11','feature12']) |
574 self.assertEquals(view1.list_all_features(), |
514 fpr = view1.get_feature('thegruppe1.feature11') |
575 ['thegruppe1.proxy_feature1_feature11', |
|
576 'proxy_feature1_feature11', |
|
577 'proxy_feature1_feature12']) |
|
578 fpr = view1.get_feature('thegruppe1.proxy_feature1_feature11') |
515 self.assertEquals(fpr._obj.fqr,conf.get_default_view().get_feature('feature1.feature11').fqr) |
579 self.assertEquals(fpr._obj.fqr,conf.get_default_view().get_feature('feature1.feature11').fqr) |
516 self.assertEquals(view1.list_all_features(), ['thegruppe1.feature11','feature11','feature12']) |
580 self.assertEquals(view1.list_all_features(), |
|
581 ['thegruppe1.proxy_feature1_feature11', |
|
582 'proxy_feature1_feature11', |
|
583 'proxy_feature1_feature12']) |
517 |
584 |
518 def test_add_features_and_create_all_view_with_links(self): |
585 def test_add_features_and_create_all_view_with_links(self): |
519 conf = api.Configuration("foo/foo.confml") |
586 conf = api.Configuration("foo/foo.confml") |
520 conf.add_feature(api.Feature('feature1')) |
587 conf.add_feature(api.Feature('feature1')) |
521 conf.add_feature(api.Feature('feature2')) |
588 conf.add_feature(api.Feature('feature2')) |
522 conf.add_feature(api.Feature('feature3')) |
589 conf.add_feature(api.Feature('feature3')) |
523 conf.add_feature(api.Feature('feature4')) |
590 conf.add_feature(api.Feature('feature4')) |
524 conf.add_feature(api.Feature('feature11'),'feature1') |
591 conf.add_feature(api.Feature('feature11'),'feature1') |
525 conf.add_feature(api.Feature('feature12'),'feature1') |
592 conf.add_feature(api.Feature('feature12'),'feature1') |
526 conf.add_view("all") |
593 conf.create_view("all") |
527 view1 = conf.get_view('all') |
594 view1 = conf.get_view('all') |
528 view1.add(api.FeatureLink('**')) |
595 view1.add(api.FeatureLink('**')) |
529 view1.populate() |
596 view1.populate() |
530 self.assertEquals(view1.list_all_features(),['feature1', 'feature11', 'feature12', 'feature2', 'feature3', 'feature4']) |
597 self.assertEquals(view1.list_all_features(), |
531 fpr = view1.get_feature('feature11') |
598 ['proxy_feature1', |
|
599 'proxy_feature1_feature11', |
|
600 'proxy_feature1_feature12', |
|
601 'proxy_feature2', |
|
602 'proxy_feature3', |
|
603 'proxy_feature4']) |
|
604 fpr = view1.get_feature('proxy_feature1_feature11') |
532 self.assertEquals(fpr._obj.fqr,conf.get_default_view().get_feature('feature1.feature11').fqr) |
605 self.assertEquals(fpr._obj.fqr,conf.get_default_view().get_feature('feature1.feature11').fqr) |
533 |
606 |
534 def test_add_a_configuration_and_remove_it(self): |
607 def test_add_a_configuration_and_remove_it(self): |
535 conf = api.Configuration("simple.confml") |
608 conf = api.Configuration("simple.confml") |
536 conf.add_configuration(api.Configuration("confml/data.confml")) |
609 conf.add_configuration(api.Configuration("confml/data.confml")) |
584 conf.add_data(api.Data(fqr='feature1.feature12', value="test")) |
657 conf.add_data(api.Data(fqr='feature1.feature12', value="test")) |
585 self.assertEquals(conf.get_data('feature1.feature12').get_value(),"test") |
658 self.assertEquals(conf.get_data('feature1.feature12').get_value(),"test") |
586 self.assertEquals(conf.data.feature1.feature12.get_value(),"test") |
659 self.assertEquals(conf.data.feature1.feature12.get_value(),"test") |
587 conf.remove_data('feature1.feature12') |
660 conf.remove_data('feature1.feature12') |
588 self.assertEquals(conf.list_datas(), ['feature1']) |
661 self.assertEquals(conf.list_datas(), ['feature1']) |
|
662 |
|
663 def test_add_data_to_configuration_from_list(self): |
|
664 def check(data_objs, policy, expected): |
|
665 conf = api.Configuration("foo/foo.confml") |
|
666 conf.add_data(api.Data(ref='base1', value="foo")) |
|
667 conf.add_data(api.Data(ref='foo', value="foobar")) |
|
668 conf.add_data(api.Data(ref='base2', value="bar")) |
|
669 |
|
670 if policy is None: |
|
671 conf.add_data(data_objs) |
|
672 else: |
|
673 conf.add_data(data_objs, policy=policy) |
|
674 |
|
675 actual = [] |
|
676 for d in conf._traverse(type=api.Data): |
|
677 actual.append((d.fqr, d.value)) |
|
678 self.assertEquals(actual, expected) |
|
679 |
|
680 # Adding an empty list should do nothing |
|
681 check(data_objs = [], |
|
682 policy = None, |
|
683 expected = [('base1', 'foo'), |
|
684 ('foo', 'foobar'), |
|
685 ('base2', 'bar')]) |
|
686 |
|
687 # Default policy (replace) |
|
688 check(data_objs = [api.Data(ref="foo", value="1"), |
|
689 api.Data(ref="foo", value="2"), |
|
690 api.Data(ref="foo", value="3"),], |
|
691 policy = None, |
|
692 expected = [('base1', 'foo'), |
|
693 ('foo', '1'), |
|
694 ('foo', '2'), |
|
695 ('foo', '3'), |
|
696 ('base2', 'bar')]) |
|
697 |
|
698 # Replace explicitly |
|
699 check(data_objs = [api.Data(ref="foo", value="1"), |
|
700 api.Data(ref="foo", value="2"), |
|
701 api.Data(ref="foo", value="3"),], |
|
702 policy = api.container.REPLACE, |
|
703 expected = [('base1', 'foo'), |
|
704 ('foo', '1'), |
|
705 ('foo', '2'), |
|
706 ('foo', '3'), |
|
707 ('base2', 'bar')]) |
|
708 |
|
709 # Append |
|
710 check(data_objs = [api.Data(ref="foo", value="1"), |
|
711 api.Data(ref="foo", value="2"), |
|
712 api.Data(ref="foo", value="3"),], |
|
713 policy = api.container.APPEND, |
|
714 expected = [('base1', 'foo'), |
|
715 ('foo', 'foobar'), |
|
716 ('foo', '1'), |
|
717 ('foo', '2'), |
|
718 ('foo', '3'), |
|
719 ('base2', 'bar')]) |
|
720 |
|
721 # Prepend |
|
722 check(data_objs = [api.Data(ref="foo", value="1"), |
|
723 api.Data(ref="foo", value="2"), |
|
724 api.Data(ref="foo", value="3"),], |
|
725 policy = api.container.PREPEND, |
|
726 expected = [('base1', 'foo'), |
|
727 ('foo', '1'), |
|
728 ('foo', '2'), |
|
729 ('foo', '3'), |
|
730 ('foo', 'foobar'), |
|
731 ('base2', 'bar')]) |
589 |
732 |
590 def test_set_data_to_configuration(self): |
733 def test_set_data_to_configuration(self): |
591 conf = api.Configuration("foo/foo.confml") |
734 conf = api.Configuration("foo/foo.confml") |
592 conf.add_data(api.Data(fqr='feature1', value=123)) |
735 conf.add_data(api.Data(fqr='feature1', value=123)) |
593 self.assertEquals(conf.get_data('feature1').get_value(),123) |
736 self.assertEquals(conf.get_data('feature1').get_value(),123) |
829 self.assertEquals(root2.get_default_view().feature1.get_value(), "test1") |
970 self.assertEquals(root2.get_default_view().feature1.get_value(), "test1") |
830 self.assertEquals(root2.get_default_view().feature2.get_value(), 2) |
971 self.assertEquals(root2.get_default_view().feature2.get_value(), 2) |
831 self.assertEquals(root2.get_default_view().feature1.feature11.get_value(), "testing11") |
972 self.assertEquals(root2.get_default_view().feature1.feature11.get_value(), "testing11") |
832 |
973 |
833 self.assertEquals([data.find_parent(type=api.Configuration).get_path() for data in root2.get_all_datas()], |
974 self.assertEquals([data.find_parent(type=api.Configuration).get_path() for data in root2.get_all_datas()], |
834 ['foo/test.confml', 'foo/test.confml', 'layer2.confml','layer2.confml']) |
975 ['test', 'test', 'layer2','layer2']) |
835 |
976 |
836 def test_access_via_configuration_proxy(self): |
977 def test_access_via_configuration_proxy(self): |
837 conf = api.Configuration("root.confml") |
978 conf = api.Configuration("root.confml") |
838 conf.add_feature(api.Feature("feature1")) |
979 conf.add_feature(api.Feature("feature1")) |
839 proxy = api.ConfigurationProxy("root.confml") |
980 proxy = api.ConfigurationProxy("root.confml") |
840 proxy.set('_obj',conf) |
981 proxy._set_obj(conf) |
841 self.assertEquals(proxy.get_ref(), 'root_confml') |
982 self.assertEquals(proxy.get_ref(), 'root_confml') |
842 self.assertEquals(proxy.get_path(), 'root.confml') |
983 self.assertEquals(proxy.get_path(), 'root.confml') |
843 self.assertEquals(conf.feature1.get_ref(), 'feature1') |
984 self.assertEquals(conf.feature1.get_ref(), 'feature1') |
844 self.assertEquals(proxy.feature1.get_ref(), 'feature1') |
985 self.assertEquals(proxy.feature1.get_ref(), 'feature1') |
845 |
986 |
846 |
987 |
|
988 class TestConfigurationInclude(unittest.TestCase): |
|
989 class StoreTestInt(object): |
|
990 def load(self, ref): |
|
991 return api.Configuration(ref) |
|
992 |
|
993 def dump(self, obj, ref): |
|
994 pass |
|
995 |
|
996 def get_store_interface(self): |
|
997 return TestConfigurationInclude.StoreTestInt() |
|
998 |
|
999 def _test_include(self): |
|
1000 inc = api.Include("foo/bar.txt", self.get_store_interface()) |
|
1001 objs =inc._objects() |
|
1002 self.assertEquals(len(objs),1) |
|
1003 self.assertEquals(objs[0].path,"foo/bar.txt") |
|
1004 |
|
1005 def test_include_clone(self): |
|
1006 inc = api.Include("foo/bar.txt", store_interface=self.get_store_interface()) |
|
1007 ci = inc._clone() |
|
1008 self.assertEquals(inc.ref, ci.ref) |
|
1009 self.assertEquals(inc.get_path(), ci.get_path()) |
|
1010 |
|
1011 # def test_configuration_with_include(self): |
|
1012 # conf = api.Configuration("foo.confml") |
|
1013 # # Set the get_store_interface function to test stub method |
|
1014 # conf.get_store_interface = self.get_store_interface |
|
1015 # conf.include_configuration("foo/test.confml") |
|
1016 # subconfs = conf.list_configurations() |
|
1017 # self.assertEquals(len(subconfs),1) |
|
1018 # self.assertTrue(isinstance(subconfs[0], api.Configuration)) |
|
1019 # self.assertEquals(subconfs[0].path,"foo/test.confml") |
|
1020 |
847 if __name__ == '__main__': |
1021 if __name__ == '__main__': |
848 unittest.main() |
1022 unittest.main() |
849 |
1023 |
850 """ |
1024 """ |
851 {'Configuration': {'dict': {'path': 'root.confml', 'ref': 'root', 'namespace': '', 'desc': ''}, 'children': [{'Configuration': {'dict': {'path': 'foo/layer1.confml', 'ref': 'foo_layer1', 'namespace': '', 'desc': ''}, 'children': [{'Configuration': {'dict': {'path': 'foo/test.confml', 'ref': 'foo_test', 'namespace': '', 'desc': ''}, 'children': [{'Feature': {'dict': {'ref': 'feature1'}, 'children': [{'Feature': {'dict': {'ref': 'feature11'}}}, {'Feature': {'dict': {'ref': 'feature12'}}}]}}, {'Feature': {'dict': {'ref': 'feature2'}}}, {'DataContainer': {'dict': {'ref': 'data'}, 'children': [{'Data': {'dict': {'ref': 'feature1', 'value': 1}}}, {'Data': {'dict': {'ref': 'feature2', 'value': 2}}}]}}]}}]}}, {'Configuration': {'dict': {'path': 'layer2.confml', 'ref': 'layer2', 'namespace': '', 'desc': ''}}}]}} |
1025 {'Configuration': {'dict': {'path': 'root.confml', 'ref': 'root', 'namespace': '', 'desc': ''}, 'children': [{'Configuration': {'dict': {'path': 'foo/layer1.confml', 'ref': 'foo_layer1', 'namespace': '', 'desc': ''}, 'children': [{'Configuration': {'dict': {'path': 'foo/test.confml', 'ref': 'foo_test', 'namespace': '', 'desc': ''}, 'children': [{'Feature': {'dict': {'ref': 'feature1'}, 'children': [{'Feature': {'dict': {'ref': 'feature11'}}}, {'Feature': {'dict': {'ref': 'feature12'}}}]}}, {'Feature': {'dict': {'ref': 'feature2'}}}, {'DataContainer': {'dict': {'ref': 'data'}, 'children': [{'Data': {'dict': {'ref': 'feature1', 'value': 1}}}, {'Data': {'dict': {'ref': 'feature2', 'value': 2}}}]}}]}}]}}, {'Configuration': {'dict': {'path': 'layer2.confml', 'ref': 'layer2', 'namespace': '', 'desc': ''}}}]}} |
852 """ |
1026 """ |