From c7aa4f4217d7663c052fb8f688bc173323efc24f Mon Sep 17 00:00:00 2001 From: knj Date: Fri, 12 Jan 2024 18:22:51 +0100 Subject: [PATCH] pass up number of runtime errors for overall return value --- scripts/IvasBuildAndRunChecks.py | 8 +++++--- scripts/pyivastest/IvasModeAnalyzer.py | 10 ++++++++-- scripts/pyivastest/IvasSvnBuilder.py | 7 ++++++- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/scripts/IvasBuildAndRunChecks.py b/scripts/IvasBuildAndRunChecks.py index 523eee3a98..78e836eaa7 100755 --- a/scripts/IvasBuildAndRunChecks.py +++ b/scripts/IvasBuildAndRunChecks.py @@ -173,8 +173,10 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript): if self.args["rebuild"] == True: br.force_build = True + checks_ret_val = list() for check in checks: - br.run(check) + ret_val = br.run(check) + checks_ret_val.append(ret_val) if self.args["create_html_output"]: cmd = ["git", "rev-parse", "HEAD"] commit_hash = subprocess.run(cmd, capture_output=True).stdout.decode("utf8") @@ -199,11 +201,11 @@ class IvasBuildAndRunChecks(IvasScriptsCommon.IvasScript): ) returncode = 0 - for check in checks: + for check, ret_val in zip(checks, checks_ret_val): runner = br.build_and_run_dict[check]["runner"] failed_encs = runner.failed_modes["enc"] failed_decs = runner.failed_modes["dec"] - if len(failed_encs) > 0 or len(failed_decs) > 0: + if len(failed_encs) > 0 or len(failed_decs) > 0 or ret_val != 0: returncode = RET_CODE_FAILURE return returncode diff --git a/scripts/pyivastest/IvasModeAnalyzer.py b/scripts/pyivastest/IvasModeAnalyzer.py index 7e6d40b2e5..01980fcbe7 100644 --- a/scripts/pyivastest/IvasModeAnalyzer.py +++ b/scripts/pyivastest/IvasModeAnalyzer.py @@ -759,6 +759,8 @@ class IvasModeAnalyzer(IvasModeCollector): if num_total_errors == 0: self.logger.console("{} reports no errors".format(self.check), logging.INFO) + return num_total_errors + def get_valgrind_errors(self): total_vg_errors = 0 @@ -799,12 +801,16 @@ class IvasModeAnalyzer(IvasModeCollector): ), logging.ERROR, ) + return build_errors def get_errors(self, failed_modes): """ """ - self.get_build_errors() + n_build_err = self.get_build_errors() + n_run_err = 0 if self.check in ["CLANG1", "CLANG2", "CLANG3", "VALGRIND"]: - self.get_run_errors(failed_modes) + n_run_err = self.get_run_errors(failed_modes) + + return n_build_err, n_run_err def set_select_list(self, select_list): self.log_select_list = select_list diff --git a/scripts/pyivastest/IvasSvnBuilder.py b/scripts/pyivastest/IvasSvnBuilder.py index a6c7825ebe..a935ae4e8f 100644 --- a/scripts/pyivastest/IvasSvnBuilder.py +++ b/scripts/pyivastest/IvasSvnBuilder.py @@ -1112,9 +1112,14 @@ class IvasBuilderAndRunner(IvasBaseClass): self.build_and_run_dict[cfg_name]["runner"].dir_name = run_dir self.build_and_run_dict[cfg_name]["analyzer"].dir = run_dir self.build_and_run_dict[cfg_name]["runner"].run() + + ret_val = 0 if self.build_and_run_dict[cfg_name]["analyzer"].get_errors: failed_modes = self.build_and_run_dict[cfg_name]["runner"].failed_modes - self.build_and_run_dict[cfg_name]["analyzer"].get_errors(failed_modes) + _, n_runtime_err = self.build_and_run_dict[cfg_name]["analyzer"].get_errors(failed_modes) + ret_val = int(n_runtime_err > 0) + + return ret_val def get_run_errors(self, cfg_name): """ -- GitLab