tests/test-hgweb-no-request-uri.t
changeset 12439 31ea3ce83a92
parent 12183 f64b416b0ac8
child 12643 d08bb64888bc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-hgweb-no-request-uri.t	Sun Sep 26 13:41:32 2010 -0500
@@ -0,0 +1,143 @@
+This tests if hgweb and hgwebdir still work if the REQUEST_URI variable is
+no longer passed with the request. Instead, SCRIPT_NAME and PATH_INFO
+should be used from d74fc8dec2b4 onward to route the request.
+
+  $ mkdir repo
+  $ cd repo
+  $ hg init
+  $ echo foo > bar
+  $ hg add bar
+  $ hg commit -m "test"
+  $ hg tip
+  changeset:   0:61c9426e69fe
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     test
+  
+  $ cat > request.py <<EOF
+  > from mercurial.hgweb import hgweb, hgwebdir
+  > from StringIO import StringIO
+  > import os, sys
+  > 
+  > errors = StringIO()
+  > input = 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': '',
+  > 	'SERVER_NAME': '127.0.0.1',
+  > 	'SERVER_PORT': os.environ['HGPORT'],
+  > 	'SERVER_PROTOCOL': 'HTTP/1.0'
+  > }
+  > 
+  > def process(app):
+  > 	content = app(env, startrsp)
+  > 	sys.stdout.write(output.getvalue())
+  > 	sys.stdout.write(''.join(content))
+  > 	print '---- ERRORS'
+  > 	print errors.getvalue()
+  > 	
+  > 
+  > output = StringIO()
+  > env['PATH_INFO'] = '/'
+  > env['QUERY_STRING'] = 'style=atom'
+  > process(hgweb('.', name = 'repo'))
+  > 
+  > output = StringIO()
+  > env['PATH_INFO'] = '/file/tip/'
+  > env['QUERY_STRING'] = 'style=raw'
+  > process(hgweb('.', name = 'repo'))
+  > 
+  > output = StringIO()
+  > env['PATH_INFO'] = '/'
+  > env['QUERY_STRING'] = 'style=raw'
+  > process(hgwebdir({'repo': '.'}))
+  > 
+  > output = StringIO()
+  > env['PATH_INFO'] = '/repo/file/tip/'
+  > env['QUERY_STRING'] = 'style=raw'
+  > process(hgwebdir({'repo': '.'}))
+  > EOF
+  $ python request.py
+  ---- STATUS
+  200 Script output follows
+  ---- HEADERS
+  [('Content-Type', 'application/atom+xml; charset=ascii')]
+  ---- DATA
+  <?xml version="1.0" encoding="ascii"?>
+  <feed xmlns="http://www.w3.org/2005/Atom">
+   <!-- Changelog -->
+   <id>http://127.0.0.1:*/</id> (glob)
+   <link rel="self" href="http://127.0.0.1:*/atom-log"/> (glob)
+   <link rel="alternate" href="http://127.0.0.1:*/"/> (glob)
+   <title>repo Changelog</title>
+   <updated>1970-01-01T00:00:00+00:00</updated>
+  
+   <entry>
+    <title>test</title>
+    <id>http://127.0.0.1:*/#changeset-61c9426e69fef294feed5e2bbfc97d39944a5b1c</id> (glob)
+    <link href="http://127.0.0.1:*/rev/61c9426e69fe"/> (glob)
+    <author>
+     <name>test</name>
+     <email>&#116;&#101;&#115;&#116;</email>
+    </author>
+    <updated>1970-01-01T00:00:00+00:00</updated>
+    <published>1970-01-01T00:00:00+00:00</published>
+    <content type="xhtml">
+     <div xmlns="http://www.w3.org/1999/xhtml">
+      <pre xml:space="preserve">test</pre>
+     </div>
+    </content>
+   </entry>
+  
+  </feed>
+  ---- ERRORS
+  
+  ---- STATUS
+  200 Script output follows
+  ---- HEADERS
+  [('Content-Type', 'text/plain; charset=ascii')]
+  ---- DATA
+  
+  -rw-r--r-- 4 bar
+  
+  
+  ---- ERRORS
+  
+  ---- STATUS
+  200 Script output follows
+  ---- HEADERS
+  [('Content-Type', 'text/plain; charset=ascii')]
+  ---- DATA
+  
+  /repo/
+  
+  ---- ERRORS
+  
+  ---- STATUS
+  200 Script output follows
+  ---- HEADERS
+  [('Content-Type', 'text/plain; charset=ascii')]
+  ---- DATA
+  
+  -rw-r--r-- 4 bar
+  
+  
+  ---- ERRORS
+