test-non-interactive-wsgi
70 lines
| 1.4 KiB
| text/plain
|
TextLexer
/ tests / test-non-interactive-wsgi
Dirkjan Ochtman
|
r5337 | #!/bin/sh | ||
mkdir repo | ||||
cd repo | ||||
hg init | ||||
echo foo > bar | ||||
hg add bar | ||||
hg commit -m "test" -d "0 0" | ||||
hg tip | ||||
cat > request.py <<EOF | ||||
from mercurial import dispatch | ||||
from mercurial.hgweb.hgweb_mod import hgweb | ||||
from mercurial.hgweb.request import _wsgirequest | ||||
from mercurial.ui import ui | ||||
from mercurial import hg | ||||
from StringIO import StringIO | ||||
import sys | ||||
class FileLike(object): | ||||
def __init__(self, real): | ||||
self.real = real | ||||
def fileno(self): | ||||
print >> sys.__stdout__, 'FILENO' | ||||
return self.real.fileno() | ||||
def read(self): | ||||
print >> sys.__stdout__, 'READ' | ||||
return self.real.read() | ||||
def readline(self): | ||||
print >> sys.__stdout__, 'READLINE' | ||||
return self.real.readline() | ||||
def isatty(self): | ||||
print >> sys.__stdout__, 'ISATTY' | ||||
return False | ||||
sys.stdin = FileLike(sys.stdin) | ||||
errors = StringIO() | ||||
input = StringIO() | ||||
output = StringIO() | ||||
def startrsp(headers, data): | ||||
print '---- HEADERS' | ||||
print headers | ||||
print '---- DATA' | ||||
print data | ||||
return output.write | ||||
env = { | ||||
'wsgi.version': (1, 0), | ||||
'wsgi.url_scheme': 'http', | ||||
'wsgi.errors': errors, | ||||
'wsgi.input': input, | ||||
'wsgi.multithread': False, | ||||
'wsgi.multiprocess': False, | ||||
'wsgi.run_once': False, | ||||
'REQUEST_METHOD': 'GET', | ||||
'SCRIPT_NAME': '', | ||||
'PATH_INFO': '', | ||||
'QUERY_STRING': '', | ||||
'SERVER_NAME': '127.0.0.1', | ||||
'SERVER_PORT': '20059', | ||||
'SERVER_PROTOCOL': 'HTTP/1.0' | ||||
} | ||||
_wsgirequest(hgweb('.'), env, startrsp) | ||||
print '---- ERRORS' | ||||
print errors.getvalue() | ||||
EOF | ||||
python request.py | ||||