tests/test-mq-strip
author Renato Cunha <renatoc@gmail.com>
Tue, 03 Aug 2010 13:41:47 -0300
changeset 11747 40d5633889bb
parent 11637 64f284da1278
child 11789 e2bce1c717fa
permissions -rwxr-xr-x
hgfixes: add a fixer to convert plain strings to bytestrings This patch implements a 2to3 fixer that converts all plain strings in a python source file to byte strings syntax. Example: foo = 'Normal string' would become foo = b'Normal string' The motivation behind this fixer can be found in http://selenic.com/pipermail/mercurial-devel/2010-June/022363.html or, in other words: the current hg source assumes that _most_ strings are "meant" to be byte sequences, so it makes sense to make the convertion implemented by this patch. As mentioned above, not all mercurial modules want to use strings as bytes, examples include i18n (which uses unicode), and demandimport (in py3k, module names are normal strings, thus unicode, and there's no need for a convertion). Therefore, these modules are blacklisted in the fixer. There are also a few functions that can take only unicode arguments, thus the convertion shouldn't be done for those.

#!/bin/sh

. $TESTDIR/helpers.sh

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

teststrip() {
    hg up -C $1
    echo % before update $1, strip $2
    hg parents
    hg strip $2 | hidebackup
    echo % after update $1, strip $2
    hg parents
    hg unbundle -q .hg/strip-backup/*
    rm .hg/strip-backup/*
}

hg init test
cd test

echo foo > bar
hg ci -Ama

echo more >> bar
hg ci -Amb

echo blah >> bar
hg ci -Amc

hg up 1
echo blah >> bar
hg ci -Amd

echo final >> bar
hg ci -Ame

hg log

teststrip 4 4
teststrip 4 3
teststrip 1 4
teststrip 4 2
teststrip 4 1
teststrip null 4

hg log

hg up -C 2
hg merge 4
echo % before strip of merge parent
hg parents
hg strip 4 2>&1 | hidebackup
echo % after strip of merge parent
hg parents

#strip of applied mq should cleanup status file
hg up -C 3
echo fooagain >> bar
hg ci -mf
hg qimport -r tip:2
echo % applied patches before strip
hg qapplied
echo % stripping revision in queue
hg strip 3 | hidebackup
echo % applied patches after stripping rev in queue
hg qapplied
echo % stripping ancestor of queue
hg strip 1 | hidebackup
echo % applied patches after stripping ancestor of queue
hg qapplied