コード例 #1
0
ファイル: test_compat.py プロジェクト: lukehuang/util
    def test_byte_errors(self):
        if sys.version_info < (3, 0):
            self.assertRaises(UnicodeEncodeError,
                              lambda: compat.binary(uchar()))

        else:
            self.assertRaises(TypeError, lambda: compat.binary(uchar()))
コード例 #2
0
ファイル: request.py プロジェクト: marrow-legacy/wsgi.objects
    def __init__(self, environ=None, path=b"/", POST=None, **kw):
        """Initialize a blank environment.
        
        The path argument may be a full URL or simple urlencoded path.

        If you pass a dictionary as environ, your keys will take prescedence.
        """

        scheme = b"http"
        netloc = b"localhost:80"
        query_string = b""

        if SCHEME_RE.search(path):
            scheme, netloc, path, query_string, fragment = urlparse.urlsplit(path)

            if ":" not in netloc:
                netloc += dict(http=b":80", https=b":443")[scheme]

        elif path and "?" in path:
            path, query_string = path.split("?", 1)

        path = urllib.unquote(path)

        # TODO: Update this to better conform to PEP 444.
        env = {
            "REQUEST_METHOD": "GET",
            "SCRIPT_NAME": "",
            "PATH_INFO": path,
            "QUERY_STRING": query_string,
            "SERVER_NAME": netloc.split(":")[0],
            "SERVER_PORT": netloc.split(":")[1],
            "HTTP_HOST": netloc,
            "SERVER_PROTOCOL": "HTTP/1.0",
            "CONTENT_LENGTH": "0",
            "wsgi.version": (2, 0),
            "wsgi.url_scheme": scheme,
            "wsgi.input": IO(""),
            # 'wsgi.errors': sys.stderr,
            "wsgi.multithread": False,
            "wsgi.multiprocess": False,
            "wsgi.run_once": True,
        }

        if POST is not None:
            env["REQUEST_METHOD"] = "POST"
            body = urllib.urlencode(POST.items() if hasattr(POST, "items") else POST)
            env["wsgi.input"] = IO(body)
            env["CONTENT_LENGTH"] = binary(len(body), "ascii")
            env["CONTENT_TYPE"] = "application/x-www-form-urlencoded"

        if environ:
            env.update(environ)

        super(LocalRequest, self).__init__(env, **kw)
コード例 #3
0
ファイル: test_compat.py プロジェクト: Mikodes/marrow.util
 def test_byte_errors(self):
     if sys.version_info < (3, 0):
         self.assertRaises(UnicodeEncodeError, lambda: compat.binary(uchar()))
     
     else:
         self.assertRaises(TypeError, lambda: compat.binary(uchar()))
コード例 #4
0
ファイル: test_compat.py プロジェクト: Mikodes/marrow.util
 def test_bytes(self):
     data = compat.binary(b'\xc3\xbc')
     self.assertEquals(len(data), 2)
     
     self.failUnless(isinstance(data.decode('utf8'), compat.unicode))
     self.assertEquals(len(data.decode('utf8')), 1)
コード例 #5
0
ファイル: body.py プロジェクト: marrow-legacy/wsgi.objects
 def __delete__(self, obj):
     del obj.length
     self.__set__(obj, binary())
コード例 #6
0
ファイル: test_compat.py プロジェクト: lukehuang/util
    def test_bytes(self):
        data = compat.binary(b'\xc3\xbc')
        self.assertEquals(len(data), 2)

        self.failUnless(isinstance(data.decode('utf8'), compat.unicode))
        self.assertEquals(len(data.decode('utf8')), 1)