##// END OF EJS Templates
show: use consistent (and possibly shorter) node lengths...
show: use consistent (and possibly shorter) node lengths `hg show` makes heavy use of shortest() to limit the length of the node hash. For the "stack" and "work" views, you are often looking at multiple lines of similar output for "lines" of work. It is visually appeasing for things to vertically align. A naive use of {shortest(node, N)} could result in variable length nodes and for the first character of the description to vary by a column or two. We implement a function to determine the longest shortest prefix for a set of revisions. The new function is used to determine the printed node length for all `hg show` views. .. feature:: show: use consistent node length in views Our previous shortest node length of 5 was arbitrarily chosen. shortest() already does the work of ensuring that a partial node isn't ambiguous with an integer revision, which is our primary risk of a collision for very short nodes. It should be safe to go with the shortest node possible. Existing code is also optimized to handle nodes as short as 4. So, we decrease the minimum hash length from 5 to 4. We also add a test demonstrating that prefix collisions increase the node length. .. feature:: show: decrease minimum displayed hash length from 5 to 4 Differential Revision: https://phab.mercurial-scm.org/D558

File last commit:

r33686:27fb986e default
r34192:e6b5e732 default
Show More
test-hgweb-no-path-info.t
146 lines | 3.8 KiB | text/troff | Tads3Lexer
/ tests / test-hgweb-no-path-info.t
Matt Mackall
tests: unify test-hgweb-no-path-info
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
tests: remove redundant mkdir...
r13956 $ hg init repo
Matt Mackall
tests: unify test-hgweb-no-path-info
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
py3: use absolute_import in test-hgweb-no-path-info.t
r28857 > from __future__ import absolute_import
> import os
> import sys
> from mercurial.hgweb import (
> hgweb,
> hgwebdir,
> )
timeless
pycompat: switch to util.stringio for py3 compat
r28861 > from mercurial import (
> util,
> )
> stringio = util.stringio
Matt Mackall
tests: unify test-hgweb-no-path-info
r12438 >
timeless
pycompat: switch to util.stringio for py3 compat
r28861 > errors = stringio()
> input = stringio()
Matt Mackall
tests: unify test-hgweb-no-path-info
r12438 >
> def startrsp(status, headers):
Augie Fackler
tests: fix simple heredoc print statements to work on Py3...
r33686 > print('---- STATUS')
> print(status)
> print('---- HEADERS')
> print([i for i in headers if i[0] != 'ETag'])
> print('---- DATA')
Adrian Buehlmann
check-code: add 'no tab indent' check for unified tests...
r12743 > return output.write
Matt Mackall
tests: unify test-hgweb-no-path-info
r12438 >
> env = {
Adrian Buehlmann
check-code: add 'no tab indent' check for unified tests...
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
hgweb: make the test suite use hgweb in a more WSGI compliant way...
r18646 > 'PATH_INFO': '/',
Adrian Buehlmann
check-code: add 'no tab indent' check for unified tests...
r12743 > 'SCRIPT_NAME': '',
Jun Wu
tests: use LOCALIP...
r31008 > 'SERVER_NAME': '$LOCALIP',
Adrian Buehlmann
check-code: add 'no tab indent' check for unified tests...
r12743 > 'SERVER_PORT': os.environ['HGPORT'],
> 'SERVER_PROTOCOL': 'HTTP/1.0'
Matt Mackall
tests: unify test-hgweb-no-path-info
r12438 > }
>
> def process(app):
> content = app(env, startrsp)
> sys.stdout.write(output.getvalue())
> sys.stdout.write(''.join(content))
Mads Kiilerich
hgweb: make the test suite use hgweb in a more WSGI compliant way...
r18646 > getattr(content, 'close', lambda : None)()
Augie Fackler
tests: fix simple heredoc print statements to work on Py3...
r33686 > print('---- ERRORS')
> print(errors.getvalue())
Matt Mackall
tests: unify test-hgweb-no-path-info
r12438 >
timeless
pycompat: switch to util.stringio for py3 compat
r28861 > output = stringio()
Matt Mackall
tests: unify test-hgweb-no-path-info
r12438 > env['QUERY_STRING'] = 'style=atom'
> process(hgweb('.', name='repo'))
>
timeless
pycompat: switch to util.stringio for py3 compat
r28861 > output = stringio()
Matt Mackall
tests: unify test-hgweb-no-path-info
r12438 > env['QUERY_STRING'] = 'style=raw'
> process(hgwebdir({'repo': '.'}))
> EOF
Augie Fackler
cleanup: use $PYTHON to run python in many more tests...
r32940 $ $PYTHON request.py
Matt Mackall
tests: unify test-hgweb-no-path-info
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
tests: use LOCALIP...
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
tests: unify test-hgweb-no-path-info
r12438 <title>repo Changelog</title>
<updated>1970-01-01T00:00:00+00:00</updated>
<entry>
Aaron Jensen
hgweb: adding branch, tags, bookmarks, user, and file list to atom feed entries
r21056 <title>[default] test</title>
Jun Wu
tests: use LOCALIP...
r31008 <id>http://$LOCALIP:$HGPORT/#changeset-61c9426e69fef294feed5e2bbfc97d39944a5b1c</id> (glob)
<link href="http://$LOCALIP:$HGPORT/rev/61c9426e69fe"/> (glob)
Matt Mackall
tests: unify test-hgweb-no-path-info
r12438 <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">
av6
hgweb: reindent atom/changelogentry.tmpl...
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>&#116;&#101;&#115;&#116;</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
tests: unify test-hgweb-no-path-info
r12438 </content>
</entry>
</feed>
---- ERRORS
---- STATUS
200 Script output follows
---- HEADERS
[('Content-Type', 'text/plain; charset=ascii')]
---- DATA
Mads Kiilerich
hgweb: make the test suite use hgweb in a more WSGI compliant way...
r18646 /repo/
Matt Mackall
tests: unify test-hgweb-no-path-info
r12438
---- ERRORS
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..