verify: fix "missing revlog!" errors for revlog format v0 and add test
With revlog format v0 the .d files are empty if the only revision stored is an
empty file. Since Mercurial can no longer create format v0 repositories, but
still use it, add a script which creates a repository with a single empty file.
This can be used in other tests if wanted.
#!/bin/sh
cp "$TESTDIR"/printenv.py .
hg clone http://localhost:$HGPORT/ copy
echo $?
test -d copy || echo copy: No such file or directory
# This server doesn't do range requests so it's basically only good for
# one pull
cat > dumb.py <<EOF
import BaseHTTPServer, SimpleHTTPServer, os, signal
def run(server_class=BaseHTTPServer.HTTPServer,
handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler):
server_address = ('localhost', int(os.environ['HGPORT']))
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
signal.signal(signal.SIGTERM, lambda x: sys.exit(0))
run()
EOF
python dumb.py 2>/dev/null &
echo $! >> $DAEMON_PIDS
mkdir remote
cd remote
hg init
echo foo > bar
hg add bar
hg commit -m"test" -d "1000000 0"
hg tip
cd ..
hg clone static-http://localhost:$HGPORT/remote local | sed -e "s,:$HGPORT/,:\$HGPORT/,"
cd local
hg verify
cat bar
cd ../remote
echo baz > quux
hg commit -A -mtest2 -d '100000000 0'
# check for HTTP opener failures when cachefile does not exist
rm .hg/*.cache
cd ../local
echo '[hooks]' >> .hg/hgrc
echo 'changegroup = python ../printenv.py changegroup' >> .hg/hgrc
hg pull | sed -e "s,:$HGPORT/,:\$HGPORT/,"
echo '% trying to push'
hg update
echo more foo >> bar
hg commit -m"test" -d "100000000 0"
hg push | sed -e "s,:$HGPORT/,:\$HGPORT/,"
echo '% trying clone -r'
cd ..
hg clone -r donotexist static-http://localhost:$HGPORT/remote local0 | sed -e "s,:$HGPORT/,:\$HGPORT/,"
hg clone -r 0 static-http://localhost:$HGPORT/remote local0 | sed -e "s,:$HGPORT/,:\$HGPORT/,"
echo '% test with "/" URI (issue 747)'
hg init
echo a > a
hg add a
hg ci -ma
hg clone static-http://localhost:$HGPORT/ local2 | sed -e "s,:$HGPORT/,:\$HGPORT/,"
cd local2
hg verify
cat a
hg paths | sed -e "s,:$HGPORT/,:\$HGPORT/,"
echo '% test with empty repo (issue965)'
cd ..
hg init remotempty
hg clone static-http://localhost:$HGPORT/remotempty local3 | sed -e "s,:$HGPORT/,:\$HGPORT/,"
cd local3
hg verify
hg paths | sed -e "s,:$HGPORT/,:\$HGPORT/,"
echo '% test with non-repo'
cd ..
mkdir notarepo
hg clone static-http://localhost:$HGPORT/notarepo local3 2>&1 | sed -e "s,:$HGPORT/,:\$HGPORT/,"
kill $!