tests/test-mq-merge
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
Wed, 18 Nov 2009 12:47:58 +0100
changeset 9881 54b518fc6671
parent 6628 f18f14bae172
child 10119 bb5ea66789e3
child 10185 7637fe4f525d
permissions -rwxr-xr-x
httprepo: suppress the `real URL is...' message in safe, common cases. When the actual and requested URL only differ by trailing slashes, there is no need to warn. As an example, this easily happens when accessing repositories on Bitbucket over HTTP(S). As far as I could tell, there were no existing tests for this behaviour.

#!/bin/sh

# Test issue 529 - mq aborts when merging patch deleting files

rewrite_path()
{
    sed -e 's:\\:/:g' -e 's:[^ ]*/t/::g'
}

checkundo()
{
    if [ -f .hg/store/undo ]; then
	echo ".hg/store/undo still exists after $1"
    fi
}

echo "[extensions]" >> $HGRCPATH
echo "hgext.mq=" >> $HGRCPATH

# Commit two dummy files in "init" changeset
hg init t
cd t
echo a > a
echo b > b
hg ci -Am init
hg tag -l init

# Create a patch removing a
hg qnew rm_a
hg rm a
hg qrefresh -m "rm a"

# Save the patch queue so we can merge it later
hg qsave -c -e 2>&1 | rewrite_path
checkundo qsave

# Update b and commit in an "update" changeset
hg up -C init
echo b >> b
hg st
hg ci -m update

# Here, qpush used to abort with :
# The system cannot find the file specified => a
hg manifest
hg qpush -a -m 2>&1 | rewrite_path
checkundo 'qpush -m'
hg manifest

# ensure status is correct after merge
hg qpop -a
cd ..

# Classic MQ merge sequence *with an explicit named queue*
echo
echo % init t2
hg init t2
cd t2
echo a > a
hg ci -Am init
echo b >> a
hg ci -m changea
hg up -C 0
echo c >> a
hg qnew -f -e patcha
echo % create the reference queue
hg qsave -c -e -n refqueue 2> /dev/null
hg up -C 1
echo % merge
hg qpush -m -n refqueue 2>&1 | \
    sed 's/merging with queue at.*refqueue/merging with queue at refqueue/'
cd ..