view tests/test-convert @ 9116:f90bbf1ea09f

inotify: fix issue1375, add a test. The biggest problem was the data structure, which did not allow changing a file into a directory or vice versa. This problem is fixed by b55d44719b47. The walk() method also had an issue in this case: - we know 'path' as a directory. inotify server sleeps. - 'path' is deleted - 'path' is recreated as a file - the server catches up here, and see the deletion. it instantiates a scan(), which in its turn calls for walk(repo, path). - walk() then assumes that 'path' is a directory and calls os.listdir on it, which raises an OSError(errno.ENOTDIR) Catch the error, and yield the file instead of the directory contents.
author Nicolas Dumazet <nicdumz.commits@gmail.com>
date Mon, 13 Jul 2009 16:49:05 +0200
parents 0941ee76489e
children a7178eccf2dc
line wrap: on
line source

#!/bin/sh

cat >> $HGRCPATH <<EOF
[extensions]
convert=
[convert]
hg.saverev=False
EOF

hg help convert

hg init a
cd a
echo a > a
hg ci -d'0 0' -Ama
hg cp a b
hg ci -d'1 0' -mb
hg rm a
hg ci -d'2 0' -mc
hg mv b a
hg ci -d'3 0' -md
echo a >> a
hg ci -d'4 0' -me

cd ..
hg convert a 2>&1 | grep -v 'subversion python bindings could not be loaded'
hg --cwd a-hg pull ../a

touch bogusfile
echo % should fail
hg convert a bogusfile

mkdir bogusdir
chmod 000 bogusdir

echo % should fail
hg convert a bogusdir

echo % should succeed
chmod 700 bogusdir
hg convert a bogusdir

echo % test pre and post conversion actions
echo 'include b' > filemap
hg convert --debug --filemap filemap a partialb | \
    grep 'run hg'

echo % converting empty dir should fail "nicely"
mkdir emptydir
# override $PATH to ensure p4 not visible; use $PYTHON in case we're
# running from a devel copy, not a temp installation
PATH=$BINDIR $PYTHON $BINDIR/hg convert emptydir 2>&1 | sed 's,file://.*/emptydir,.../emptydir,g'