MCPcopy Index your code
hub / github.com/python/cpython / check_register

Method check_register

Lib/test/test_faulthandler.py:724–803  ·  view source on GitHub ↗

Register a handler displaying the traceback on a user signal. Raise the signal and check the written traceback. If chain is True, check that the previous signal handler is called. Raise an error if the output doesn't match the expected format.

(self, filename=False, all_threads=False,
                       unregister=False, chain=False, fd=None)

Source from the content-addressed store, hash-verified

722 @unittest.skipIf(not hasattr(faulthandler, "register"),
723 "need faulthandler.register")
724 def check_register(self, filename=False, all_threads=False,
725 unregister=False, chain=False, fd=None):
726 """
727 Register a handler displaying the traceback on a user signal. Raise the
728 signal and check the written traceback.
729
730 If chain is True, check that the previous signal handler is called.
731
732 Raise an error if the output doesn't match the expected format.
733 """
734 signum = signal.SIGUSR1
735 code = """
736 import faulthandler
737 import os
738 import signal
739 import sys
740
741 all_threads = {all_threads}
742 signum = {signum:d}
743 unregister = {unregister}
744 chain = {chain}
745 filename = {filename!r}
746 fd = {fd}
747
748 def func(signum):
749 os.kill(os.getpid(), signum)
750
751 def handler(signum, frame):
752 handler.called = True
753 handler.called = False
754
755 if filename:
756 file = open(filename, "wb")
757 elif fd is not None:
758 file = sys.stderr.fileno()
759 else:
760 file = None
761 if chain:
762 signal.signal(signum, handler)
763 faulthandler.register(signum, file=file,
764 all_threads=all_threads, chain={chain})
765 if unregister:
766 faulthandler.unregister(signum)
767 func(signum)
768 if chain and not handler.called:
769 if file is not None:
770 output = file
771 else:
772 output = sys.stderr
773 print("Error: signal handler not called!", file=output)
774 exitcode = 1
775 else:
776 exitcode = 0
777 if filename:
778 file.close()
779 sys.exit(exitcode)
780 """
781 code = code.format(

Callers 6

test_registerMethod · 0.95
test_unregisterMethod · 0.95
test_register_fileMethod · 0.95
test_register_fdMethod · 0.95
test_register_threadsMethod · 0.95
test_register_chainMethod · 0.95

Calls 7

get_outputMethod · 0.95
expected_tracebackFunction · 0.85
assertRegexMethod · 0.80
assertNotEqualMethod · 0.80
formatMethod · 0.45
joinMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected