Mercurial > hg
annotate tests/test-mq-qfold @ 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 | 2ff17c4de1da |
children | 296a0b14a686 |
rev | line source |
---|---|
8426 | 1 #!/bin/sh |
2 | |
3 echo "[extensions]" >> $HGRCPATH | |
4 echo "mq=" >> $HGRCPATH | |
5 | |
6 filterdiff() | |
7 { | |
8 grep -v diff | \ | |
9 sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \ | |
10 -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/" | |
11 } | |
12 | |
13 echo '% init' | |
14 hg init repo | |
15 cd repo | |
16 echo a > a | |
17 hg ci -Am adda | |
18 echo a >> a | |
19 hg qnew -f p1 | |
20 echo b >> a | |
21 hg qnew -f p2 | |
22 echo c >> a | |
23 hg qnew -f p3 | |
24 echo '% fold in the middle of the queue' | |
25 hg qpop p1 | |
26 hg qdiff | filterdiff | |
27 hg qfold p2 | |
28 hg qser | |
29 hg qdiff | filterdiff | |
30 echo '% fold with local changes' | |
31 echo d >> a | |
32 hg qfold p3 | |
33 hg diff -c . | filterdiff | |
34 cd .. | |
35 | |
36 |