Mercurial > hg
view tests/test-hgweb-head.t @ 51505:c9ceb4f60256 stable 6.7
phases: avoid N² behavior in `advanceboundary`
We allowed duplicated entries in the deque, which each entry could potentially
insert all its ancestors. So advancing boundary for the full repository would
mean each revision would walk all its ancestors, resulting in O(N²) iteration.
For repository of any decent size, N² is quickly insane.
We introduce a simple set to avoid this and get back to reasonable performance.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 15 Mar 2024 01:31:57 +0100 |
parents | cd125eef4388 |
children |
line wrap: on
line source
#require serve Some tests for hgweb responding to HEAD requests $ hg init test $ cd test $ mkdir da $ echo foo > da/foo $ echo foo > foo $ hg ci -Ambase adding da/foo adding foo $ hg bookmark -r0 '@' $ hg bookmark -r0 'a b c' $ hg bookmark -r0 'd/e/f' $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log $ cat hg.pid >> $DAEMON_PIDS manifest $ get-with-headers.py localhost:$HGPORT --method=HEAD 'file/tip/?style=raw' - date etag server 200 Script output follows content-type: text/plain; charset=ascii $ get-with-headers.py localhost:$HGPORT --method=HEAD 'file/tip/da?style=raw' - date etag server 200 Script output follows content-type: text/plain; charset=ascii plain file $ get-with-headers.py localhost:$HGPORT --method=HEAD 'file/tip/foo?style=raw' - date etag server 200 Script output follows content-disposition: inline; filename="foo" content-length: 4 content-type: application/binary should give a 404 - static file that does not exist $ get-with-headers.py localhost:$HGPORT --method=HEAD 'static/bogus' - date etag server 404 Not Found content-type: text/html; charset=ascii [1] should give a 404 - bad revision $ get-with-headers.py localhost:$HGPORT --method=HEAD 'file/spam/foo?style=raw' - date etag server 404 Not Found content-type: text/plain; charset=ascii [1] should give a 400 - bad command $ get-with-headers.py localhost:$HGPORT --method=HEAD 'file/tip/foo?cmd=spam&style=raw' - date etag server 400* (glob) content-type: text/plain; charset=ascii [1] should give a 404 - file does not exist $ get-with-headers.py localhost:$HGPORT --method=HEAD 'file/tip/bork?style=raw' - date etag server 404 Not Found content-type: text/plain; charset=ascii [1] try bad style $ get-with-headers.py localhost:$HGPORT --method=HEAD 'file/tip/?style=foobar' - date etag server 200 Script output follows content-type: text/html; charset=ascii log $ get-with-headers.py localhost:$HGPORT --method=HEAD 'log?style=raw' - date etag server 200 Script output follows content-type: text/plain; charset=ascii access bookmarks $ get-with-headers.py localhost:$HGPORT --method=HEAD 'rev/@?style=paper' - date etag server 200 Script output follows content-type: text/html; charset=ascii static file $ get-with-headers.py localhost:$HGPORT --method=HEAD 'static/style-gitweb.css' - date etag server 200 Script output follows content-length: 9074 content-type: text/css $ killdaemons.py $ cd ..