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): 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