Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
Pyston
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
Pyston
Commits
2e19356a
Commit
2e19356a
authored
Jan 28, 2016
by
Marius Wachtler
1
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1076 from corona10/flask
Small fixes for Flask
parents
87602ccb
a16473cc
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
63 additions
and
3 deletions
+63
-3
src/runtime/descr.cpp
src/runtime/descr.cpp
+17
-2
src/runtime/types.cpp
src/runtime/types.cpp
+0
-1
test/extra/flask_test.py
test/extra/flask_test.py
+46
-0
No files found.
src/runtime/descr.cpp
View file @
2e19356a
...
...
@@ -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
>
;
...
...
src/runtime/types.cpp
View file @
2e19356a
...
...
@@ -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
...
...
test/extra/flask_test.py
0 → 100644
View file @
2e19356a
#-*- 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> » HTML'
).
striptags
()
print
'PASSED'
Boxiang Sun
@Daetalus
mentioned in commit
1f18f343
·
Sep 08, 2016
mentioned in commit
1f18f343
mentioned in commit 1f18f343586bb881f2601637e2d22aefa9fbb55a
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment