tests/test-patchbomb
author Nicolas Dumazet <nicdumz.commits@gmail.com>
Wed, 15 Jul 2009 11:26:47 +0900
changeset 9346 bb3f8f692bc6
parent 8514 252232621165
child 9612 d051db8e9e44
permissions -rwxr-xr-x
patchbomb: add --flag to put flags in subject prefixes --flag foo uses: [PATCH foo] or [PATCH M of N foo] depending on the number of patches. Multiple flags are supported: --flag foo --flag bar gives [PATCH foo bar]

#!/bin/sh

fixheaders()
{
    sed -e 's/\(Message-Id:.*@\).*/\1/'  \
        -e 's/\(In-Reply-To:.*@\).*/\1/' \
        -e 's/\(References:.*@\).*/\1/'  \
        -e 's/\(User-Agent:.*\)\/.*/\1/'  \
        -e 's/===.*/===/'
}

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

COLUMNS=80; export COLUMNS

hg init t
cd t
echo a > a
hg commit -Ama -d '1 0'

hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip | \
  fixheaders

echo b > b
hg commit -Amb -d '2 0'

hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip | \
  fixheaders

hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip

cd ..

hg clone -q t t2
cd t2
echo c > c
hg commit -Amc -d '3 0'

cat > description <<EOF
a multiline

description
EOF

echo "% test bundle and description"
hg email --date '1970-1-1 0:3' -n -f quux -t foo \
    -c bar -s test -r tip -b --desc description | \
    fixheaders

echo "% utf-8 patch"
python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: base64'

echo "% no mime encoding for email --test"
hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
    fixheaders > mailtest
echo "% md5sum of 8-bit output"
$TESTDIR/md5sum.py mailtest
rm mailtest

echo "% mime encoded mbox (base64)"
hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
cat mbox | fixheaders
rm mbox

echo "% mime encoded mbox (quoted-printable)"
python -c 'fp = open("qp", "wb"); fp.write("%s\nfoo\n\nbar\n" % \
  ("x" * 1024)); fp.close();'
hg commit -A -d '4 0' -m \
    'charset=utf-8; content-transfer-encoding: quoted-printable'

echo "% no mime encoding for email --test"
hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
    fixheaders > mailtest
echo "% md5sum of qp output"
$TESTDIR/md5sum.py mailtest
rm mailtest

echo "% mime encoded mbox (quoted-printable)"
hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
cat mbox | fixheaders
rm mbox

echo "% iso-8859-1 patch"
python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
hg commit -A -d '5 0' -m 'charset=us-ascii; content-transfer-encoding: 8bit'

echo "% fake ascii mbox"
hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox
fixheaders < mbox > mboxfix
echo "% md5sum of 8-bit output"
$TESTDIR/md5sum.py mboxfix

echo "% test diffstat for single patch"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2 | \
  fixheaders

echo "% test diffstat for multiple patches"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
  -r 0:1 | fixheaders

echo "% test inline for single patch"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
  fixheaders

echo "% test inline for single patch (quoted-printable)"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | \
  fixheaders

echo "% test inline for multiple patches"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
  -r 0:1 -r 4 | fixheaders

echo "% test attach for single patch"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | \
  fixheaders

echo "% test attach for single patch (quoted-printable)"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | \
  fixheaders

echo "% test attach for multiple patches"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
  -r 0:1 -r 4 | fixheaders

echo "% test intro for single patch"
hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
  -r 2 | fixheaders

echo "% test intro for multiple patches"
hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
  -r 0:1 | fixheaders

echo "% tagging csets"
hg tag -r0 zero zero.foo
hg tag -r1 one one.patch
hg tag -r2 two two.diff

echo "% test inline for single named patch"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
  fixheaders

echo "% test inline for multiple named/unnamed patches"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 0:1 | \
  fixheaders

echo "% test inreplyto"
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
  -r tip | fixheaders

hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
  -r 0:1 | fixheaders

echo "% test single flag for single patch"
hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
  -r 2 | fixheaders

echo "% test single flag for multiple patches"
hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
  -r 0:1 | fixheaders

echo "% test mutiple flags for single patch"
hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
 -c bar -s test -r 2 | fixheaders

echo "% test multiple flags for multiple patches"
hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
 -c bar -s test -r 0:1 | fixheaders