Mercurial > hg
view tests/test-hgwebdir @ 12038:9617803b1acb stable
hgweb: handle exception of misconfigured path on index page
If hgweb.config contains wrong path mapping, hgweb causes internal server
error on repository index page.
This patch changes makeindex() to ignore RepoError, because it looks to be
designed to suppress configuration error.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Tue, 24 Aug 2010 23:30:51 +0900 |
parents | 8f8a7976f4bc |
children |
line wrap: on
line source
#!/bin/sh # Tests some basic hgwebdir functionality. Tests setting up paths and # collection, different forms of 404s and the subdirectory support. mkdir webdir cd webdir hg init a echo a > a/a hg --cwd a ci -Ama -d'1 0' # create a mercurial queue repository hg --cwd a qinit --config extensions.hgext.mq= -c hg init b echo b > b/b hg --cwd b ci -Amb -d'2 0' # create a nested repository cd b hg init d echo d > d/d hg --cwd d ci -Amd -d'3 0' cd .. hg init c echo c > c/c hg --cwd c ci -Amc -d'3 0' # create repository without .hg/store hg init nostore rm -R nostore/.hg/store root=`pwd` cd .. cat > paths.conf <<EOF [paths] a=$root/a b=$root/b EOF hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf paths.conf \ -A access-paths.log -E error-paths-1.log cat hg.pid >> $DAEMON_PIDS echo % should give a 404 - file does not exist "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/file/tip/bork?style=raw' echo % should succeed "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?style=raw' "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/file/tip/a?style=raw' "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/b/file/tip/b?style=raw' echo % should give a 404 - repo is not published "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/c/file/tip/c?style=raw' echo % atom-log without basedir "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/atom-log' \ | grep '<link' | sed 's|//[.a-zA-Z0-9_-]*:[0-9][0-9]*/|//example.com:8080/|' echo % rss-log without basedir "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/a/rss-log' \ | grep '<guid' | sed 's|//[.a-zA-Z0-9_-]*:[0-9][0-9]*/|//example.com:8080/|' cat > paths.conf <<EOF [paths] t/a/=$root/a b=$root/b coll=$root/* rcoll=$root/** star=* starstar=** EOF hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \ -A access-paths.log -E error-paths-2.log cat hg.pid >> $DAEMON_PIDS echo % should succeed, slashy names "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/?style=raw' "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/?style=paper' \ | sed "s/[0-9]\{1,\} seconds\{0,1\} ago/seconds ago/" "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t?style=raw' "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/?style=raw' "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/?style=paper' \ | sed "s/[0-9]\{1,\} seconds\{0,1\} ago/seconds ago/" "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/a?style=atom' \ | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//" "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/a/?style=atom' \ | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//" "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/a/file/tip/a?style=raw' # Test [paths] '*' extension "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/coll/?style=raw' "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/coll/a/file/tip/a?style=raw' #test [paths] '**' extension "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/rcoll/?style=raw' "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/rcoll/b/d/file/tip/d?style=raw' "$TESTDIR/killdaemons.py" cat > paths.conf <<EOF [paths] t/a = $root/a t/b = $root/b c = $root/c [web] descend=false EOF hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \ -A access-paths.log -E error-paths-3.log cat hg.pid >> $DAEMON_PIDS echo % test descend = False "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/?style=raw' "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/t/?style=raw' "$TESTDIR/killdaemons.py" cat > paths.conf <<EOF [paths] nostore = $root/nostore inexistent = $root/inexistent EOF hg serve -p $HGPORT1 -d --pid-file=hg.pid --webdir-conf paths.conf \ -A access-paths.log -E error-paths-4.log cat hg.pid >> $DAEMON_PIDS echo % test inexistent and inaccessible repo should be ignored silently "$TESTDIR/get-with-headers.py" localhost:$HGPORT1 '/' cat > collections.conf <<EOF [collections] $root=$root EOF hg serve --config web.baseurl=http://hg.example.com:8080/ -p $HGPORT2 -d \ --pid-file=hg.pid --webdir-conf collections.conf \ -A access-collections.log -E error-collections.log cat hg.pid >> $DAEMON_PIDS echo % collections: should succeed "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/?style=raw' "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/file/tip/a?style=raw' "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/b/file/tip/b?style=raw' "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/c/file/tip/c?style=raw' echo % atom-log with basedir / "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/atom-log' \ | grep '<link' | sed 's|//[.a-zA-Z0-9_-]*:[0-9][0-9]*/|//example.com:8080/|' echo % rss-log with basedir / "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/rss-log' \ | grep '<guid' | sed 's|//[.a-zA-Z0-9_-]*:[0-9][0-9]*/|//example.com:8080/|' "$TESTDIR/killdaemons.py" hg serve --config web.baseurl=http://hg.example.com:8080/foo/ -p $HGPORT2 -d \ --pid-file=hg.pid --webdir-conf collections.conf \ -A access-collections-2.log -E error-collections-2.log cat hg.pid >> $DAEMON_PIDS echo % atom-log with basedir /foo/ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/atom-log' \ | grep '<link' | sed 's|//[.a-zA-Z0-9_-]*:[0-9][0-9]*/|//example.com:8080/|' echo % rss-log with basedir /foo/ "$TESTDIR/get-with-headers.py" localhost:$HGPORT2 '/a/rss-log' \ | grep '<guid' | sed 's|//[.a-zA-Z0-9_-]*:[0-9][0-9]*/|//example.com:8080/|' echo % paths errors 1 cat error-paths-1.log echo % paths errors 2 cat error-paths-2.log echo % paths errors 3 cat error-paths-3.log echo % collections errors cat error-collections.log echo % collections errors 2 cat error-collections-2.log