Files
Sheerka-Old/tests/TestUsingFileBasedSheerka.py
T
kodjo 87cab44fb8 Fixed #125: SheerkaErrorManager
Fixed #135: Change services service priorities
Fixed #136: ErrorManager: Implement recognize_error
Fixed #137: BNFNodeParser : Error when parsing regex with sub parsers
Fixed #138: get_last_errors(): real errors sources are lost
Fixed #139: OneError return value removes the origin of the error
Fixed #140: Concept variables are not correctly handled when parsing sub expression
Fixed #143: Implement has_unknown_concepts()
2021-10-28 14:04:41 +02:00

65 lines
2.5 KiB
Python

import shutil
from os import path
from conftest import SHEERKA_TEST_FOLDER
from core.global_symbols import EVENT_ONTOLOGY_CREATED
from core.sheerka.Sheerka import Sheerka
from core.sheerka.SheerkaOntologyManager import SheerkaOntologyManager
from tests.BaseTest import BaseTest
class TestUsingFileBasedSheerka(BaseTest):
sheerka = None
context = None
root_ontology_name = SheerkaOntologyManager.ROOT_ONTOLOGY_NAME
ontologies_created = set()
def teardown_method(self, method):
# to do after the test
if TestUsingFileBasedSheerka.sheerka:
while TestUsingFileBasedSheerka.sheerka.om.current_ontology().name != self.root_ontology_name:
ontology = TestUsingFileBasedSheerka.sheerka.pop_ontology(self.context).body.body
ontology.cache_manager.sdp.test_only_destroy_refs()
# remove other created ontologies
for ontology in TestUsingFileBasedSheerka.ontologies_created:
TestUsingFileBasedSheerka.sheerka.om.current_sdp().test_only_destroy_refs(ontology)
TestUsingFileBasedSheerka.ontologies_created.clear()
@staticmethod
def new_sheerka_instance(cache_only=False):
sheerka = Sheerka(cache_only=cache_only)
sheerka.initialize(SHEERKA_TEST_FOLDER,
save_execution_context=False,
enable_process_return_values=False,
enable_process_rules=False)
sheerka.subscribe(EVENT_ONTOLOGY_CREATED, lambda c, o: TestUsingFileBasedSheerka.ontologies_created.add(o))
return sheerka
def get_sheerka(self, **kwargs) -> Sheerka:
cache_only = kwargs.get("cache_only", False)
ontology_name = kwargs.get("ontology", "#unit_test#") or "#unit_test#"
if TestUsingFileBasedSheerka.sheerka is None:
TestUsingFileBasedSheerka.sheerka = self.new_sheerka_instance(False)
TestUsingFileBasedSheerka.context = self.get_context(TestUsingFileBasedSheerka.sheerka)
self.sheerka.push_ontology(self.context, ontology_name, cache_only=cache_only)
return TestUsingFileBasedSheerka.sheerka
@staticmethod
def commit(context):
sheerka = context.sheerka
event = context.event
sheerka.om.save_event(event)
if sheerka.om.is_dirty():
sheerka.om.commit(context)
@staticmethod
def reset_hard_test_env():
if path.exists(SHEERKA_TEST_FOLDER):
shutil.rmtree(SHEERKA_TEST_FOLDER)
TestUsingFileBasedSheerka.sheerka = None