view tests/test-convert-bzr-directories @ 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 9e6d6568bf7a
children
line wrap: on
line source

#!/bin/sh

. "$TESTDIR/bzr-definitions"

echo % empty directory
mkdir test-empty
cd test-empty
bzr init -q source
cd source
echo content > a
bzr add -q a
bzr commit -q -m 'Initial add'
mkdir empty
bzr add -q empty
bzr commit -q -m 'Empty directory added'
echo content > empty/something
bzr add -q empty/something
bzr commit -q -m 'Added file into directory'
cd ..
hg convert source source-hg
manifest source-hg 1
manifest source-hg tip
cd ..

echo % directory renames
mkdir test-dir-rename
cd test-dir-rename
bzr init -q source
cd source
mkdir tpyo
echo content > tpyo/something
bzr add -q tpyo
bzr commit -q -m 'Added directory'
bzr mv tpyo typo
bzr commit -q -m 'Oops, typo'
cd ..
hg convert source source-hg
manifest source-hg 0
manifest source-hg tip
cd ..

echo % nested directory renames
mkdir test-nested-dir-rename
cd test-nested-dir-rename
bzr init -q source
cd source
mkdir -p firstlevel/secondlevel/thirdlevel
echo content > firstlevel/secondlevel/file
echo this_needs_to_be_there_too > firstlevel/secondlevel/thirdlevel/stuff
bzr add -q firstlevel
bzr commit -q -m 'Added nested directories'
bzr mv firstlevel/secondlevel secondlevel
bzr commit -q -m 'Moved secondlevel one level up'
cd ..
hg convert source source-hg
manifest source-hg tip
cd ..

echo % directory remove
mkdir test-dir-remove
cd test-dir-remove
bzr init -q source
cd source
mkdir src
echo content > src/sourcecode
bzr add -q src
bzr commit -q -m 'Added directory'
bzr rm -q src
bzr commit -q -m 'Removed directory'
cd ..
hg convert source source-hg
manifest source-hg 0
manifest source-hg tip
cd ..

echo % directory replace
mkdir test-dir-replace
cd test-dir-replace
bzr init -q source
cd source
mkdir first second
echo content > first/file
echo morecontent > first/dummy
echo othercontent > second/something
bzr add -q first second
bzr commit -q -m 'Initial layout'
bzr mv first/file second/file
bzr mv first third
bzr commit -q -m 'Some conflicting moves'
cd ..
hg convert source source-hg
manifest source-hg tip
cd ..