@@ -637,8 +637,7 @@ def pytest_runtest_setup(self, item):
637
637
else :
638
638
ignore_regexes = self .config .getini ('qt_log_ignore' )
639
639
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 ()
642
641
643
642
@pytest .mark .hookwrapper
644
643
def pytest_runtest_makereport (self , item , call ):
@@ -682,8 +681,7 @@ def pytest_runtest_makereport(self, item, call):
682
681
long_repr .addsection ('Captured Qt messages' ,
683
682
'\n ' .join (lines ))
684
683
685
- qInstallMsgHandler (item .qt_previous_handler )
686
- del item .qt_previous_handler
684
+ item .qt_log_capture ._stop ()
687
685
del item .qt_log_capture
688
686
689
687
@@ -700,6 +698,25 @@ class _QtMessageCapture(object):
700
698
def __init__ (self , ignore_regexes ):
701
699
self ._records = []
702
700
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 ()
703
720
704
721
_Context = namedtuple ('_Context' , 'file function line' )
705
722
0 commit comments