tests/test-hgweb-no-path-info
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
Wed, 18 Nov 2009 12:47:58 +0100
changeset 9881 54b518fc6671
parent 8167 6c82beaaa11a
child 12161 dfb11f9922c1
permissions -rwxr-xr-x
httprepo: suppress the `real URL is...' message in safe, common cases. When the actual and requested URL only differ by trailing slashes, there is no need to warn. As an example, this easily happens when accessing repositories on Bitbucket over HTTP(S). As far as I could tell, there were no existing tests for this behaviour.

#!/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" -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\//"