Esempio n. 1
0
    def test_raw_traceback(self):
        filename = "my_file"
        co = compile("raise RuntimeError()", filename=filename, mode="exec")
        try:
            eval(co)
            self.fail("Expected an exception.")
        except RuntimeError as e:
            tb = sys.exc_info()[2]
            tblist = exceptions.sanitize_traceback(tb, filename)
        except:
            self.fail("Expected a RuntimeError exception.")

        self.assertEquals(1, len(tblist))
        tb_file, tb_lineno, tb_func, tb_text = tblist[0]
        self.assertEquals("my_file", tb_file)
        self.assertEquals(1, tb_lineno)
        self.assertEquals("<module>", tb_func)
        self.assertEquals(None, tb_text)
Esempio n. 2
0
    def test_multiple_calls_in_file(self):
        filename = "my_file"
        src = """\
        def throw_func():
            raise RuntimeError()
        def func():
            throw_func()
        func()
        """
        src = textwrap.dedent(src)
        co = compile(src, filename=filename, mode="exec")
        globals = {}
        locals = globals
        try:
            eval(co, globals, locals)
            self.fail("Expected an exception.")
        except RuntimeError as e:
            tb = traceback.extract_tb(sys.exc_info()[2])
            self.assertEquals(4, len(tb))
            tblist = exceptions.sanitize_traceback(tb, filename)

        self.assertEquals(3, len(tblist))

        tb_file, tb_lineno, tb_func, tb_text = tblist[0]
        self.assertEquals("my_file", tb_file)
        self.assertEquals(5, tb_lineno)
        self.assertEquals("<module>", tb_func)
        self.assertEquals(None, tb_text)

        tb_file, tb_lineno, tb_func, tb_text = tblist[1]
        self.assertEquals("my_file", tb_file)
        self.assertEquals(4, tb_lineno)
        self.assertEquals("func", tb_func)
        self.assertEquals(None, tb_text)

        tb_file, tb_lineno, tb_func, tb_text = tblist[2]
        self.assertEquals("my_file", tb_file)
        self.assertEquals(2, tb_lineno)
        self.assertEquals("throw_func", tb_func)
        self.assertEquals(None, tb_text)
Esempio n. 3
0
    def test_exception_in_ltdexec_library(self):
        # Check that modules within ltdexec really are stripped when the stack
        # trace is sanitized.
        from ltdexec.dialect.registry import dialects

        filename = "my_file"
        src = """\
        def func():
            return dialects['not_a_dialect_name']  # this raises KeyError

        func()
        """
        src = textwrap.dedent(src)
        co = compile(src, filename=filename, mode="exec")
        globals = {"dialects": dialects}
        locals = globals
        try:
            eval(co, globals, locals)
            self.fail("Expected an exception.")
        except KeyError as e:
            tb = traceback.extract_tb(sys.exc_info()[2])
            self.assertEquals(4, len(tb))
            tblist = exceptions.sanitize_traceback(tb, filename)

        self.assertEquals(2, len(tblist))

        tb_file, tb_lineno, tb_func, tb_text = tblist[0]
        self.assertEquals("my_file", tb_file)
        self.assertEquals(4, tb_lineno)
        self.assertEquals("<module>", tb_func)
        self.assertEquals(None, tb_text)

        tb_file, tb_lineno, tb_func, tb_text = tblist[1]
        self.assertEquals("my_file", tb_file)
        self.assertEquals(2, tb_lineno)
        self.assertEquals("func", tb_func)
        self.assertEquals(None, tb_text)