This revision was automatically updated to reflect the committed changes. Closed by commit rL275782: [test] Report error when inferior test processes exit with a non-zero code (authored by labath).
Changed prior to commit: https://reviews.llvm.org/D22404?vs=64115&id=64297#toc https://reviews.llvm.org/D22404 Files: lldb/trunk/packages/Python/lldbsuite/test/dosep.py lldb/trunk/packages/Python/lldbsuite/test/test_runner/process_control.py Index: lldb/trunk/packages/Python/lldbsuite/test/test_runner/process_control.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/test_runner/process_control.py +++ lldb/trunk/packages/Python/lldbsuite/test/test_runner/process_control.py @@ -246,33 +246,25 @@ def is_exceptional_exit(self, popen_status): """Returns whether the program exit status is exceptional. - Returns whether the return code from a Popen process is exceptional - (e.g. signals on POSIX systems). - - Derived classes should override this if they can detect exceptional - program exit. + Returns whether the return code from a Popen process is exceptional. @return True if the given popen_status represents an exceptional program exit; False otherwise. """ - return False + return popen_status != 0 def exceptional_exit_details(self, popen_status): """Returns the normalized exceptional exit code and a description. Given an exceptional exit code, returns the integral value of the - exception (e.g. signal number for POSIX) and a description (e.g. - signal name on POSIX) for the result. - - Derived classes should override this if they can detect exceptional - program exit. + exception and a description for the result. - It is fine to not implement this so long as is_exceptional_exit() - always returns False. + Derived classes can override this if they want to want custom + exceptional exit code handling. @return (normalized exception code, symbolic exception description) """ - raise Exception("exception_exit_details() called on unsupported class") + return (popen_status, "exit") class UnixProcessHelper(ProcessHelper): @@ -397,16 +389,15 @@ def soft_terminate_signals(self): return [signal.SIGQUIT, signal.SIGTERM] - def is_exceptional_exit(self, popen_status): - return popen_status < 0 - @classmethod def _signal_names_by_number(cls): return dict( (k, v) for v, k in reversed(sorted(signal.__dict__.items())) if v.startswith('SIG') and not v.startswith('SIG_')) def exceptional_exit_details(self, popen_status): + if popen_status >= 0: + return (popen_status, "exit") signo = -popen_status signal_names_by_number = self._signal_names_by_number() signal_name = signal_names_by_number.get(signo, "") Index: lldb/trunk/packages/Python/lldbsuite/test/dosep.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/dosep.py +++ lldb/trunk/packages/Python/lldbsuite/test/dosep.py @@ -109,13 +109,14 @@ with output_lock: if not (RESULTS_FORMATTER and RESULTS_FORMATTER.is_using_terminal()): print(file=sys.stderr) - print(output, file=sys.stderr) if timeout: timeout_str = " (TIMEOUT)" else: timeout_str = "" print("[%s FAILED]%s" % (name, timeout_str), file=sys.stderr) print("Command invoked: %s" % ' '.join(command), file=sys.stderr) + print("Command stderr:\n", output[1], file=sys.stderr) + print("Command stdout:\n", output[0], file=sys.stderr) update_progress(name) @@ -210,7 +211,7 @@ # only stderr does. report_test_pass(self.file_name, output[1]) else: - report_test_failure(self.file_name, command, output[1], was_timeout) + report_test_failure(self.file_name, command, output, was_timeout) # Save off the results for the caller. self.results = (
Index: lldb/trunk/packages/Python/lldbsuite/test/test_runner/process_control.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/test_runner/process_control.py +++ lldb/trunk/packages/Python/lldbsuite/test/test_runner/process_control.py @@ -246,33 +246,25 @@ def is_exceptional_exit(self, popen_status): """Returns whether the program exit status is exceptional. - Returns whether the return code from a Popen process is exceptional - (e.g. signals on POSIX systems). - - Derived classes should override this if they can detect exceptional - program exit. + Returns whether the return code from a Popen process is exceptional. @return True if the given popen_status represents an exceptional program exit; False otherwise. """ - return False + return popen_status != 0 def exceptional_exit_details(self, popen_status): """Returns the normalized exceptional exit code and a description. Given an exceptional exit code, returns the integral value of the - exception (e.g. signal number for POSIX) and a description (e.g. - signal name on POSIX) for the result. - - Derived classes should override this if they can detect exceptional - program exit. + exception and a description for the result. - It is fine to not implement this so long as is_exceptional_exit() - always returns False. + Derived classes can override this if they want to want custom + exceptional exit code handling. @return (normalized exception code, symbolic exception description) """ - raise Exception("exception_exit_details() called on unsupported class") + return (popen_status, "exit") class UnixProcessHelper(ProcessHelper): @@ -397,16 +389,15 @@ def soft_terminate_signals(self): return [signal.SIGQUIT, signal.SIGTERM] - def is_exceptional_exit(self, popen_status): - return popen_status < 0 - @classmethod def _signal_names_by_number(cls): return dict( (k, v) for v, k in reversed(sorted(signal.__dict__.items())) if v.startswith('SIG') and not v.startswith('SIG_')) def exceptional_exit_details(self, popen_status): + if popen_status >= 0: + return (popen_status, "exit") signo = -popen_status signal_names_by_number = self._signal_names_by_number() signal_name = signal_names_by_number.get(signo, "") Index: lldb/trunk/packages/Python/lldbsuite/test/dosep.py =================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/dosep.py +++ lldb/trunk/packages/Python/lldbsuite/test/dosep.py @@ -109,13 +109,14 @@ with output_lock: if not (RESULTS_FORMATTER and RESULTS_FORMATTER.is_using_terminal()): print(file=sys.stderr) - print(output, file=sys.stderr) if timeout: timeout_str = " (TIMEOUT)" else: timeout_str = "" print("[%s FAILED]%s" % (name, timeout_str), file=sys.stderr) print("Command invoked: %s" % ' '.join(command), file=sys.stderr) + print("Command stderr:\n", output[1], file=sys.stderr) + print("Command stdout:\n", output[0], file=sys.stderr) update_progress(name) @@ -210,7 +211,7 @@ # only stderr does. report_test_pass(self.file_name, output[1]) else: - report_test_failure(self.file_name, command, output[1], was_timeout) + report_test_failure(self.file_name, command, output, was_timeout) # Save off the results for the caller. self.results = (
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits