33 pass |
31 pass |
34 |
32 |
35 def tearDown(self): |
33 def tearDown(self): |
36 pass |
34 pass |
37 |
35 |
38 class TestRulePluginOnFileStorage(unittest.TestCase): |
36 class TestRulePluginOnFileStorage(BaseTestCase): |
39 def test_get_impl_container(self): |
37 def test_get_impl_container(self): |
40 project = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'ruleproject/rules'))) |
38 project = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'ruleproject/rules'))) |
41 config = project.get_configuration('root.confml') |
39 config = project.get_configuration('root.confml') |
42 implcontainer = plugin.get_impl_set(config, 'ruleml$') |
40 implcontainer = plugin.get_impl_set(config, 'ruleml$') |
43 impl = implcontainer.get_implementations_by_file('implml/rules.ruleml')[0] |
41 impl = implcontainer.get_implementations_by_file('implml/rules.ruleml')[0] |
44 |
42 |
45 self.assertEquals(None, impl.get_refs()) |
43 EXPECTED_REFS = ['imaker.imagetarget', |
|
44 'mms.imagesize', |
|
45 'imakerapi.outputLocationY', |
|
46 'operations.minus', |
|
47 'operations.minus1', |
|
48 'operations.minus4', |
|
49 'operations.minus6', |
|
50 'Foo.Bar'] |
|
51 self.assertEquals(sorted(EXPECTED_REFS), sorted(impl.get_child_refs())) |
46 self.assertEquals([], impl.list_output_files()) |
52 self.assertEquals([], impl.list_output_files()) |
47 |
53 |
48 def test_impl_container_execute_pre_rules(self): |
54 def test_rules_get_refs(self): |
49 project = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'ruleproject/rules'), "a" )) |
55 project = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'ruleproject/rules'), "a" )) |
50 config = project.get_configuration('root.confml') |
56 config = project.get_configuration('root.confml') |
51 |
57 |
52 implcontainer = plugin.get_impl_set(config, 'ruleml$') |
58 implcontainer = plugin.get_impl_set(config, 'ruleml$') |
53 ruleimpl = implcontainer.get_implementations_by_file('implml/container_with_rules.ruleml')[0] |
59 ruleimpl = implcontainer.get_implementations_by_file('implml/container_with_rules.ruleml')[0] |
54 context = plugin.GenerationContext() |
60 self.assertEquals(ruleimpl.get_child_refs(), [u'imakerapi.PRODUCT_NAME', |
|
61 u'imaker.imagetarget']) |
|
62 self.assertEquals(len(ruleimpl.get_outputs()), 8) |
|
63 outputs = [output.name for output in ruleimpl.get_outputs()] |
|
64 self.assertEquals(outputs, [u'imakerapi.PRODUCT_NAME', |
|
65 u'imakerapi.outputLocation', |
|
66 u'StringConcatenationTest.Result1', |
|
67 u'StringConcatenationTest.Result2', |
|
68 u'StringConcatenationTest.Result3', |
|
69 u'StringConcatenationTest.Result4', |
|
70 u'StringConcatenationTest.Result5', |
|
71 u'StringConcatenationTest.Result6']) |
|
72 inputs = [] |
|
73 for output in ruleimpl.get_outputs(): |
|
74 inputs += output.implementation.get_refs() |
|
75 self.assertEquals(inputs, [u'imakerapi.PRODUCT_NAME', |
|
76 u'imaker.imagetarget']) |
|
77 impls_refs = [] |
|
78 for output in ruleimpl.get_outputs(): |
|
79 impls_refs.append("%s <= %s" % (output.name, output.implementation.implml.ref)) |
|
80 self.assertEquals(impls_refs, [u'imakerapi.PRODUCT_NAME <= implml/container_with_rules.ruleml', |
|
81 u'imakerapi.outputLocation <= implml/container_with_rules.ruleml', |
|
82 u'StringConcatenationTest.Result1 <= implml/container_with_rules.ruleml', |
|
83 u'StringConcatenationTest.Result2 <= implml/container_with_rules.ruleml', |
|
84 u'StringConcatenationTest.Result3 <= implml/container_with_rules.ruleml', |
|
85 u'StringConcatenationTest.Result4 <= implml/container_with_rules.ruleml', |
|
86 u'StringConcatenationTest.Result5 <= implml/container_with_rules.ruleml', |
|
87 u'StringConcatenationTest.Result6 <= implml/container_with_rules.ruleml']) |
|
88 |
|
89 |
|
90 def test_impl_container_execute_pre_rules(self): |
|
91 |
|
92 project = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'ruleproject/rules'), "a" )) |
|
93 config = project.get_configuration('root.confml') |
|
94 |
|
95 implcontainer = plugin.get_impl_set(config, 'ruleml$') |
|
96 ruleimpl = implcontainer.get_implementations_by_file('implml/container_with_rules.ruleml')[0] |
|
97 context = plugin.GenerationContext(configuration=config) |
55 context.phase = "pre" |
98 context.phase = "pre" |
56 ruleimpl.generate(context) |
99 ruleimpl.generate(context) |
57 |
100 |
58 lastconfig = config.get_last_configuration() |
101 lastconfig = config.get_last_configuration() |
59 self.assertEquals(lastconfig.get_path(), plugin.AUTOCONFIG_CONFML) |
102 self.assertEquals(lastconfig.get_path(), plugin.AUTOCONFIG_CONFML) |
66 self.assertEquals(lastconfig.get_data('imakerapi.outputLocation').get_ref(),'outputLocation') |
109 self.assertEquals(lastconfig.get_data('imakerapi.outputLocation').get_ref(),'outputLocation') |
67 self.assertEquals(lastconfig.get_data('imakerapi.outputLocation').get_value(),'2') |
110 self.assertEquals(lastconfig.get_data('imakerapi.outputLocation').get_value(),'2') |
68 project.close() |
111 project.close() |
69 |
112 |
70 def test_impl_container_execute_rules(self): |
113 def test_impl_container_execute_rules(self): |
71 project = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'ruleproject/rules'), "a" )) |
114 project = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'ruleproject/rules'), "r" )) |
72 config = project.get_configuration('root.confml') |
115 config = project.get_configuration('root.confml') |
73 |
116 |
74 implcontainer = plugin.get_impl_set(config, 'ruleml$') |
117 implcontainer = plugin.get_impl_set(config, 'ruleml$') |
75 implcontainer.generate() |
118 context = plugin.GenerationContext(configuration=config) |
|
119 implcontainer.generate(context) |
76 |
120 |
77 lastconfig = config.get_last_configuration() |
121 lastconfig = config.get_last_configuration() |
78 self.assertEquals(lastconfig.get_path(), plugin.AUTOCONFIG_CONFML) |
122 self.assertEquals(lastconfig.get_path(), plugin.AUTOCONFIG_CONFML) |
79 self.assertEquals(lastconfig.get_data('imakerapi.outputLocation').get_ref(),'outputLocation') |
123 self.assertEquals(lastconfig.get_data('imakerapi.outputLocation').get_ref(),'outputLocation') |
80 self.assertEquals(lastconfig.get_data('imakerapi.outputLocation').get_value(),'2') |
124 self.assertEquals(lastconfig.get_data('imakerapi.outputLocation').get_value(),'2') |
81 project.close() |
125 project.close() |
|
126 |
|
127 def _prepare_log(self, log_file, level=logging.DEBUG, formatter="%(levelname)s - %(name)s - %(message)s", logger='cone'): |
|
128 FULL_PATH = os.path.join(ROOT_PATH, "temp", log_file) |
|
129 self.remove_if_exists(FULL_PATH) |
|
130 self.create_dir_for_file_path(FULL_PATH) |
82 |
131 |
|
132 handler = logging.FileHandler(FULL_PATH) |
|
133 handler.setLevel(level) |
|
134 frm = logging.Formatter(formatter) |
|
135 handler.setFormatter(frm) |
|
136 logger = logging.getLogger(logger) |
|
137 logger.addHandler(handler) |
|
138 |
|
139 return [FULL_PATH, handler, logger] |
|
140 |
|
141 def test_rule_debug_messages(self): |
|
142 log_file, handler, logger = self._prepare_log('debug_msg_test.log') |
|
143 project = None |
|
144 try: |
|
145 project = api.Project(api.Storage.open(os.path.join(ROOT_PATH,'ruleproject/rules'), "r" )) |
|
146 config = project.get_configuration('root.confml') |
|
147 |
|
148 implcontainer = plugin.get_impl_set(config, r'rules\.ruleml$') |
|
149 context = plugin.GenerationContext(configuration=config) |
|
150 implcontainer.generate(context) |
|
151 |
|
152 self.assert_file_contains(log_file, |
|
153 ["Set imakerapi.outputLocationY = 'hello' from ConfigureRelation(ref='implml/rules.ruleml', lineno=8)", |
|
154 "Set operations.minus = 18 from ConfigureRelation(ref='implml/rules.ruleml', lineno=9)", |
|
155 "Set SequenceTest.Sequence1 = [['foo', 1], ['bar', 2], ['baz', 3]] from ConfigureRelation(ref='implml/rules.ruleml', lineno=23)"]) |
|
156 finally: |
|
157 logger.removeHandler(handler) |
|
158 if project: project.close() |
83 |
159 |
84 if __name__ == '__main__': |
160 if __name__ == '__main__': |
85 unittest.main() |
161 unittest.main() |