view tests/test-hgweb-no-path-info @ 11948:88d4911930bf

contrib/setup3k.py: added script to build hg with py3k This patch implements a script that inherits most of its functionality from hg's setup.py and adds support to calling 2to3 during invocation with python3. The motivation of having this script around is twofold: 1) It enables py3k crazies to test mercurial in py3k and, hopefully, patch it more easily, so it can improve the py3k support to eventually run there. 2) Being separated from the main setup.py eliminates the need to make hg's setup.py even more cluttered, and enables "independent" development until the port is done. Some considerations about the structure of this patch: Mercurial already overrides the behavior of build_py, this patch tweaks it a bit more to add support to call 2to3 with a custom fixer* location for Mercurial. There is also a need of having the core C modules built *before* the translation process starts, otherwise 2to3 will think those are global modules. * A fixer is a python module that transforms python 2.x code in python 3.x code.
author Renato Cunha <renatoc@gmail.com>
date Tue, 03 Aug 2010 13:18:16 -0300
parents 6c82beaaa11a
children dfb11f9922c1
line wrap: on
line source

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