#!/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 < 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 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \ -s test -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 echo "% test multi-byte domain parsing" UUML=`printf '\374'` HGENCODING=iso-8859-1 export HGENCODING hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" \ -s test -r 0 cat tmp.mbox | fixheaders