[PATCH] test: test folder renames

2014-02-24 Thread Tomi Ollila
On Sun, Feb 23 2014, Jani Nikula  wrote:

> On Sun, 23 Feb 2014, Mark Walters  wrote:
>> I was experimenting with letting notmuch new take an argument to tell it
>> to scan only a particular directory (and sub-directories) for new
>> messages. I came across the following strange behaviour which is also
>> present in master (with a fresh database)
>>
>> I have a bunch of maildirs in /home/mail: so folders .mail.foo/
>> .mail.bar/ each of which has cur/new/tmp and all the messages are in
>> cur.
>>
>> If I do mv .mail.foo .mail.bar/ and run notmuch new I get the expected
>> lots of renames (900 or so in the case I was trying). But if I then do
>> mv .mail.bar/.mail.foo . and run notmuch new almost all the messages get
>> removed (but 30 renames do get detected). If I then do touch .mail.foo/*
>> the messages get found again
>>
>> I am guessing the 30 renames might be because those 30 have duplicates
>> somewhere else.
>>
>> But the other behaviour has me puzzled.
>
> This test reproduces the problem for me, but it's not
> deterministic. With the loop, I get roughly one fail per test run:
>
>  FAIL   Rename folder back
>  --- T051-new-renames.27.expected 2014-02-23 21:37:10.121774241 +
>  +++ T051-new-renames.27.output   2014-02-23 21:37:10.121774241 
> +
>  @@ -1 +1 @@
>  -No new mail. Detected 10 file renames.
>  +No new mail. Removed 10 messages.
>  FAIL   Files remain the same
>  --- T051-new-renames.28.expected 2014-02-23 21:37:10.133774652 +
>  +++ T051-new-renames.28.output   2014-02-23 21:37:10.133774652 
> +
>  @@ -1,13 +1,3 @@
>  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-121
>  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-122
>  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-123
>  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-124
>  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-125
>  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-126
>  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-127
>  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-128
>  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-129
>  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-130
>   /path/to/test/tmp.T051-new-renames/mail/bar/msg-131
>   /path/to/test/tmp.T051-new-renames/mail/bar/msg-132
>   /path/to/test/tmp.T051-new-renames/mail/bar/msg-133
>
> I'm as puzzled as you are.

find /path/to/test/tmp.T051-new-renames/ might show what is the order
or 'foo' and 'bar' directories there. the order might be arbitrary
-- it surely is not alphabetical and it might not be the order
created...

The order should not matter -- and maybe it didn't and some change
made that matter... 

I'd test now but I should be ZZZ :D

>
> BR,
> Jani.

Tomi

> ---
>  test/T051-new-renames.sh | 40 
>  1 file changed, 40 insertions(+)
>  create mode 100755 test/T051-new-renames.sh
>
> diff --git a/test/T051-new-renames.sh b/test/T051-new-renames.sh
> new file mode 100755
> index ..febe006f5888
> --- /dev/null
> +++ b/test/T051-new-renames.sh
> @@ -0,0 +1,40 @@
> +#!/usr/bin/env bash
> +test_description='"notmuch new" with directory renames'
> +. ./test-lib.sh
> +
> +for loop in `seq 10`; do
> +
> +rm -rf ${MAIL_DIR}
> +
> +for i in `seq 10`; do
> +generate_message '[dir]=foo' '[subject]="Message foo $i"'
> +done
> +
> +for i in `seq 10`; do
> +generate_message '[dir]=bar' '[subject]="Message bar $i"'
> +done
> +
> +test_begin_subtest "Index the messages, round $loop"
> +output=$(NOTMUCH_NEW)
> +test_expect_equal "$output" "Added 20 new messages to the database."
> +
> +all_files=$(notmuch search --output=files \*)
> +count_foo=$(notmuch count folder:foo)
> +
> +test_begin_subtest "Rename folder"
> +mv ${MAIL_DIR}/foo ${MAIL_DIR}/baz
> +output=$(NOTMUCH_NEW)
> +test_expect_equal "$output" "No new mail. Detected $count_foo file renames."
> +
> +test_begin_subtest "Rename folder back"
> +mv ${MAIL_DIR}/baz ${MAIL_DIR}/foo
> +output=$(NOTMUCH_NEW)
> +test_expect_equal "$output" "No new mail. Detected $count_foo file renames."
> +
> +test_begin_subtest "Files remain the same"
> +output=$(notmuch search --output=files \*)
> +test_expect_equal "$output" "$all_files"
> +
> +done
> +
> +test_done
> -- 
> 1.8.5.3
>
> ___
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


[PATCH] test: test folder renames

2014-02-23 Thread Jani Nikula
On Sun, 23 Feb 2014, Mark Walters  wrote:
> I was experimenting with letting notmuch new take an argument to tell it
> to scan only a particular directory (and sub-directories) for new
> messages. I came across the following strange behaviour which is also
> present in master (with a fresh database)
>
> I have a bunch of maildirs in /home/mail: so folders .mail.foo/
> .mail.bar/ each of which has cur/new/tmp and all the messages are in
> cur.
>
> If I do mv .mail.foo .mail.bar/ and run notmuch new I get the expected
> lots of renames (900 or so in the case I was trying). But if I then do
> mv .mail.bar/.mail.foo . and run notmuch new almost all the messages get
> removed (but 30 renames do get detected). If I then do touch .mail.foo/*
> the messages get found again
>
> I am guessing the 30 renames might be because those 30 have duplicates
> somewhere else.
>
> But the other behaviour has me puzzled.

This test reproduces the problem for me, but it's not
deterministic. With the loop, I get roughly one fail per test run:

 FAIL   Rename folder back
 --- T051-new-renames.27.expected   2014-02-23 21:37:10.121774241 +
 +++ T051-new-renames.27.output 2014-02-23 21:37:10.121774241 +
 @@ -1 +1 @@
 -No new mail. Detected 10 file renames.
 +No new mail. Removed 10 messages.
 FAIL   Files remain the same
 --- T051-new-renames.28.expected   2014-02-23 21:37:10.133774652 +
 +++ T051-new-renames.28.output 2014-02-23 21:37:10.133774652 +
 @@ -1,13 +1,3 @@
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-121
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-122
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-123
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-124
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-125
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-126
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-127
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-128
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-129
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-130
  /path/to/test/tmp.T051-new-renames/mail/bar/msg-131
  /path/to/test/tmp.T051-new-renames/mail/bar/msg-132
  /path/to/test/tmp.T051-new-renames/mail/bar/msg-133

I'm as puzzled as you are.

BR,
Jani.
---
 test/T051-new-renames.sh | 40 
 1 file changed, 40 insertions(+)
 create mode 100755 test/T051-new-renames.sh

diff --git a/test/T051-new-renames.sh b/test/T051-new-renames.sh
new file mode 100755
index ..febe006f5888
--- /dev/null
+++ b/test/T051-new-renames.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+test_description='"notmuch new" with directory renames'
+. ./test-lib.sh
+
+for loop in `seq 10`; do
+
+rm -rf ${MAIL_DIR}
+
+for i in `seq 10`; do
+generate_message '[dir]=foo' '[subject]="Message foo $i"'
+done
+
+for i in `seq 10`; do
+generate_message '[dir]=bar' '[subject]="Message bar $i"'
+done
+
+test_begin_subtest "Index the messages, round $loop"
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "Added 20 new messages to the database."
+
+all_files=$(notmuch search --output=files \*)
+count_foo=$(notmuch count folder:foo)
+
+test_begin_subtest "Rename folder"
+mv ${MAIL_DIR}/foo ${MAIL_DIR}/baz
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "No new mail. Detected $count_foo file renames."
+
+test_begin_subtest "Rename folder back"
+mv ${MAIL_DIR}/baz ${MAIL_DIR}/foo
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "No new mail. Detected $count_foo file renames."
+
+test_begin_subtest "Files remain the same"
+output=$(notmuch search --output=files \*)
+test_expect_equal "$output" "$all_files"
+
+done
+
+test_done
-- 
1.8.5.3



[PATCH] test: test folder renames

2014-02-23 Thread Jani Nikula
On Sun, 23 Feb 2014, Mark Walters markwalters1...@gmail.com wrote:
 I was experimenting with letting notmuch new take an argument to tell it
 to scan only a particular directory (and sub-directories) for new
 messages. I came across the following strange behaviour which is also
 present in master (with a fresh database)

 I have a bunch of maildirs in /home/mail: so folders .mail.foo/
 .mail.bar/ each of which has cur/new/tmp and all the messages are in
 cur.

 If I do mv .mail.foo .mail.bar/ and run notmuch new I get the expected
 lots of renames (900 or so in the case I was trying). But if I then do
 mv .mail.bar/.mail.foo . and run notmuch new almost all the messages get
 removed (but 30 renames do get detected). If I then do touch .mail.foo/*
 the messages get found again

 I am guessing the 30 renames might be because those 30 have duplicates
 somewhere else.

 But the other behaviour has me puzzled.

This test reproduces the problem for me, but it's not
deterministic. With the loop, I get roughly one fail per test run:

 FAIL   Rename folder back
 --- T051-new-renames.27.expected   2014-02-23 21:37:10.121774241 +
 +++ T051-new-renames.27.output 2014-02-23 21:37:10.121774241 +
 @@ -1 +1 @@
 -No new mail. Detected 10 file renames.
 +No new mail. Removed 10 messages.
 FAIL   Files remain the same
 --- T051-new-renames.28.expected   2014-02-23 21:37:10.133774652 +
 +++ T051-new-renames.28.output 2014-02-23 21:37:10.133774652 +
 @@ -1,13 +1,3 @@
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-121
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-122
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-123
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-124
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-125
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-126
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-127
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-128
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-129
 -/path/to/test/tmp.T051-new-renames/mail/foo/msg-130
  /path/to/test/tmp.T051-new-renames/mail/bar/msg-131
  /path/to/test/tmp.T051-new-renames/mail/bar/msg-132
  /path/to/test/tmp.T051-new-renames/mail/bar/msg-133

I'm as puzzled as you are.

BR,
Jani.
---
 test/T051-new-renames.sh | 40 
 1 file changed, 40 insertions(+)
 create mode 100755 test/T051-new-renames.sh

diff --git a/test/T051-new-renames.sh b/test/T051-new-renames.sh
new file mode 100755
index ..febe006f5888
--- /dev/null
+++ b/test/T051-new-renames.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+test_description='notmuch new with directory renames'
+. ./test-lib.sh
+
+for loop in `seq 10`; do
+
+rm -rf ${MAIL_DIR}
+
+for i in `seq 10`; do
+generate_message '[dir]=foo' '[subject]=Message foo $i'
+done
+
+for i in `seq 10`; do
+generate_message '[dir]=bar' '[subject]=Message bar $i'
+done
+
+test_begin_subtest Index the messages, round $loop
+output=$(NOTMUCH_NEW)
+test_expect_equal $output Added 20 new messages to the database.
+
+all_files=$(notmuch search --output=files \*)
+count_foo=$(notmuch count folder:foo)
+
+test_begin_subtest Rename folder
+mv ${MAIL_DIR}/foo ${MAIL_DIR}/baz
+output=$(NOTMUCH_NEW)
+test_expect_equal $output No new mail. Detected $count_foo file renames.
+
+test_begin_subtest Rename folder back
+mv ${MAIL_DIR}/baz ${MAIL_DIR}/foo
+output=$(NOTMUCH_NEW)
+test_expect_equal $output No new mail. Detected $count_foo file renames.
+
+test_begin_subtest Files remain the same
+output=$(notmuch search --output=files \*)
+test_expect_equal $output $all_files
+
+done
+
+test_done
-- 
1.8.5.3

___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH] test: test folder renames

2014-02-23 Thread Tomi Ollila
On Sun, Feb 23 2014, Jani Nikula j...@nikula.org wrote:

 On Sun, 23 Feb 2014, Mark Walters markwalters1...@gmail.com wrote:
 I was experimenting with letting notmuch new take an argument to tell it
 to scan only a particular directory (and sub-directories) for new
 messages. I came across the following strange behaviour which is also
 present in master (with a fresh database)

 I have a bunch of maildirs in /home/mail: so folders .mail.foo/
 .mail.bar/ each of which has cur/new/tmp and all the messages are in
 cur.

 If I do mv .mail.foo .mail.bar/ and run notmuch new I get the expected
 lots of renames (900 or so in the case I was trying). But if I then do
 mv .mail.bar/.mail.foo . and run notmuch new almost all the messages get
 removed (but 30 renames do get detected). If I then do touch .mail.foo/*
 the messages get found again

 I am guessing the 30 renames might be because those 30 have duplicates
 somewhere else.

 But the other behaviour has me puzzled.

 This test reproduces the problem for me, but it's not
 deterministic. With the loop, I get roughly one fail per test run:

  FAIL   Rename folder back
  --- T051-new-renames.27.expected 2014-02-23 21:37:10.121774241 +
  +++ T051-new-renames.27.output   2014-02-23 21:37:10.121774241 
 +
  @@ -1 +1 @@
  -No new mail. Detected 10 file renames.
  +No new mail. Removed 10 messages.
  FAIL   Files remain the same
  --- T051-new-renames.28.expected 2014-02-23 21:37:10.133774652 +
  +++ T051-new-renames.28.output   2014-02-23 21:37:10.133774652 
 +
  @@ -1,13 +1,3 @@
  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-121
  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-122
  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-123
  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-124
  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-125
  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-126
  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-127
  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-128
  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-129
  -/path/to/test/tmp.T051-new-renames/mail/foo/msg-130
   /path/to/test/tmp.T051-new-renames/mail/bar/msg-131
   /path/to/test/tmp.T051-new-renames/mail/bar/msg-132
   /path/to/test/tmp.T051-new-renames/mail/bar/msg-133

 I'm as puzzled as you are.

find /path/to/test/tmp.T051-new-renames/ might show what is the order
or 'foo' and 'bar' directories there. the order might be arbitrary
-- it surely is not alphabetical and it might not be the order
created...

The order should not matter -- and maybe it didn't and some change
made that matter... 

I'd test now but I should be ZZZ :D


 BR,
 Jani.

Tomi

 ---
  test/T051-new-renames.sh | 40 
  1 file changed, 40 insertions(+)
  create mode 100755 test/T051-new-renames.sh

 diff --git a/test/T051-new-renames.sh b/test/T051-new-renames.sh
 new file mode 100755
 index ..febe006f5888
 --- /dev/null
 +++ b/test/T051-new-renames.sh
 @@ -0,0 +1,40 @@
 +#!/usr/bin/env bash
 +test_description='notmuch new with directory renames'
 +. ./test-lib.sh
 +
 +for loop in `seq 10`; do
 +
 +rm -rf ${MAIL_DIR}
 +
 +for i in `seq 10`; do
 +generate_message '[dir]=foo' '[subject]=Message foo $i'
 +done
 +
 +for i in `seq 10`; do
 +generate_message '[dir]=bar' '[subject]=Message bar $i'
 +done
 +
 +test_begin_subtest Index the messages, round $loop
 +output=$(NOTMUCH_NEW)
 +test_expect_equal $output Added 20 new messages to the database.
 +
 +all_files=$(notmuch search --output=files \*)
 +count_foo=$(notmuch count folder:foo)
 +
 +test_begin_subtest Rename folder
 +mv ${MAIL_DIR}/foo ${MAIL_DIR}/baz
 +output=$(NOTMUCH_NEW)
 +test_expect_equal $output No new mail. Detected $count_foo file renames.
 +
 +test_begin_subtest Rename folder back
 +mv ${MAIL_DIR}/baz ${MAIL_DIR}/foo
 +output=$(NOTMUCH_NEW)
 +test_expect_equal $output No new mail. Detected $count_foo file renames.
 +
 +test_begin_subtest Files remain the same
 +output=$(notmuch search --output=files \*)
 +test_expect_equal $output $all_files
 +
 +done
 +
 +test_done
 -- 
 1.8.5.3

 ___
 notmuch mailing list
 notmuch@notmuchmail.org
 http://notmuchmail.org/mailman/listinfo/notmuch
___
notmuch mailing list
notmuch@notmuchmail.org
http://notmuchmail.org/mailman/listinfo/notmuch