man 5 hgrc implied you need to use external tools to do CRLF translation.
This is no longer true; win32text provides a much better in-process alternative.
#!/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'
}
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\//"