test-hgweb-no-path-info.t
147 lines
| 3.9 KiB
| text/troff
|
Tads3Lexer
/ tests / test-hgweb-no-path-info.t
Matt Mackall
|
r12438 | 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. | ||||
Martin Geisler
|
r13956 | $ hg init repo | ||
Matt Mackall
|
r12438 | $ cd repo | ||
$ 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 | ||||
timeless
|
r28857 | > from __future__ import absolute_import | ||
> import os | ||||
> import sys | ||||
FUJIWARA Katsunori
|
r40239 | > from mercurial import ( | ||
timeless
|
r28857 | > hgweb, | ||
timeless
|
r28861 | > util, | ||
> ) | ||||
> stringio = util.stringio | ||||
Matt Mackall
|
r12438 | > | ||
timeless
|
r28861 | > errors = stringio() | ||
> input = stringio() | ||||
Matt Mackall
|
r12438 | > | ||
> def startrsp(status, headers): | ||||
Augie Fackler
|
r33686 | > print('---- STATUS') | ||
> print(status) | ||||
> print('---- HEADERS') | ||||
> print([i for i in headers if i[0] != 'ETag']) | ||||
> print('---- DATA') | ||||
Gregory Szorc
|
r40197 | > sys.stdout.flush() | ||
Adrian Buehlmann
|
r12743 | > return output.write | ||
Matt Mackall
|
r12438 | > | ||
> env = { | ||||
Adrian Buehlmann
|
r12743 | > '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', | ||||
Mads Kiilerich
|
r18646 | > 'PATH_INFO': '/', | ||
Adrian Buehlmann
|
r12743 | > 'SCRIPT_NAME': '', | ||
Jun Wu
|
r31008 | > 'SERVER_NAME': '$LOCALIP', | ||
Adrian Buehlmann
|
r12743 | > 'SERVER_PORT': os.environ['HGPORT'], | ||
> 'SERVER_PROTOCOL': 'HTTP/1.0' | ||||
Matt Mackall
|
r12438 | > } | ||
> | ||||
> def process(app): | ||||
Gregory Szorc
|
r40197 | > try: | ||
> stdout = sys.stdout.buffer | ||||
> except AttributeError: | ||||
> stdout = sys.stdout | ||||
Matt Mackall
|
r12438 | > content = app(env, startrsp) | ||
Gregory Szorc
|
r40197 | > stdout.write(output.getvalue()) | ||
> stdout.write(b''.join(content)) | ||||
> stdout.flush() | ||||
Mads Kiilerich
|
r18646 | > getattr(content, 'close', lambda : None)() | ||
Gregory Szorc
|
r40197 | > if errors.getvalue(): | ||
> print('---- ERRORS') | ||||
> print(errors.getvalue()) | ||||
> sys.stdout.flush() | ||||
Matt Mackall
|
r12438 | > | ||
timeless
|
r28861 | > output = stringio() | ||
Matt Mackall
|
r12438 | > env['QUERY_STRING'] = 'style=atom' | ||
FUJIWARA Katsunori
|
r40239 | > process(hgweb.hgweb(b'.', name=b'repo')) | ||
Matt Mackall
|
r12438 | > | ||
timeless
|
r28861 | > output = stringio() | ||
Matt Mackall
|
r12438 | > env['QUERY_STRING'] = 'style=raw' | ||
FUJIWARA Katsunori
|
r40239 | > process(hgweb.hgwebdir({b'repo': b'.'})) | ||
Matt Mackall
|
r12438 | > EOF | ||
Matt Harbison
|
r39743 | $ "$PYTHON" request.py | ||
Matt Mackall
|
r12438 | ---- 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 --> | ||||
Jun Wu
|
r31008 | <id>http://$LOCALIP:$HGPORT/</id> (glob) | ||
<link rel="self" href="http://$LOCALIP:$HGPORT/atom-log"/> (glob) | ||||
<link rel="alternate" href="http://$LOCALIP:$HGPORT/"/> (glob) | ||||
Matt Mackall
|
r12438 | <title>repo Changelog</title> | ||
<updated>1970-01-01T00:00:00+00:00</updated> | ||||
<entry> | ||||
Aaron Jensen
|
r21056 | <title>[default] test</title> | ||
Jun Wu
|
r31008 | <id>http://$LOCALIP:$HGPORT/#changeset-61c9426e69fef294feed5e2bbfc97d39944a5b1c</id> (glob) | ||
<link href="http://$LOCALIP:$HGPORT/rev/61c9426e69fe"/> (glob) | ||||
Matt Mackall
|
r12438 | <author> | ||
<name>test</name> | ||||
<email>test</email> | ||||
</author> | ||||
<updated>1970-01-01T00:00:00+00:00</updated> | ||||
<published>1970-01-01T00:00:00+00:00</published> | ||||
<content type="xhtml"> | ||||
r29439 | <table xmlns="http://www.w3.org/1999/xhtml"> | |||
<tr> | ||||
<th style="text-align:left;">changeset</th> | ||||
<td>61c9426e69fe</td> | ||||
</tr> | ||||
<tr> | ||||
<th style="text-align:left;">branch</th> | ||||
<td>default</td> | ||||
</tr> | ||||
<tr> | ||||
<th style="text-align:left;">bookmark</th> | ||||
<td></td> | ||||
</tr> | ||||
<tr> | ||||
<th style="text-align:left;">tag</th> | ||||
<td>tip</td> | ||||
</tr> | ||||
<tr> | ||||
<th style="text-align:left;">user</th> | ||||
<td>test</td> | ||||
</tr> | ||||
<tr> | ||||
<th style="text-align:left;vertical-align:top;">description</th> | ||||
<td>test</td> | ||||
</tr> | ||||
<tr> | ||||
<th style="text-align:left;vertical-align:top;">files</th> | ||||
<td>bar<br /></td> | ||||
</tr> | ||||
</table> | ||||
Matt Mackall
|
r12438 | </content> | ||
</entry> | ||||
</feed> | ||||
---- STATUS | ||||
200 Script output follows | ||||
---- HEADERS | ||||
[('Content-Type', 'text/plain; charset=ascii')] | ||||
---- DATA | ||||
Mads Kiilerich
|
r18646 | /repo/ | ||
Matt Mackall
|
r12438 | |||
Mads Kiilerich
|
r16913 | |||
$ cd .. | ||||