configurationengine/source/plugins/common/ConeRulePlugin/ruleplugin/tests/unittest_rule_plugin_errors.py
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
equal deleted inserted replaced
2:87cfa131b535 3:e7e0ae78773e
    16 
    16 
    17 import unittest
    17 import unittest
    18 import os, shutil
    18 import os, shutil
    19 import sys
    19 import sys
    20 import logging
    20 import logging
    21 import __init__
       
    22 
    21 
    23 from cone.public import exceptions,plugin,api,container
    22 from cone.public import exceptions,plugin,api,container
    24 from cone.storage import filestorage
    23 from cone.storage import filestorage
    25 from ruleplugin import ruleml
    24 from ruleplugin import ruleml
    26 from testautomation.base_testcase import BaseTestCase
    25 from testautomation.base_testcase import BaseTestCase
    56         return [FULL_PATH, handler, logger]
    55         return [FULL_PATH, handler, logger]
    57     
    56     
    58     def _execute_rules(self, project_location):
    57     def _execute_rules(self, project_location):
    59         project = api.Project(api.Storage.open(os.path.join(ROOT_PATH, project_location)))
    58         project = api.Project(api.Storage.open(os.path.join(ROOT_PATH, project_location)))
    60         config = project.get_configuration('root.confml')
    59         config = project.get_configuration('root.confml')
    61         
    60         context = plugin.GenerationContext(configuration=config)
    62         implcontainer = plugin.get_impl_set(config, r'\.ruleml$')
    61         implcontainer = plugin.get_impl_set(config, r'\.ruleml$')
    63         implcontainer.get_relation_container().execute()
    62         implcontainer.get_relation_container().execute(context)
    64         lastconfig = config.get_last_configuration()
    63         lastconfig = config.get_last_configuration()
    65         project.close()
    64         project.close()
    66     
    65     
    67     def test_terminal_expression_repr(self):
    66     def test_terminal_expression_repr(self):
    68         log_file, handler, logger = self._prepare_log('test1.log')
    67         log_file, handler, logger = self._prepare_log('test1.log')
    73 
    72 
    74     def test_invalid_python_code_eval(self):
    73     def test_invalid_python_code_eval(self):
    75         log_file, handler, logger = self._prepare_log('test2.log')
    74         log_file, handler, logger = self._prepare_log('test2.log')
    76         self._execute_rules('errorruleproject/test2')
    75         self._execute_rules('errorruleproject/test2')
    77         logger.removeHandler(handler)
    76         logger.removeHandler(handler)
    78         self.assert_file_contains(log_file, "INFO - cone.ruleml - Set u'EvalTest2.StringResult' = None from '-> this is invalid python code'")
       
    79         self.assert_file_contains(log_file, "WARNING - cone.ruleml - Invalid syntax in eval: -> this is invalid python code")
    77         self.assert_file_contains(log_file, "WARNING - cone.ruleml - Invalid syntax in eval: -> this is invalid python code")
    80         self.assert_file_contains(log_file, "ERROR - cone.ruleml_relation_container(implml/invalid_python_eval.ruleml) - '-> this is invalid python code'")
       
    81 
    78 
    82     def test_invalid_python_code_eval_globals(self):
    79     def test_invalid_python_code_eval_globals(self):
    83         log_file, handler, logger = self._prepare_log('test3.log')
    80         log_file, handler, logger = self._prepare_log('test3.log')
    84         self._execute_rules('errorruleproject/test3')
    81         self._execute_rules('errorruleproject/test3')
    85         logger.removeHandler(handler)
    82         logger.removeHandler(handler)
    94     
    91     
    95     def test_runtime_error_when_running_an_eval_block_inside_rule(self):
    92     def test_runtime_error_when_running_an_eval_block_inside_rule(self):
    96         log_file, handler, logger = self._prepare_log('test5.log')
    93         log_file, handler, logger = self._prepare_log('test5.log')
    97         self._execute_rules('errorruleproject/test5')
    94         self._execute_rules('errorruleproject/test5')
    98         logger.removeHandler(handler)
    95         logger.removeHandler(handler)
    99 
    96         
   100         self.assert_file_contains(log_file, "Execution failed for eval: 7/0 <type 'exceptions.ZeroDivisionError'>: integer division or modulo by zero")
    97         self.assert_file_contains(log_file, "Execution failed for eval: 7/0 <type 'exceptions.ZeroDivisionError'>: integer division or modulo by zero")
   101 
    98 
   102     def test_references_non_existent_settings(self):
    99     def test_references_non_existent_settings(self):
   103         log_file, handler, logger = self._prepare_log('test6.log')
   100         log_file, handler, logger = self._prepare_log('test6.log')
   104         self._execute_rules('errorruleproject/test6')
   101         self._execute_rules('errorruleproject/test6')