sapling/tests/test-hgweb-no-path-info
Dirkjan Ochtman 0c1845ffb9 hgweb: return content iterator instead of using write() callable
This is a new version of b6b16fec2a60 (which was backed out in faf83e1e40f5),
with an extra line removed to fix problems with hg serve. hg's internal web
server contains checking if the app isn't trying to write more bytes than
specified by the Content-Length header. The first try still contained an old
line that wrote the response, so the response was sent twice.
2008-08-30 17:13:23 +02:00

61 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
# This tests if hgweb and hgwebdir still work if the REQUEST_URI variable is
# no longer passed with the request. Instead, SCRIPT_NAME and PATH_INFO
# should be used from d74fc8dec2b4 onward to route the request.
mkdir repo
cd repo
hg init
echo foo > bar
hg add bar
hg commit -m "test" -d "0 0" -u "Testing"
hg tip
cat > request.py <<EOF
from mercurial.hgweb import hgweb, hgwebdir
from StringIO import StringIO
import os, sys
errors = StringIO()
input = 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': '',
'SERVER_NAME': '127.0.0.1',
'SERVER_PORT': os.environ['HGPORT'],
'SERVER_PROTOCOL': 'HTTP/1.0'
}
def process(app):
content = app(env, startrsp)
sys.stdout.write(output.getvalue())
sys.stdout.write(''.join(content))
print '---- ERRORS'
print errors.getvalue()
output = StringIO()
env['QUERY_STRING'] = 'style=atom'
process(hgweb('.', name='repo'))
output = StringIO()
env['QUERY_STRING'] = 'style=raw'
process(hgwebdir({'repo': '.'}))
EOF
python request.py | sed "s/http:\/\/127\.0\.0\.1:[0-9]*\//http:\/\/127.0.0.1\//"