#!/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 <> 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(status, headers): print '---- STATUS' print status print '---- HEADERS' print [i for i in headers if i[0] != 'ETag'] 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' } i = hgweb('.') i(env, startrsp) print '---- ERRORS' print errors.getvalue() print '---- OS.ENVIRON wsgi variables' print sorted([x for x in os.environ if x.startswith('wsgi')]) print '---- request.ENVIRON wsgi variables' print sorted([x for x in i.repo.ui.environ if x.startswith('wsgi')]) EOF python request.py