Commit 2e19356a authored by Marius Wachtler's avatar Marius Wachtler

Merge pull request #1076 from corona10/flask

Small fixes for Flask
parents 87602ccb a16473cc
......@@ -395,7 +395,13 @@ Box* BoxedMethodDescriptor::tppCall(Box* _self, CallRewriteArgs* rewrite_args, A
return rtn;
}
static Box* methodGetName(Box* b, void*) {
assert(b->cls == method_cls);
const char* s = static_cast<BoxedMethodDescriptor*>(b)->method->ml_name;
if (s)
return boxString(s);
return None;
}
static Box* methodGetDoc(Box* b, void*) {
assert(b->cls == method_cls);
const char* s = static_cast<BoxedMethodDescriptor*>(b)->method->ml_doc;
......@@ -579,7 +585,14 @@ void BoxedWrapperDescriptor::gcHandler(GCVisitor* v, Box* _o) {
static Box* wrapperdescrGetDoc(Box* b, void*) {
assert(b->cls == wrapperdescr_cls);
auto s = static_cast<BoxedWrapperDescriptor*>(b)->wrapper->doc;
StringRef s = static_cast<BoxedWrapperDescriptor*>(b)->wrapper->doc;
assert(s.size());
return boxString(s);
}
static Box* wrapperdescrGetName(Box* b, void*) {
assert(b->cls == wrapperdescr_cls);
StringRef s = static_cast<BoxedWrapperDescriptor*>(b)->wrapper->name;
assert(s.size());
return boxString(s);
}
......@@ -758,12 +771,14 @@ void setupDescr() {
method_cls->tpp_call.capi_val = BoxedMethodDescriptor::tppCall<CAPI>;
method_cls->tpp_call.cxx_val = BoxedMethodDescriptor::tppCall<CXX>;
method_cls->giveAttrDescriptor("__doc__", methodGetDoc, NULL);
method_cls->giveAttrDescriptor("__name__", methodGetName, NULL);
method_cls->giveAttr("__repr__", new BoxedFunction(FunctionMetadata::create((void*)methodRepr, UNKNOWN, 1)));
method_cls->freeze();
wrapperdescr_cls->giveAttr("__call__", new BoxedFunction(FunctionMetadata::create(
(void*)BoxedWrapperDescriptor::__call__, UNKNOWN, 2, true, true)));
wrapperdescr_cls->giveAttrDescriptor("__doc__", wrapperdescrGetDoc, NULL);
wrapperdescr_cls->giveAttrDescriptor("__name__", wrapperdescrGetName, NULL);
wrapperdescr_cls->tp_descr_get = BoxedWrapperDescriptor::descr_get;
wrapperdescr_cls->tpp_call.capi_val = BoxedWrapperDescriptor::tppCall<CAPI>;
wrapperdescr_cls->tpp_call.cxx_val = BoxedWrapperDescriptor::tppCall<CXX>;
......
......@@ -3732,7 +3732,6 @@ void setupRuntime() {
false, "method-wrapper");
wrapperdescr_cls = new (0) BoxedClass(object_cls, BoxedWrapperDescriptor::gcHandler, 0, 0,
sizeof(BoxedWrapperDescriptor), false, "wrapper_descriptor");
EmptyString = new (0) BoxedString("");
// Call InternInPlace rather than InternFromString since that will
// probably try to return EmptyString
......
#-*- coding: utf-8 -*-
#flask test
#todo: It should be tested as django_test.py.
import os, sys, subprocess, shutil
import multiprocessing, time, signal
import urllib2
sys.path.append(os.path.dirname(__file__) + "/../lib")
from test_helper import create_virtenv, run_test
ENV_NAME = "flask_test_env_" + os.path.basename(sys.executable)
create_virtenv(ENV_NAME,
["flask == 0.10.1",
"Werkzeug == 0.11.3",
"jinja2 == 2.8",
"itsdangerous == 0.24",
"markupsafe == 0.23"]
, force_create = True)
sys.path.append(ENV_NAME + "/site-packages")
from flask import Flask, Markup
from jinja2 import Template
app = Flask(__name__)
@app.route('/')
def test_template():
t = Template("Hello, World!: {% for n in range(1,10) %}{{n}} " "{% endfor %}")
return t.render()
if __name__ == '__main__':
app.config['TESTING'] = True
assert isinstance(app, Flask)
server = multiprocessing.Process(target=app.run)
server.start()
time.sleep(1)
f = urllib2.urlopen("http://127.0.0.1:5000/", timeout=1)
s = f.read()
assert 'Hello, World!: 1 2 3 4 5 6 7 8 9' in s
server.terminate()
server.join()
m1 = Markup('<strong>Hello %s!</strong>') % '<blink>hacker</blink>'
m2 = Markup.escape('<blink>hacker</blink>')
m3 = Markup('<em>Marked up</em> &raquo; HTML').striptags()
print 'PASSED'
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment