コード例 #1
0
ファイル: utest.py プロジェクト: gwk/utest
def _utest_failure(depth, exp_label, exp, ret_label=None, ret=None, exc=None, subj=None, args=(), kwargs={}):
  global _utest_failure_count
  assert subj is not None
  _utest_failure_count += 1
  frame_record = _inspect.stack()[2 + depth] # caller of caller.
  frame = frame_record[0]
  info = _inspect.getframeinfo(frame)
  try: name = subj.__qualname__
  except AttributeError: name = str(subj)
  path = _rel_path(info.filename)
  if '/' not in path: path = f'./{path}'
  _errL(f'\n{path}:{info.lineno}: utest failure: {name}')
  for i, el in enumerate(args):
    _errL(f'  arg {i} = {el!r}')
  for name, val, in kwargs.items():
    _errL(f'  arg {name} = {val!r}')
  _errL(f'  expected {exp_label}: {exp!r}')
  if ret_label: # unexpected value.
    _errL(f'  returned {ret_label}: {ret!r}')
  if exc is not None: # unexpected exception.
    _errL(f'  raised exception:   {exc!r}')
    for i, arg in enumerate(exc.args):
      _errL(f'    exc arg {i}: {arg!r}')
    _errL()
    _print_exception(etype=type(exc), value=exc, tb=exc.__traceback__, file=_stderr)
  _errL()
コード例 #2
0
    def excepthook(args, /):
        """
        Handle uncaught Thread.run() exception.
        """
        if args.exc_type == SystemExit:
            # silently ignore SystemExit
            return

        if _sys is not None and _sys.stderr is not None:
            stderr = _sys.stderr
        elif args.thread is not None:
            stderr = args.thread._stderr
            if stderr is None:
                # do nothing if sys.stderr is None and sys.stderr was None
                # when the thread was created
                return
        else:
            # do nothing if sys.stderr is None and args.thread is None
            return

        if args.thread is not None:
            name = args.thread.name
        else:
            name = get_ident()
        print(f"Exception in thread {name}:",
              file=stderr, flush=True)
        _print_exception(args.exc_type, args.exc_value, args.exc_traceback,
                         file=stderr)
        stderr.flush()
コード例 #3
0
ファイル: thread_io.py プロジェクト: rawler/bhindex
 def run(self):
     try:
         self.result = self.target(*self.args, **self.kwargs)
     except:
         self.result = _exc_info()
         _print_exception(*self.result)