@@ -637,8 +637,7 @@ def pytest_runtest_setup(self, item):
637637 else :
638638 ignore_regexes = self .config .getini ('qt_log_ignore' )
639639 item .qt_log_capture = _QtMessageCapture (ignore_regexes )
640- previous_handler = qInstallMsgHandler (item .qt_log_capture ._handle )
641- item .qt_previous_handler = previous_handler
640+ item .qt_log_capture ._start ()
642641
643642 @pytest .mark .hookwrapper
644643 def pytest_runtest_makereport (self , item , call ):
@@ -682,8 +681,7 @@ def pytest_runtest_makereport(self, item, call):
682681 long_repr .addsection ('Captured Qt messages' ,
683682 '\n ' .join (lines ))
684683
685- qInstallMsgHandler (item .qt_previous_handler )
686- del item .qt_previous_handler
684+ item .qt_log_capture ._stop ()
687685 del item .qt_log_capture
688686
689687
@@ -700,6 +698,25 @@ class _QtMessageCapture(object):
700698 def __init__ (self , ignore_regexes ):
701699 self ._records = []
702700 self ._ignore_regexes = ignore_regexes or []
701+ self ._previous_handler = None
702+
703+ def _start (self ):
704+ self ._previous_handler = qInstallMsgHandler (self ._handle )
705+
706+ def _stop (self ):
707+ qInstallMsgHandler (self ._previous_handler )
708+
709+ @contextmanager
710+ def disabled (self ):
711+ """
712+ Context manager that temporarily disables logging capture while
713+ inside it.
714+ """
715+ self ._stop ()
716+ try :
717+ yield
718+ finally :
719+ self ._start ()
703720
704721 _Context = namedtuple ('_Context' , 'file function line' )
705722
0 commit comments