mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 00:14:35 +03:00
0c1845ffb9
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.
74 lines
1.6 KiB
Bash
Executable File
74 lines
1.6 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['PATH_INFO'] = '/'
|
|
env['QUERY_STRING'] = 'style=atom'
|
|
process(hgweb('.', name = 'repo'))
|
|
|
|
output = StringIO()
|
|
env['PATH_INFO'] = '/file/tip/'
|
|
env['QUERY_STRING'] = 'style=raw'
|
|
process(hgweb('.', name = 'repo'))
|
|
|
|
output = StringIO()
|
|
env['PATH_INFO'] = '/'
|
|
env['QUERY_STRING'] = 'style=raw'
|
|
process(hgwebdir({'repo': '.'}))
|
|
|
|
output = StringIO()
|
|
env['PATH_INFO'] = '/repo/file/tip/'
|
|
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\//"
|