diff --git a/scripts/IvasBuildAndRunChecks.py b/scripts/IvasBuildAndRunChecks.py index 523eee3a980d2879dada4cc241fa5dc4668e8d8e..78e836eaa747e21e14aa0b3e3c4cb9644c09ddc4 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 7e6d40b2e588a1cf33d0a2f0eb1ce71eeb78b3e4..01980fcbe7f4404e2735b5644106f6f82da43044 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 a6c7825ebe7548a939b402ab368cea3bce71fdfb..a935ae4e8f345bd8a60bbd409390d0efe9aade36 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): """