new file mode 100755
--- /dev/null
+++ b/tests/test-non-interactive-wsgi
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+mkdir repo
+cd repo
+hg init
+echo foo > bar
+hg add bar
+hg commit -m "test" -d "0 0"
+hg tip
+
+cat > request.py <<EOF
+from mercurial import dispatch
+from mercurial.hgweb.hgweb_mod import hgweb
+from mercurial.hgweb.request import _wsgirequest
+from mercurial.ui import ui
+from mercurial import hg
+from StringIO import StringIO
+import 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()
+ def isatty(self):
+ print >> sys.__stdout__, 'ISATTY'
+ return False
+
+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': '20059',
+ 'SERVER_PROTOCOL': 'HTTP/1.0'
+}
+
+_wsgirequest(hgweb('.'), env, startrsp)
+print '---- ERRORS'
+print errors.getvalue()
+EOF
+
+python request.py