mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 07:49:11 +03:00
ebffe5ccb8
No more passing options as constructor keywords. Basic options are now always stored in the overlay for simplicity and consistency.
69 lines
1.4 KiB
Bash
Executable File
69 lines
1.4 KiB
Bash
Executable File
#!/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" -d "0 0"
|
|
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
|