Beispiel #1
0
    def my_init(space, w_self, __args__):
        "Our new AssertionError.__init__()."
        w_parent_init = space.getattr(w_BuiltinAssertionError,
                                      space.wrap('__init__'))
        space.call_args(w_parent_init, __args__.prepend(w_self))
##        # Argh! we may see app-level helpers in the frame stack!
##        #       that's very probably very bad...
##        ^^^the above comment may be outdated, but we are not sure
        
        # if the assertion provided a message, don't do magic
        args_w, kwargs_w = __args__.unpack()
        if args_w: 
            w_msg = args_w[0]
        else:
            frame = space.getexecutioncontext().gettopframe()
            runner = AppFrame(space, frame)
            try:
                source = runner.statement
                source = str(source).strip()
            except py.error.ENOENT: 
                source = None
            from pypy import conftest
            if source and py.test.config._assertstate.mode != "off":
                msg = interpret(source, runner, should_fail=True)
                space.setattr(w_self, space.wrap('args'),
                            space.newtuple([space.wrap(msg)]))
                w_msg = space.wrap(msg)
            else:
                w_msg = space.w_None
        space.setattr(w_self, space.wrap('msg'), w_msg)
Beispiel #2
0
    def my_init(space, w_self, __args__):
        "Our new AssertionError.__init__()."
        w_parent_init = space.getattr(w_BuiltinAssertionError,
                                      space.wrap('__init__'))
        space.call_args(w_parent_init, __args__.prepend(w_self))
##        # Argh! we may see app-level helpers in the frame stack!
##        #       that's very probably very bad...
##        ^^^the above comment may be outdated, but we are not sure

        # if the assertion provided a message, don't do magic
        args_w, kwargs_w = __args__.unpack()
        if args_w:
            w_msg = args_w[0]
        else:
            frame = space.getexecutioncontext().gettopframe()
            runner = AppFrame(space, frame)
            try:
                source = runner.statement
                source = str(source).strip()
            except py.error.ENOENT:
                source = None
            from pypy import conftest
            if source and py.test.config._assertstate.mode != "off":
                msg = interpret(source, runner, should_fail=True)
                space.setattr(w_self, space.wrap('args'),
                            space.newtuple([space.wrap(msg)]))
                w_msg = space.wrap(msg)
            else:
                w_msg = space.w_None
        space.setattr(w_self, space.wrap('msg'), w_msg)
Beispiel #3
0
 def __init__(self, message, frame):
     Exception.__init__(self, message)
     # copied and adapted from pytest's magic AssertionError
     f = py.code.Frame(frame)
     try:
         source = f.code.fullsource
         if source is not None:
             try:
                 source = source.getstatement(f.lineno)
             except IndexError:
                 source = None
             else:
                 source = str(source.deindent()).strip()
     except py.error.ENOENT:
         source = None
     if source and source.startswith('self._assert(') and newinterpret:
         # transform self._assert(x, 'foo') into assert x, 'foo'
         source = source.replace('self._assert(', 'assert ')
         source = source[:-1] # remove the trailing ')'
         self.msg = newinterpret.interpret(source, f, should_fail=True)
     else:
         self.msg = "<could not determine information>"
Beispiel #4
0
 def __init__(self, message, frame):
     Exception.__init__(self, message)
     # copied and adapted from pytest's magic AssertionError
     f = py.code.Frame(frame)
     try:
         source = f.code.fullsource
         if source is not None:
             try:
                 source = source.getstatement(f.lineno)
             except IndexError:
                 source = None
             else:
                 source = str(source.deindent()).strip()
     except py.error.ENOENT:
         source = None
     if source and source.startswith('self._assert(') and newinterpret:
         # transform self._assert(x, 'foo') into assert x, 'foo'
         source = source.replace('self._assert(', 'assert ')
         source = source[:-1]  # remove the trailing ')'
         self.msg = newinterpret.interpret(source, f, should_fail=True)
     else:
         self.msg = "<could not determine information>"