tests/test-hgweb-no-request-uri
author Dirkjan Ochtman <dirkjan@ochtman.nl>
Sat, 01 Dec 2007 19:19:08 +0100
changeset 5579 e15f7db0f0ee
child 5580 f429e0e067a8
permissions -rwxr-xr-x
Use SCRIPT_NAME and PATH_INFO instead of REQUEST_URI. This is required by WSGI (fixes issue846).

#!/bin/sh

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'
}

output = StringIO()
env['PATH_INFO'] = '/'
env['QUERY_STRING'] = 'style=atom'
hgweb('.', name = 'repo')(env, startrsp)
print output.getvalue()
print '---- ERRORS'
print errors.getvalue()

output = StringIO()
env['PATH_INFO'] = '/file/tip/'
env['QUERY_STRING'] = 'style=raw'
hgweb('.', name = 'repo')(env, startrsp)
print output.getvalue()
print '---- ERRORS'
print errors.getvalue()

output = StringIO()
env['PATH_INFO'] = '/'
env['QUERY_STRING'] = 'style=raw'
hgwebdir({'repo': '.'})(env, startrsp)
print output.getvalue()
print '---- ERRORS'
print errors.getvalue()

output = StringIO()
env['PATH_INFO'] = '/repo/file/tip/'
env['QUERY_STRING'] = 'style=raw'
hgwebdir({'repo': '.'})(env, startrsp)
print output.getvalue()
print '---- ERRORS'
print errors.getvalue()
EOF

python request.py | sed "s/http:\/\/127\.0\.0\.1:[0-9]*\//http:\/\/127.0.0.1\//"