tests/test-patchbomb
author Nicolas Dumazet <nicdumz.commits@gmail.com>
Sun, 24 May 2009 18:43:05 +0900
changeset 8599 1f706b1b62f3
parent 8514 252232621165
child 9346 bb3f8f692bc6
permissions -rwxr-xr-x
inotify: server: refactor updatestatus() * Instead of one entry point, use two entry points, updatefile() and deletefile(), both internally calling the helper function _updatestatus * Do not rely on TypeError to detect the type of oldstatus: use isinstance * The call updatestatus(wpath, None) in deleted() was a bit particular: because no osstat and no newstatus was given, the newstatus was determined using the data stored internally. To replace this exact behavior with the new code, one would use: root, fn = self.split(wpath) d = self.dir(self.tree, root) self.filedeleted(wpath, d.get(fn)) This, however, duplicates code with _updatestatus(), which led us to an interesting question: why are we basing ourselves on repowatcher data to update the status, where everywhere else, we are comparing against dirsate? There is no reason to do this, which is why the new code is: self.filedeleted(wpath, self.repo.dirstate[wpath]) Incidentally, after this, the test for issue1371 passes again.

#!/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