pykd

Форк
0
/
excepttest.py 
45 строк · 1.6 Кб
1
"""Exception event test"""
2

3
import unittest
4
import target
5
import pykd
6
import testutils
7

8

9
class ExceptionTest(unittest.TestCase):
10
    """Exception event test"""
11

12
    def testExceptionHandler(self):
13

14
        class ExceptionHandler(pykd.eventHandler):
15
           def __init__(self):
16
               pykd.eventHandler.__init__(self)
17

18
           def onException(self, exceptInfo):
19
                self.exceptInfo = exceptInfo
20
                return pykd.eventResult.Break
21

22
        processId = pykd.startProcess( target.appPath + " exception" )
23
        with testutils.ContextCallIt( testutils.KillProcess(processId) ) as killStartedProcess :
24
            exceptionHandler = ExceptionHandler()
25

26
            self.assertEqual( pykd.Break, pykd.go() )
27
            self.assertEqual( 0xC0000005, exceptionHandler.exceptInfo.exceptionCode) #0xC0000005 = Access violation
28

29
    def testSecondChance(self):
30

31
        class ExceptionHandler(pykd.eventHandler):
32
           def __init__(self):
33
               pykd.eventHandler.__init__(self)
34

35
           def onException(self, exceptInfo):
36
                self.exceptInfo = exceptInfo
37
                return pykd.eventResult.Proceed
38

39
        processId = pykd.startProcess( target.appPath + " exception" )
40
        with testutils.ContextCallIt( testutils.KillProcess(processId) ) as killStartedProcess :
41
            exceptionHandler = ExceptionHandler()
42
            self.assertEqual( pykd.Break, pykd.go() )
43
            self.assertEqual( True, exceptionHandler.exceptInfo.firstChance)
44
            self.assertEqual( pykd.Break, pykd.go() )
45
            self.assertEqual( False, exceptionHandler.exceptInfo.firstChance)
46

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.