Mercurial > hg
view tests/test-highlight @ 11109:a2bc2f2d77a9
subrepo: normalize path part of URLs so that pulling subrepos from webdir works
For a "all projects at root" repo layout eg:
/main
/sub
Where subrepos are used such that a clone of main has this layout:
./main/
./main/.hgsub
./main/sub/
And the .hgsub content is:
sub = ../sub
This allows a pull from a hgweb where main and sub are exposed
at the root (or same directory level)
The current code doesn't normalize the path component of a pull
url. this results in trying to pull from
http://server.com/hg/main/../sub
Current hgweb implementation doesn't reduce the path component
so this results in a 404 error though everything is setup logically.
This patch adresses this 404 error on the puller side
normalizing the URLs used for pulling sub repos. For this
example, the URL would be reduced to http://server.com/hg/sub
Fix + test
author | Edouard Gomez <ed.gomez@free.fr> |
---|---|
date | Sat, 01 May 2010 23:05:19 +0200 |
parents | a9c0d6060827 |
children |
line wrap: on
line source
#!/bin/sh "$TESTDIR/hghave" pygments || exit 80 cat <<EOF >> $HGRCPATH [extensions] highlight = [web] pygments_style = friendly EOF hg init test cd test # create random Python file to exercise Pygments cat <<EOF > primes.py #!/usr/bin/env python """Fun with generators. Corresponding Haskell implementation: primes = 2 : sieve [3, 5..] where sieve (p:ns) = p : sieve [n | n <- ns, mod n p /= 0] """ from itertools import dropwhile, ifilter, islice, count, chain def primes(): """Generate all primes.""" def sieve(ns): p = ns.next() # It is important to yield *here* in order to stop the # infinite recursion. yield p ns = ifilter(lambda n: n % p != 0, ns) for n in sieve(ns): yield n odds = ifilter(lambda i: i % 2 == 1, count()) return chain([2], sieve(dropwhile(lambda n: n < 3, odds))) if __name__ == "__main__": import sys try: n = int(sys.argv[1]) except (ValueError, IndexError): n = 10 p = primes() print "The first %d primes: %s" % (n, list(islice(p, n))) EOF hg ci -Ama echo % hg serve hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log cat hg.pid >> $DAEMON_PIDS echo % hgweb filerevision, html ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py') \ | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mf\"/class=\"mi\"/g" echo % hgweb fileannotate, html ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py') \ | sed "s/class=\"k\"/class=\"kn\"/g" | sed "s/class=\"mi\"/class=\"mf\"/g" echo % hgweb fileannotate, raw ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/annotate/tip/primes.py?style=raw') \ | sed "s/test@//" > a echo "200 Script output follows" > b echo "" >> b echo "" >> b hg annotate "primes.py" >> b echo "" >> b echo "" >> b echo "" >> b echo "" >> b diff -u b a echo echo % hgweb filerevision, raw ("$TESTDIR/get-with-headers.py" localhost:$HGPORT '/file/tip/primes.py?style=raw') \ > a echo "200 Script output follows" > b echo "" >> b hg cat primes.py >> b diff -u b a echo echo % hgweb highlightcss friendly "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out head -n 4 out rm out echo % errors encountered cat errors.log "$TESTDIR/killdaemons.py" # Change the pygments style cat > .hg/hgrc <<EOF [web] pygments_style = fruity EOF echo % hg serve again hg serve -p $HGPORT -d -n test --pid-file=hg.pid -A access.log -E errors.log cat hg.pid >> $DAEMON_PIDS echo % hgweb highlightcss fruity "$TESTDIR/get-with-headers.py" localhost:$HGPORT '/highlightcss' > out head -n 4 out rm out echo % errors encountered cat errors.log cd .. hg init eucjp cd eucjp python -c 'print("\265\376")' >> eucjp.txt # Japanese kanji "Kyo" hg ci -Ama hgserveget () { "$TESTDIR/killdaemons.py" echo % HGENCODING="$1" hg serve HGENCODING="$1" hg serve -p $HGPORT -d -n test --pid-file=hg.pid -E errors.log cat hg.pid >> $DAEMON_PIDS echo % hgweb filerevision, html "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/file/tip/$2" \ | grep '<div class="parity0 source">' | $TESTDIR/printrepr.py echo % errors encountered cat errors.log } hgserveget euc-jp eucjp.txt hgserveget utf-8 eucjp.txt hgserveget us-ascii eucjp.txt