mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 08:18:15 +03:00
f2b7b3bc23
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.
182 lines
5.5 KiB
Bash
Executable File
182 lines
5.5 KiB
Bash
Executable File
#!/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
|