From d445351dc87c16fbf3a3817b4ab8a89e45407a2b Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Thu, 29 Apr 2010 20:24:03 +0200 Subject: [PATCH] [entropy.server] add new server-side QA test checking keywords metadata --- libraries/entropy/server/interfaces/main.py | 33 +++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/libraries/entropy/server/interfaces/main.py b/libraries/entropy/server/interfaces/main.py index 43b535656..acfc3640d 100644 --- a/libraries/entropy/server/interfaces/main.py +++ b/libraries/entropy/server/interfaces/main.py @@ -805,6 +805,9 @@ class ServerFakeClientSystemSettingsPlugin(SystemSettingsPlugin): class ServerQAInterfacePlugin(QAInterfacePlugin): + def __init__(self, entropy_server_instance): + self._server = entropy_server_instance + def __check_package_using_spm(self, package_path): spm_class = get_spm_class() @@ -816,8 +819,34 @@ class ServerQAInterfacePlugin(QAInterfacePlugin): sys.stderr.flush() return False + def __extract_edb_analyze_metadata(self, package_path): + tmp_f, tmp_fd = tempfile.mkstemp() + os.close(tmp_fd) + + try: + found_edb = entropy.tools.dump_entropy_metadata(package_path, tmp_f) + if not found_edb: + return False + dbc = self._server._open_temp_repository("test", temp_file = tmp_f) + for package_id in dbc.listAllIdpackages(): + keywords = dbc.retrieveKeywords(package_id) + if not keywords: + atom = dbc.retrieveAtom(package_id) + # bit PHAT warning !! + self._server.output(darkred("~"*40), level = "warning") + self._server.output("[%s, %s] %s" % ( + brown(os.path.basename(package_path)), teal(atom), + purple(_("package has no keyword set, it will be masked !"))), + level = "warning", header = darkred(" !!! ")) + self._server.output(darkred("~"*40), level = "warning") + time.sleep(10) + finally: + os.remove(tmp_f) + dbc.closeDB() + def get_tests(self): - return [self.__check_package_using_spm] + return [self.__check_package_using_spm, + self.__extract_edb_analyze_metadata] def get_id(self): return SERVER_QA_PLUGIN @@ -1199,7 +1228,7 @@ class ServerLoadersMixin: @return: Entropy QA Interface instance @rtype: entropy.qa.QAInterface instance """ - qa_plugin = ServerQAInterfacePlugin() + qa_plugin = ServerQAInterfacePlugin(self) qa = _Client.QA(self) qa.add_plugin(qa_plugin) return qa