changeset 12440:d9f7753a94d5

tests: unify test-hgweb-non-interactive
author Matt Mackall <mpm@selenic.com>
date Sun, 26 Sep 2010 13:41:32 -0500
parents 31ea3ce83a92
children cb1e33a41d13
files tests/test-hgweb-non-interactive tests/test-hgweb-non-interactive.out tests/test-hgweb-non-interactive.t
diffstat 3 files changed, 81 insertions(+), 91 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test-hgweb-non-interactive	Sun Sep 26 13:41:32 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-#!/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(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
--- a/tests/test-hgweb-non-interactive.out	Sun Sep 26 13:41:32 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-changeset:   0:61c9426e69fe
-tag:         tip
-user:        test
-date:        Thu Jan 01 00:00:00 1970 +0000
-summary:     test
-
----- STATUS
-200 Script output follows
----- HEADERS
-[('Content-Type', 'text/html; charset=ascii')]
----- DATA
----- ERRORS
-
----- OS.ENVIRON wsgi variables
-[]
----- request.ENVIRON wsgi variables
-['wsgi.errors', 'wsgi.input', 'wsgi.multiprocess', 'wsgi.multithread', 'wsgi.run_once', 'wsgi.url_scheme', 'wsgi.version']
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-hgweb-non-interactive.t	Sun Sep 26 13:41:32 2010 -0500
@@ -0,0 +1,81 @@
+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"
+  $ 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(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
+  ---- STATUS
+  200 Script output follows
+  ---- HEADERS
+  [('Content-Type', 'text/html; charset=ascii')]
+  ---- DATA
+  ---- ERRORS
+  
+  ---- OS.ENVIRON wsgi variables
+  []
+  ---- request.ENVIRON wsgi variables
+  ['wsgi.errors', 'wsgi.input', 'wsgi.multiprocess', 'wsgi.multithread', 'wsgi.run_once', 'wsgi.url_scheme', 'wsgi.version']