view tests/test-non-interactive-wsgi @ 9021:2ccb527c7b1a

gendoc: fix localization of help topic When a topic provides a callable method for its text, most likely this text will be generated from different parts, so it does not make sense to apply gettext on the whole result, rather the method should provide translation by itself. This is the case with the extensions topic, which triggers a double gettext call, making the ASCII codec fail when it encounters 8 bit characters, and prevents the documentation from being built.
author Cédric Duval <cedricduval@free.fr>
date Sat, 04 Jul 2009 12:12:36 +0200
parents 6c82beaaa11a
children 510122bb3c7f
line wrap: on
line source

#!/bin/sh
# Tests if hgweb can run without touching sys.stdin, as is required
# by the WSGI standard and strictly implemented by mod_wsgi.

mkdir repo
cd repo
hg init
echo foo > bar
hg add bar
hg commit -m "test"
hg tip

cat > request.py <<EOF
from mercurial import dispatch
from mercurial.hgweb.hgweb_mod import hgweb
from mercurial.ui import ui
from mercurial import hg
from StringIO import StringIO
import os, sys

class FileLike(object):
    def __init__(self, real):
        self.real = real
    def fileno(self):
        print >> sys.__stdout__, 'FILENO'
        return self.real.fileno()
    def read(self):
        print >> sys.__stdout__, 'READ'
        return self.real.read()
    def readline(self):
        print >> sys.__stdout__, 'READLINE'
        return self.real.readline()

sys.stdin = FileLike(sys.stdin)
errors = StringIO()
input = StringIO()
output = 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': '',
	'PATH_INFO': '',
	'QUERY_STRING': '',
	'SERVER_NAME': '127.0.0.1',
	'SERVER_PORT': os.environ['HGPORT'],
	'SERVER_PROTOCOL': 'HTTP/1.0'
}

hgweb('.')(env, startrsp)
print '---- ERRORS'
print errors.getvalue()
EOF

python request.py