From a1a164c2b081f6ae44508828fd749d04b6b21026 Mon Sep 17 00:00:00 2001 From: Ulrich Date: Fri, 26 May 2023 23:09:17 +0200 Subject: [PATCH] bugfixe of searches --- basic/message.py | 2 ++ basic/toolHandling.py | 2 +- model/application.py | 14 ++++++++-- model/component.py | 20 ++++--------- model/constants.py | 0 model/entity.py | 4 +-- model/factory.py | 22 +++++++++++++++ test/test_10job.py | 57 ++++++++++++++++++++++++++++++++++++-- test/test_20application.py | 2 +- tools/config_tool.py | 2 +- tools/git_tool.py | 4 +-- 11 files changed, 102 insertions(+), 27 deletions(-) create mode 100644 model/constants.py create mode 100644 model/factory.py diff --git a/basic/message.py b/basic/message.py index 304fc75..64aa9db 100644 --- a/basic/message.py +++ b/basic/message.py @@ -218,6 +218,8 @@ class Message: """ out = 0 job = self.job + if not hasattr(job, "par"): + return out if comp is not None and hasattr(job.par, "component") and comp.name in getattr(job.par, "component"): out += 2 if tool != "" and hasattr(job.par, "tool") and tool in getattr(job.par, "tool"): diff --git a/basic/toolHandling.py b/basic/toolHandling.py index 653ee67..12c6064 100644 --- a/basic/toolHandling.py +++ b/basic/toolHandling.py @@ -6,7 +6,7 @@ # --------------------------------------------------------------------------------------------------------- import importlib import os -import basic.program +# import basic.program import basic.constants as B # ------------------------------------------------- import tools.config_tool diff --git a/model/application.py b/model/application.py index fff4fd4..2f0cc1d 100644 --- a/model/application.py +++ b/model/application.py @@ -2,10 +2,13 @@ # Author : Ulrich Carmesin # Source : gitea.ucarmesin.de # --------------------------------------------------------------------------------------------------------- +print("is importing module.app") + import os import basic.toolHandling import basic.constants as B import model.entity +import model.constants as M import tools.data_const as D import tools.path_const as P import tools.config_tool @@ -13,9 +16,9 @@ import tools.file_tool import tools.git_tool TABLE_NAMES = ["application", "ap_project", "ap_component"] -STORAGES = [model.entity.STORAGE_FILE, model.entity.STORAGE_DB] +STORAGES = [ M.STORAGE_FILE, M.STORAGE_DB ] """ used storage in priority sortage, so: if file then read_fcts / if db then select-fcts """ -DEFAULT_SYNC = model.entity.SYNC_FULL_GIT2DB +DEFAULT_SYNC = M.SYNC_FULL_GIT2DB TABLE_NAME = B.SUBJECT_APP """ system-name for this entity """ @@ -38,6 +41,7 @@ UNIQUE_FIELDS = [FIELD_NAME] """ unique business field as human identifer """ IDENTIFYER_FIELDS = [FIELD_ID] """ unique technical field as technical identifer """ +print("has imported module.app") def getProjects(job): """ @@ -129,6 +133,7 @@ def searchApplications(job, projectList, appl): def syncEnitity(job, elem): return syncEnitities(job) +import model.entity def syncEnitities(job): """ synchronize the configuration with the database @@ -225,6 +230,8 @@ def insertEntities(job,applData, dbTime, dbi): ao.read_entity(job, app) ao.insertEntity(dbi) + + class Application(model.entity.Entity): table = "application" name = "" @@ -233,6 +240,9 @@ class Application(model.entity.Entity): components = {} project = {} + def __int__(self, job): + self.job = job + def read_unique_names(self, job, project, application, gran, args): """ reads the entity-names from file-storage diff --git a/model/component.py b/model/component.py index 79d1aeb..8cd0f02 100644 --- a/model/component.py +++ b/model/component.py @@ -6,8 +6,7 @@ import os import basic.toolHandling import basic.constants as B import model.entity -import model.application -# from model.Entity import Entity +import model.factory import tools.data_const as D import tools.path_const as P import tools.config_tool as config_tool @@ -21,12 +20,12 @@ TABLE_NAME = "component" """ system-name for this entity """ FIELD_ID = "coid" FIELD_NAME = D.FIELD_NAME -FIELD_DISCRIPTION = B.SUBJECT_DESCRIPTION +FIELD_DESCRIPTION = B.SUBJECT_DESCRIPTION FIELD_REFERENCE = B.SUBJECT_REFERENCE FIELD_ATTRIBUTES = B.NODE_ATTRIBUTES FIELD_PROJECT = B.SUBJECT_PROJECT FIELD_APPLICATION = B.SUBJECT_APP -LIST_FIELDS = [FIELD_ID, FIELD_NAME, FIELD_DISCRIPTION, FIELD_REFERENCE] +LIST_FIELDS = [FIELD_ID, FIELD_NAME, FIELD_DESCRIPTION, FIELD_REFERENCE] """ list of object-attributes """ CP_SUBJECT_COMPS = "components" @@ -88,21 +87,12 @@ class Component(model.entity.Entity): :param opt. args additional args :return: list of entity-names """ - outList = [] # suche weiterleiten if application != "": - app = model.application.Application() - + app = model.factory.getApplication() return list(app.components.keys()) path = os.path.join(job.conf[B.SUBJECT_PATH][B.ATTR_PATH_COMPS]) - for k in os.listdir(path): - if k[:1] in [".", "_"]: - continue - if k in [P.KEY_CATALOG, P.KEY_TOOL, P.VAL_CONFIG, P.VAL_TEST, P.VAL_TOOLS]: - continue - if not os.path.isdir(os.path.join(path, k)): - continue - outList.append(k) + outList = self.getDirlist(job, path, "csv") return outList def read_entity(self, job, name): diff --git a/model/constants.py b/model/constants.py new file mode 100644 index 0000000..e69de29 diff --git a/model/entity.py b/model/entity.py index 8d0760a..4cad92c 100644 --- a/model/entity.py +++ b/model/entity.py @@ -2,7 +2,7 @@ import getpass import os import re import basic.toolHandling -import model.entity +# import model.entity import tools.data_const as D import tools.path_const as P import basic.constants as B @@ -34,7 +34,7 @@ STORAGE_FILE = B.TOPIC_NODE_FILE LIST_ENTITY_SYNC = [SYNC_ONLY_GIT, SYNC_FULL_GIT2DB, SYNC_HEAD_GIT2DB, SYNC_COPY_FILE2DB, SYNC_ONLY_DB] - +print("is importing module.entity") def getEntityValue(job, field, gitcommit): if field == ENTITY_INS_COMMIT: return "" diff --git a/model/factory.py b/model/factory.py new file mode 100644 index 0000000..85711d0 --- /dev/null +++ b/model/factory.py @@ -0,0 +1,22 @@ +import model.entity + + +def getEnvironment(job=None): + import model.environment + return model.environment.Environment(job) + +def getApplication(job=None): + import model.application + return model.application.Application() + +def getComponent(job=None): + import model.component + return model.component.Component(job) + +def getTestsuite(job=None, project="", application=""): + import model.testsuite + return model.testsuite.Testsuite(job, project) + +def getTestcase(job=None, project="", application=""): + import model.testcase + return model.testcase.Testcase(job, project) diff --git a/test/test_10job.py b/test/test_10job.py index 852c5d6..fd154db 100644 --- a/test/test_10job.py +++ b/test/test_10job.py @@ -2,7 +2,18 @@ import unittest import os import inspect import shutil - +print("start import 1") +#import model.entity +print("start import 2") +#import model.environment +print("start import 3") +#import model.application +print("start import 4") +#import model.component +print("start import 5") +import model.testcase +import model.testsuite +import model.factory import tools.path_tool import tools.job_tool import basic.program @@ -15,8 +26,10 @@ import tools.file_tool HOME_PATH = test.constants.HOME_PATH PYTHON_CMD = "python" -TEST_FUNCTIONS = ["test_00init", "test_30startActJob"] -TEST_FUNCTIONS = ["test_00init"] +TEST_FUNCTIONS = ["test_00init", + "test_11selectApplication", "test_12selectComponent", "test_13selectEnvironment" + "test_30startActJob"] +TEST_FUNCTIONS = ["test_11selectApplication", "test_12selectComponent", "test_13selectEnvironment"] PROGRAM_NAME = "clean_workspace" @@ -46,6 +59,18 @@ class MyTestCase(unittest.TestCase): self.assertIn("configpath", job.conf) self.assertIn("paths", job.conf) + def test_11selectApplication(self): + global mymsg + actfunction = str(inspect.currentframe().f_code.co_name) + cnttest = 0 + if actfunction not in TEST_FUNCTIONS: + return + # simple job instantiate - without parameter and only simple messaging + job = basic.program.Job(PROGRAM_NAME) + res = tools.job_tool.select_application(job, {}, "TESTPROJ") + self.assertIsInstance(res, list) + print(str(res)) + def test_30startActJob(self): global mymsg actfunction = str(inspect.currentframe().f_code.co_name) @@ -58,5 +83,31 @@ class MyTestCase(unittest.TestCase): args = tools.file_tool.read_file_dict(job, path, job.m) tools.job_tool.start_child_process(job, args) + def test_12selectComponent(self): + global mymsg + actfunction = str(inspect.currentframe().f_code.co_name) + cnttest = 0 + if actfunction not in TEST_FUNCTIONS: + return + # simple job instantiate - without parameter and only simple messaging + job = basic.program.Job(PROGRAM_NAME) + # res = tools.job_tool.select_components(job, {}, "TESTPROJ", "") + res = model.factory.getComponent(job).read_unique_names(job, "TESTPROJ", "", "", {}) + self.assertIsInstance(res, list) + print(str(res)) + + def test_13selectEnvironment(self): + global mymsg + actfunction = str(inspect.currentframe().f_code.co_name) + cnttest = 0 + if actfunction not in TEST_FUNCTIONS: + return + # simple job instantiate - without parameter and only simple messaging + job = basic.program.Job(PROGRAM_NAME) + #res = tools.job_tool.select_components(job, {}, "TESTPROJ", "") + res = model.environment.Environment(job).read_unique_names(job, "TESTPROJ", "", "", {}) + self.assertIsInstance(res, list) + print(str(res)) + if __name__ == '__main__': unittest.main() diff --git a/test/test_20application.py b/test/test_20application.py index f32d1cb..ad59fd0 100644 --- a/test/test_20application.py +++ b/test/test_20application.py @@ -14,7 +14,7 @@ import model.application HOME_PATH = test.constants.HOME_PATH PYTHON_CMD = "python" TEST_FUNCTIONS = ["test_10getEntityNames", "test_12getEntity", "test_10getApplications"] -TEST_FUNCTIONS = ["test_12getEntity"] +#TEST_FUNCTIONS = ["test_12getEntity"] PROGRAM_NAME = "clean_workspace" diff --git a/tools/config_tool.py b/tools/config_tool.py index 6581e48..ec14c6e 100644 --- a/tools/config_tool.py +++ b/tools/config_tool.py @@ -11,7 +11,7 @@ import basic.constants as B try: import basic.program except ImportError: - print("ImportError: " + str(ImportError.with_traceback())) + print("ImportError: " + str(ImportError)) pass import basic.componentHandling import tools.path_tool diff --git a/tools/git_tool.py b/tools/git_tool.py index d52afcb..3b4842c 100644 --- a/tools/git_tool.py +++ b/tools/git_tool.py @@ -9,10 +9,10 @@ import re import subprocess import sys import basic.toolHandling -import utils.data_const as D +import tools.data_const as D import basic.constants as B import basic.text_const as T -import utils.date_tool +import tools.date_tool DEFAULT_CNT_COMMITS = 10 COMMIT_ID = "commit"