tests/test-hgwebdirsym
author Ry4an Brase <ry4an-hg@ry4an.org>
Mon, 20 Sep 2010 14:56:08 -0500
branchstable
changeset 12570 a72c5ff1260c
parent 6341 63bdfcc3eaaf
permissions -rwxr-xr-x
Correct Content-Type header values for archive downloads. The content type for both .tar.gz and .tar.bz2 downloads was application/x-tar, which is correct for .tar files when no Content-Encoding is present, but is not correct for .tar.gz and .tar.bz2 files unless Content-Encoding is set to gzip or x-bzip2, respectively. However, setting Content-Encoding causes browsers to undo that encoding during download, when a .gz or .bz2 file is usually the desired artifact. Omitting the Content-Encoding header is preferred to avoid having browsers uncompress non-render-able files. Additionally, the Content-Disposition line indicates a final desired filename with .tar.gz or .tar.bz2 extension which makes providing a Content-Encoding header inappropriate. With the current configuration browsers (Chrome and Firefox thus far) are registering the application/x-tar Content-Type and not .tar extension and appending that extension, yielding filename.tar.gz.tar as a final on-disk artifact. This was originally reported here: http://stackoverflow.com/questions/3753659 I've changed the .tar.gz and .tar.bz2 Content-Type values to application/x-gzip and application/x-bzip2, respectively. Which yields correctly named download artifacts on Firefox, Chrome, and IE.

#!/bin/sh
# Tests whether or not hgwebdir properly handles various symlink topologies.

"$TESTDIR/hghave" symlink || exit 80

hg init a
echo a > a/a
hg --cwd a ci -Ama -d'1 0'

mkdir webdir
cd webdir

hg init b
echo b > b/b
hg --cwd b ci -Amb -d'2 0'

hg init c
echo c > c/c
hg --cwd c ci -Amc -d'3 0'

ln -s ../a al
ln -s ../webdir circle

root=`pwd`

cd ..

cat > collections.conf <<EOF
[collections]
$root=$root
EOF

hg serve -p $HGPORT -d --pid-file=hg.pid --webdir-conf collections.conf \
    -A access-collections.log -E error-collections.log
cat hg.pid >> $DAEMON_PIDS

echo % should succeed
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/?style=raw'
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/al/file/tip/a?style=raw'
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/b/file/tip/b?style=raw'
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/c/file/tip/c?style=raw'

echo % should fail
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/circle/al/file/tip/a?style=raw'
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/circle/b/file/tip/a?style=raw'
"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/circle/c/file/tip/a?style=raw'

echo % collections errors
cat error-collections.log