view tests/test-push-http @ 11330:713ae78bb583

provide pre- and post- hooks with parsed command line arguments. python hooks are passed two new keyword arguments: - opts: a dict of options; unsepcified options are set to their default - pats: a list of arguments shell hooks receive two new variables containing string representations of the above data: - $HG_OPTS - $HG_PATS for example, the opts and pats for 'hg -f v1.1' would be: {'force': True, 'message': '', 'rev': '', 'user': '', 'date': '', 'local': None, 'remove': None, 'mq': None} ['v1.1']
author Chad Dombrova <chadrik@gmail.com>
date Thu, 10 Jun 2010 09:32:19 -0700
parents ace3cf2bc991
children c37f35d7f2f5
line wrap: on
line source

#!/bin/sh

cp "$TESTDIR"/printenv.py .

hg init test
cd test
echo a > a
hg ci -Ama

cd ..
hg clone test test2
cd test2
echo a >> a
hg ci -mb

req() {
	hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
	cat hg.pid >> $DAEMON_PIDS
	hg --cwd ../test2 push http://localhost:$HGPORT/ | sed -e "s,:$HGPORT/,:\$HGPORT/,"
	kill `cat hg.pid`
	echo % serve errors
	cat errors.log
}

cd ../test

echo % expect ssl error
req

echo % expect authorization error
echo '[web]' > .hg/hgrc
echo 'push_ssl = false' >> .hg/hgrc
req

echo % expect authorization error: must have authorized user
echo 'allow_push = unperson' >> .hg/hgrc
req

echo % expect success
echo 'allow_push = *' >> .hg/hgrc
echo '[hooks]' >> .hg/hgrc
echo 'changegroup = python ../printenv.py changegroup 0 ../urls' >> .hg/hgrc
req

cat ../urls

hg rollback
echo % expect authorization error: all users denied
echo '[web]' > .hg/hgrc
echo 'push_ssl = false' >> .hg/hgrc
echo 'deny_push = *' >> .hg/hgrc
req

echo % expect authorization error: some users denied, users must be authenticated
echo 'deny_push = unperson' >> .hg/hgrc
req