示例#1
0
文件: _core.py 项目: nisavid/testbed
 def _test_request_arg_allvalues(self, method, **kwargs):
     for string in self._argvalues:
         try:
             self._test_request_arg(method, string, **kwargs)
         except AssertionError as exc:
             self.fail('failed subtest for argument {!r}:\n{}'
                        .format(string, _indented(str(exc), size=2)))
示例#2
0
 def _request_received_debuglog_message(self):
     message = '{} {} {}'.format(self.request.remote_ip,
                                 self.request.method, self.request.path)
     if self.request.arguments:
         args_strs = ['{}: {}'.format(name, value[0])
                      for name, value in self.request.arguments.items()]
         message += ' {{{}}}'.format(', '.join(args_strs))
     message += ' {!r}'.format(self.request.headers['Accept'])
     if self.request.body:
         message += '\n' + _indented(self.request.body, size=2)
     return message
示例#3
0
    def create_from_configfile(cls, uris, configfile, configdir):

        try:
            slaptest_output = \
                _subprocess.check_output(('slaptest', '-f', configfile, '-F',
                                          configdir),
                                         stderr=_subprocess.STDOUT)
        except _subprocess.CalledProcessError as exc:
            raise RuntimeError('invalid config file {!r}: slaptest returned'
                                ' exit code {} with output\n{}'
                                .format(configfile, exc.returncode,
                                        _indented(exc.output)))
        for line in slaptest_output.split('\n'):
            _logging.debug('slaptest: ' + line)

        return cls(uris, configloc=configdir)
示例#4
0
    def _send_unhandled_error_response(self, exc, traceback):

        self.set_status(self.service._exc_http_statuscode(exc))

        try:
            response = self.request_webmethod.response_fromexc(exc, traceback)
        except:
            exc_str = '{}: {}\n{}'.format(exc.__class__.__name__, exc,
                                          traceback)
            try:
                for mediarange in self.request_acceptable_mediaranges:
                    mediarange, _, _ = mediarange.partition(';')
                    range_major, range_minor = mediarange.split('/', 1)
                    if range_major == '*' \
                           or (range_major == 'text'
                               and range_minor in ('*', 'plain')):
                        try:
                            self.write(exc_str)
                        except IOError:
                            if self.client_disconnected:
                                return
                            else:
                                raise
                        self.set_header('Content-Type', 'text/plain')
            except IOError:
                self.logger.error('no acceptable representation for unhandled'
                                   ' exception:\n{}'.format(_indented(exc_str,
                                                                      size=2)))
        else:
            if response.content and self.request.method != 'HEAD':
                try:
                    self.write(response.content)
                except IOError:
                    if self.client_disconnected:
                        return
                    else:
                        raise

            if response.mediatype:
                self.set_header('Content-Type', response.mediatype)
            else:
                self.clear_header('Content-Type')
示例#5
0
文件: _core.py 项目: nisavid/bedframe
 def indented(string, level=1):
     return _indented(string, level, size=2)