15 # |
15 # |
16 |
16 |
17 import unittest |
17 import unittest |
18 import os |
18 import os |
19 import logging |
19 import logging |
20 import __init__ |
20 |
21 from cone.public import * |
21 from cone.public import api, plugin, rules |
22 ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) |
22 ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) |
23 |
23 |
24 |
24 |
25 |
25 |
26 class TestPluginImplContainer(unittest.TestCase): |
26 class TestPluginImplContainer(unittest.TestCase): |
27 class ImplTest(plugin.ImplBase): |
27 class ImplTest(plugin.ImplBase): |
28 def __init__(self,ref,configuration): |
28 def __init__(self,ref,configuration): |
29 plugin.ImplBase.__init__(self,ref,configuration) |
29 plugin.ImplBase.__init__(self,ref,configuration) |
30 self.generate_invoked = False |
30 self.generate_invoked = False |
|
31 self.output_created = False |
31 self.refs = ["dummy1.too"] |
32 self.refs = ["dummy1.too"] |
32 self.output_files = [] |
33 self.output_files = ['foo/test.txt'] |
|
34 self.context = None |
33 def generate(self, context=None): |
35 def generate(self, context=None): |
34 self.generate_invoked = True |
36 self.generate_invoked = True |
35 if context and hasattr(context, 'objects'): |
37 if context: |
36 context.objects.append(self) |
38 for outfile in self.list_output_files(): |
37 |
39 context.add_file(outfile, implementation=self) |
|
40 |
38 def get_refs(self): |
41 def get_refs(self): |
39 return self.refs |
42 return self.refs |
40 |
43 |
41 def list_output_files(self): |
44 def list_output_files(self): |
42 return self.output_files |
45 return self.output_files |
43 |
46 |
|
47 def get_outputs(self): |
|
48 """ |
|
49 Return a list of GenerationOutput objets as a list. |
|
50 """ |
|
51 outputs = [] |
|
52 phase = None |
|
53 if self.context: phase = self.context.phase |
|
54 for outfile in self.list_output_files(): |
|
55 outputs.append( plugin.GenerationOutput(outfile,self,type='file', phase=phase) ) |
|
56 return outputs |
|
57 |
44 def test_impl_container_add(self): |
58 def test_impl_container_add(self): |
45 container = plugin.ImplContainer("norm", None) |
59 container = plugin.ImplContainer("norm", None) |
46 imp1 = plugin.ImplBase("implml/test.content",None) |
60 imp1 = plugin.ImplBase("implml/test.content",None) |
47 imp2a = plugin.ImplBase("implml/copy:21.content",None) |
61 imp2a = plugin.ImplBase("implml/copy:21.content",None) |
48 imp2b = plugin.ImplBase("implml/copy:24.content",None) |
62 imp2b = plugin.ImplBase("implml/copy:24.content",None) |
60 imp2b = plugin.ImplBase("implml/sub.implml:24.content",None) |
74 imp2b = plugin.ImplBase("implml/sub.implml:24.content",None) |
61 subcontainer.append(imp2a) |
75 subcontainer.append(imp2a) |
62 subcontainer.append(imp2b) |
76 subcontainer.append(imp2b) |
63 container.append(subcontainer) |
77 container.append(subcontainer) |
64 self.assertEquals(container.get_all_implementations(),[imp1,imp2a,imp2b]) |
78 self.assertEquals(container.get_all_implementations(),[imp1,imp2a,imp2b]) |
65 for sub in container: |
|
66 print sub |
|
67 self.assertEquals(container.impls, [imp1,subcontainer]) |
79 self.assertEquals(container.impls, [imp1,subcontainer]) |
68 container[0] = subcontainer |
80 container[0] = subcontainer |
69 self.assertEquals(container.impls, [subcontainer,subcontainer]) |
81 self.assertEquals(container.impls, [subcontainer,subcontainer]) |
70 del container[0] |
82 del container[0] |
71 self.assertEquals(container.impls, [subcontainer]) |
83 self.assertEquals(container.impls, [subcontainer]) |
72 |
84 |
73 def test_impl_container_with_condition(self): |
85 def test_impl_container_with_condition(self): |
|
86 logger = logging.getLogger('cone') |
|
87 ch = logging.StreamHandler() |
|
88 ch.setLevel(logging.DEBUG) |
|
89 logger.addHandler(ch) |
74 context = plugin.GenerationContext() |
90 context = plugin.GenerationContext() |
75 context.configuration = api.Configuration() |
91 context.configuration = api.Configuration() |
76 context.configuration.add_feature(api.Feature("test")) |
92 context.configuration.add_feature(api.Feature("test")) |
77 context.configuration.add_feature(api.Feature("stringsub"),"test") |
93 context.configuration.add_feature(api.Feature("stringsub"),"test") |
78 context.configuration.add_feature(api.Feature("intsub"),"test") |
94 context.configuration.add_feature(api.Feature("intsub"),"test") |
93 self.assertFalse(imp1.generate_invoked) |
109 self.assertFalse(imp1.generate_invoked) |
94 |
110 |
95 imp1.generate_invoked = False |
111 imp1.generate_invoked = False |
96 condition = rules.SimpleCondition("${test}", "false") |
112 condition = rules.SimpleCondition("${test}", "false") |
97 container.condition = condition |
113 container.condition = condition |
98 container.append(imp1) |
|
99 container.generate(context) |
114 container.generate(context) |
100 self.assertTrue(imp1.generate_invoked) |
115 self.assertTrue(imp1.generate_invoked) |
101 imp1.generate_invoked = False |
116 imp1.generate_invoked = False |
102 context.configuration.get_default_view().test.value = True |
117 context.configuration.get_default_view().test.value = True |
103 container.generate(context) |
118 container.generate(context) |
104 self.assertFalse(imp1.generate_invoked) |
119 self.assertFalse(imp1.generate_invoked) |
105 |
120 |
|
121 imp1.generate_invoked = False |
|
122 condition = rules.SimpleCondition("${test.intsub}", "1") |
|
123 container.condition = condition |
|
124 container.append(imp1) |
|
125 container.generate(context) |
|
126 self.assertFalse(imp1.generate_invoked) |
|
127 context.configuration.get_default_view().test.intsub.value = 1 |
|
128 container.generate(context) |
|
129 self.assertTrue(imp1.generate_invoked) |
|
130 |
106 |
131 |
107 def test_impl_container_generate(self): |
132 def test_impl_container_generate(self): |
108 container = plugin.ImplContainer("norm", None) |
133 container = plugin.ImplContainer("norm", None) |
109 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
134 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
110 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
135 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
125 subcontainer = plugin.ImplContainer("sub", None) |
150 subcontainer = plugin.ImplContainer("sub", None) |
126 container.append(imp1) |
151 container.append(imp1) |
127 container.append(imp2a) |
152 container.append(imp2a) |
128 container.append(imp2b) |
153 container.append(imp2b) |
129 container.append(subcontainer) |
154 container.append(subcontainer) |
130 self.assertEquals(container.get_tags(), {}) |
155 self.assertEquals(container.get_tags(), None) |
|
156 self.assertEquals(container.get_child_tags(), {}) |
131 container.set_tags({'test':['foobar']}) |
157 container.set_tags({'test':['foobar']}) |
132 self.assertEquals(container.get_tags(), {'test':['foobar']}) |
158 self.assertEquals(container.get_tags(), None) |
|
159 self.assertEquals(container.get_child_tags(), {}) |
133 imp1.set_tags({'foo':['bar']}) |
160 imp1.set_tags({'foo':['bar']}) |
134 self.assertEquals(container.get_tags(), {'test':['foobar'], |
161 self.assertEquals(container.get_child_tags(), {'foo':['bar']}) |
135 'foo':['bar']}) |
162 self.assertEquals(container.get_tags(), None) |
136 imp2a.set_tags({'test':['bar'], 'one' :['more']}) |
163 imp2a.set_tags({'test':['bar'], 'foo' :['more']}) |
137 |
164 self.assertEquals(container.get_child_tags(), {'foo':['bar', 'more'], 'test': ['bar']}) |
138 self.assertEquals(container.get_tags(), {'test':['foobar', 'bar'], |
165 |
139 'foo':['bar'], |
166 self.assertEquals(container.get_tags(), None) |
140 'one' :['more']}) |
|
141 subcontainer.set_tags({'test':['bar1']}) |
167 subcontainer.set_tags({'test':['bar1']}) |
142 self.assertEquals(container.get_tags(), {'test':['foobar', 'bar', 'bar1'], |
168 self.assertEquals(container.get_tags(), None) |
143 'foo':['bar'], |
|
144 'one' :['more']}) |
|
145 |
169 |
146 def test_impl_container_get_phase(self): |
170 def test_impl_container_get_phase(self): |
147 container = plugin.ImplContainer("norm", None) |
171 container = plugin.ImplContainer("norm", None) |
148 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
172 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
149 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
173 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
152 container.append(subcontainer1) |
176 container.append(subcontainer1) |
153 subcontainer1.append(imp1) |
177 subcontainer1.append(imp1) |
154 subcontainer1.append(imp2a) |
178 subcontainer1.append(imp2a) |
155 subcontainer1.append(imp2b) |
179 subcontainer1.append(imp2b) |
156 subcontainer1.set_invocation_phase("normal") |
180 subcontainer1.set_invocation_phase("normal") |
157 self.assertEquals(container.invocation_phase(), ["normal"]) |
181 self.assertEquals(container.invocation_phase(), "normal") |
158 imp1.set_invocation_phase('pre') |
182 imp1.set_invocation_phase('pre') |
159 self.assertEquals(container.invocation_phase(), ["normal"]) |
183 self.assertEquals(container.invocation_phase(), "normal") |
160 subcontainer2 = plugin.ImplContainer("norm", None) |
184 subcontainer2 = plugin.ImplContainer("norm", None) |
161 subimp = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
185 subimp = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
162 subimp.set_invocation_phase('post') |
186 subimp.set_invocation_phase('post') |
163 subcontainer2.append(subimp) |
187 subcontainer2.append(subimp) |
164 subcontainer2.set_invocation_phase('post') |
188 subcontainer2.set_invocation_phase('post') |
165 container.append(subcontainer2) |
189 container.append(subcontainer2) |
166 self.assertEquals(container.invocation_phase(), ['post','normal']) |
190 self.assertEquals(container.invocation_phase(), 'normal') |
167 |
191 |
168 def test_impl_container_get_refs(self): |
192 def test_impl_container_get_refs(self): |
169 container = plugin.ImplContainer("norm", None) |
193 container = plugin.ImplContainer("norm", None) |
170 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
194 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
171 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
195 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
172 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
196 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
173 container.append(imp1) |
197 container.append(imp1) |
174 container.append(imp2a) |
198 container.append(imp2a) |
175 container.append(imp2b) |
199 container.append(imp2b) |
176 self.assertEquals(container.get_refs(), ["dummy1.too"]) |
200 self.assertEquals(container.get_refs(), None) |
|
201 self.assertEquals(container.get_child_refs(), ['dummy1.too']) |
177 imp2b.refs = ['dummy2.foo'] |
202 imp2b.refs = ['dummy2.foo'] |
178 self.assertEquals(container.get_refs(), ["dummy1.too", |
203 self.assertEquals(container.get_refs(), None) |
179 "dummy2.foo",]) |
204 self.assertEquals(container.get_child_refs(), ['dummy1.too', 'dummy2.foo']) |
|
205 imp2b.refs = None |
|
206 self.assertEquals(container.get_refs(), None) |
|
207 self.assertEquals(container.get_child_refs(), ['dummy1.too']) |
180 |
208 |
181 def test_impl_container_list_output_files(self): |
209 def test_impl_container_list_output_files(self): |
182 container = plugin.ImplContainer("norm", None) |
210 container = plugin.ImplContainer("norm", None) |
183 subcontainer = plugin.ImplContainer("norm", None) |
211 subcontainer = plugin.ImplContainer("norm", None) |
184 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
212 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
186 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
214 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
187 container.append(subcontainer) |
215 container.append(subcontainer) |
188 subcontainer.append(imp1) |
216 subcontainer.append(imp1) |
189 subcontainer.append(imp2a) |
217 subcontainer.append(imp2a) |
190 subcontainer.append(imp2b) |
218 subcontainer.append(imp2b) |
191 self.assertEquals(container.list_output_files(), []) |
219 self.assertEquals(container.list_output_files(), ['foo/test.txt']) |
192 imp2b.output_files= ['output/dummy2.txt'] |
220 imp2b.output_files= ['output/dummy2.txt'] |
193 self.assertEquals(container.list_output_files(), ['output/dummy2.txt']) |
221 self.assertEquals(container.list_output_files(), ['foo/test.txt', 'output/dummy2.txt']) |
194 imp1.output_files= ['output/foobar/hee.txt'] |
222 imp1.output_files= ['output/foobar/hee.txt'] |
195 self.assertEquals(container.list_output_files(), ['output/foobar/hee.txt', |
223 self.assertEquals(container.list_output_files(), ['output/foobar/hee.txt', |
|
224 'foo/test.txt', |
196 'output/dummy2.txt']) |
225 'output/dummy2.txt']) |
197 |
226 |
|
227 def test_impl_container_get_outputs(self): |
|
228 container = plugin.ImplContainer("norm", None) |
|
229 subcontainer = plugin.ImplContainer("norm", None) |
|
230 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
|
231 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
|
232 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
|
233 container.append(subcontainer) |
|
234 subcontainer.append(imp1) |
|
235 subcontainer.append(imp2a) |
|
236 subcontainer.append(imp2b) |
|
237 self.assertEquals(len(container.get_outputs()), 3) |
|
238 self.assertEquals(container.get_outputs()[0].name, 'foo/test.txt') |
|
239 self.assertEquals(container.get_outputs()[1].name, 'foo/test.txt') |
|
240 self.assertEquals(container.get_outputs()[2].name, 'foo/test.txt') |
|
241 imp2b.output_files= ['foobar.txt','output/dummy2.txt'] |
|
242 self.assertEquals(len(container.get_outputs()),4) |
|
243 self.assertEquals(container.get_outputs()[0].name, 'foo/test.txt') |
|
244 self.assertEquals(container.get_outputs()[1].name, 'foo/test.txt') |
|
245 self.assertEquals(container.get_outputs()[2].name, 'foobar.txt') |
|
246 |
|
247 |
198 def test_impl_container_set_output_root(self): |
248 def test_impl_container_set_output_root(self): |
199 container = plugin.ImplContainer("norm", None) |
249 container = plugin.ImplContainer("norm", None) |
200 subcontainer = plugin.ImplContainer("norm", None) |
250 subcontainer = plugin.ImplContainer("norm", None) |
201 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
251 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
202 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
252 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
203 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
253 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
204 container.append(subcontainer) |
254 container.append(subcontainer) |
205 subcontainer.append(imp1) |
255 subcontainer.append(imp1) |
206 subcontainer.append(imp2a) |
256 subcontainer.append(imp2a) |
207 subcontainer.append(imp2b) |
257 subcontainer.append(imp2b) |
208 self.assertEquals(imp1.get_output_root(), 'output') |
258 self.assertEquals(imp1.get_output_root(), '') |
209 container.set_output_root('foobar/test') |
259 container.set_output_root('foobar/test') |
210 self.assertEquals(imp1.get_output_root(), 'foobar/test') |
260 self.assertEquals(imp1.get_output_root(), 'foobar/test') |
211 |
261 |
212 def test_impl_container_sub_container_generate(self): |
262 def test_impl_container_sub_container_generate(self): |
213 container = plugin.ImplContainer("norm", None) |
263 container = plugin.ImplContainer("norm", None) |
236 subcontainer.append(imp2a) |
286 subcontainer.append(imp2a) |
237 subcontainer.append(imp2b) |
287 subcontainer.append(imp2b) |
238 container.append(subcontainer) |
288 container.append(subcontainer) |
239 self.assertEquals(container.impls, [imp1,subcontainer]) |
289 self.assertEquals(container.impls, [imp1,subcontainer]) |
240 context = plugin.GenerationContext() |
290 context = plugin.GenerationContext() |
241 context.objects = [] |
291 container.generate(context) |
242 container.generate(context) |
292 self.assertTrue(imp1.generate_invoked) |
243 self.assertTrue(imp1.generate_invoked) |
293 self.assertTrue(imp2a.generate_invoked) |
244 self.assertTrue(imp2a.generate_invoked) |
294 self.assertTrue(imp2a.generate_invoked) |
245 self.assertTrue(imp2a.generate_invoked) |
295 self.assertEquals(sorted(context.executed_impls), sorted([imp1,imp2a,imp2b])) |
246 self.assertEquals(len(context.objects), 3) |
|
247 self.assertEquals(context.objects, [imp1,imp2a,imp2b]) |
|
248 |
296 |
249 def test_impl_container_generate_with_generation_contexts_tags(self): |
297 def test_impl_container_generate_with_generation_contexts_tags(self): |
250 container = plugin.ImplContainer("norm", None) |
298 container = plugin.ImplContainer("norm", None) |
251 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
299 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
252 subcontainer1 = plugin.ImplContainer("implml/sub1.implml", None) |
300 subcontainer1 = plugin.ImplContainer("implml/sub1.implml", None) |
253 subcontainer1.append(imp1) |
301 subcontainer1.append(imp1) |
254 |
302 |
255 subcontainer2 = plugin.ImplContainer("implml/sub2.implml", None) |
303 subcontainer2 = plugin.ImplContainer("implml/sub2.implml", None) |
256 subcontainer2.set_tags({'target': ['rofs3','uda']}) |
304 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
257 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
305 imp2a.set_tags({'target': ['rofs3','uda']}) |
258 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
306 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
|
307 imp2b.set_tags({'target': ['rofs3','uda']}) |
259 subcontainer2.append(imp2a) |
308 subcontainer2.append(imp2a) |
260 subcontainer2.append(imp2b) |
309 subcontainer2.append(imp2b) |
261 container.append(subcontainer1) |
310 container.append(subcontainer1) |
262 container.append(subcontainer2) |
311 container.append(subcontainer2) |
263 |
312 |
264 context = plugin.GenerationContext() |
313 context = plugin.GenerationContext() |
265 context.tags = {'target': ['rofs3'], 'foobar' :['test']} |
314 context.tags = {'target': ['rofs3'], 'foobar' :['test']} |
266 context.objects = [] |
315 container.generate(context) |
267 container.generate(context) |
316 self.assertFalse(imp1.generate_invoked) |
268 self.assertFalse(imp1.generate_invoked) |
317 self.assertTrue(imp2a.generate_invoked) |
269 self.assertTrue(imp2a.generate_invoked) |
318 self.assertTrue(imp2a.generate_invoked) |
270 self.assertTrue(imp2a.generate_invoked) |
319 self.assertEquals(sorted(context.executed_impls), sorted([imp2a,imp2b])) |
271 self.assertEquals(len(context.objects), 2) |
|
272 self.assertEquals(context.objects, [imp2a,imp2b]) |
|
273 |
320 |
274 def test_impl_container_generate_with_generation_phase(self): |
321 def test_impl_container_generate_with_generation_phase(self): |
275 container = plugin.ImplContainer("norm", None) |
322 container = plugin.ImplContainer("norm", None) |
276 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
323 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
277 subcontainer1 = plugin.ImplContainer("implml/sub1.implml", None) |
324 subcontainer1 = plugin.ImplContainer("implml/sub1.implml", None) |
278 subcontainer1.append(imp1) |
325 subcontainer1.append(imp1) |
279 |
326 |
280 subcontainer2 = plugin.ImplContainer("implml/sub2.implml", None) |
327 subcontainer2 = plugin.ImplContainer("implml/sub2.implml", None) |
281 subcontainer2.set_invocation_phase("post") |
328 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
282 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
329 imp2a.set_invocation_phase("post") |
283 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
330 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
|
331 imp2b.set_invocation_phase("post") |
284 subcontainer2.append(imp2a) |
332 subcontainer2.append(imp2a) |
285 subcontainer2.append(imp2b) |
333 subcontainer2.append(imp2b) |
286 container.append(subcontainer1) |
334 container.append(subcontainer1) |
287 container.append(subcontainer2) |
335 container.append(subcontainer2) |
288 |
336 |
|
337 context = plugin.GenerationContext(output='') |
|
338 context.phase = "post" |
|
339 container.generate(context) |
|
340 self.assertFalse(imp1.generate_invoked) |
|
341 self.assertTrue(imp2a.generate_invoked) |
|
342 self.assertTrue(imp2a.generate_invoked) |
|
343 self.assertEquals(sorted(context.executed_impls), sorted([imp2a,imp2b])) |
|
344 self.assertEquals(context.executed_impls[0].list_output_files(), ['foo/test.txt']) |
|
345 self.assertEquals(len(context.generation_output), 2) |
|
346 self.assertEquals(context.generation_output[0].name, 'foo/test.txt') |
|
347 self.assertEquals(str(context.generation_output[0]), "GenerationOutput(foo/test.txt, ImplTest(ref='implml/copy:21.content', type=None, lineno=None))") |
|
348 self.assertEquals(str(context.generation_output[1]), "GenerationOutput(foo/test.txt, ImplTest(ref='implml/copy:24.content', type=None, lineno=None))") |
|
349 self.assertEquals(context.generation_output[0].implementation, imp2a) |
|
350 |
|
351 def test_impl_container_generate_dry_run(self): |
|
352 container = plugin.ImplContainer("norm", None) |
|
353 imp1 = TestPluginImplContainer.ImplTest("implml/test.content",None) |
|
354 container.append(imp1) |
|
355 subcontainer = plugin.ImplContainer("implml/sub.implml", None) |
|
356 imp2a = TestPluginImplContainer.ImplTest("implml/copy:21.content",None) |
|
357 imp2b = TestPluginImplContainer.ImplTest("implml/copy:24.content",None) |
|
358 subcontainer.append(imp2a) |
|
359 subcontainer.append(imp2b) |
|
360 container.append(subcontainer) |
|
361 self.assertEquals(container.impls, [imp1,subcontainer]) |
289 context = plugin.GenerationContext() |
362 context = plugin.GenerationContext() |
290 context.phase = "post" |
363 context.dry_run= True |
291 context.objects = [] |
364 container.generate(context) |
292 container.generate(context) |
365 self.assertFalse(imp1.generate_invoked) |
293 self.assertFalse(imp1.generate_invoked) |
366 self.assertFalse(imp2a.generate_invoked) |
294 self.assertTrue(imp2a.generate_invoked) |
367 self.assertFalse(imp2a.generate_invoked) |
295 self.assertTrue(imp2a.generate_invoked) |
368 self.assertEquals(sorted(context.executed_impls), sorted([imp1, imp2a,imp2b])) |
296 self.assertEquals(len(context.objects), 2) |
369 self.assertEquals(context.executed_impls[0].list_output_files(), ['foo/test.txt']) |
297 self.assertEquals(context.objects, [imp2a,imp2b]) |
370 self.assertEquals(len(context.generation_output), 0) |
298 |
371 |