Ignore:
Timestamp:
01/11/13 17:16:34 (15 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Override sys.excepthook with a custom handler.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/application/tests/test_outputview.py

    r11257 r11258  
     1import sys 
    12import multiprocessing.pool 
    23 
     
    78from ...gui.test import QAppTestCase 
    89 
    9 from ..outputview import OutputView, TextStream 
     10from ..outputview import OutputView, TextStream, ExceptHook 
    1011 
    1112 
     
    109110        self.assertTrue(all(correct)) 
    110111        self.assertTrue(len(correct) == 10000) 
     112 
     113    def test_excepthook(self): 
     114        output = OutputView() 
     115        output.resize(500, 300) 
     116        output.show() 
     117 
     118        red_formater = output.formated(color=Qt.red) 
     119 
     120        red = TextStream() 
     121        red.stream.connect(red_formater.write) 
     122 
     123        hook = ExceptHook(stream=red) 
     124 
     125        def raise_exception(i): 
     126            try: 
     127                if i % 2 == 0: 
     128                    raise ValueError("odd") 
     129                else: 
     130                    raise ValueError("even") 
     131            except Exception: 
     132                # explicitly call hook (Thread class has it's own handler) 
     133                hook(*sys.exc_info()) 
     134 
     135        pool = multiprocessing.pool.ThreadPool(10) 
     136        res = pool.map_async(raise_exception, range(100)) 
     137 
     138        self.app.exec_() 
     139 
     140        res.wait() 
Note: See TracChangeset for help on using the changeset viewer.