diff --git a/test/emacs-forgetfulness b/test/emacs-forgetfulness deleted file mode 100755 index e17b26fa..00000000 --- a/test/emacs-forgetfulness +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -test_description=Emacs\'\ forgetfulness - -. test-lib.sh - -# RFC822 imposes a 998 character limit per line. -x=0123456789 # 10 -x=$x$x$x$x$x$x$x$x$x$x # 100 -x=$x$x$x$x$x$x$x$x$x # 900 - -# If setting this ``too high'' (TODO: yet to be determined), Emacs will crash -# with a segmentation fault. -n=20 -for i in $(seq 1 $n); do - # Roughly 2 KiB per message. That is, we need two messages in order to - # exceed the typical size of the pipe buffer (4 KiB on commodity systems). - generate_message [subject]=$i-$x [from]=$i-$x@x.x -done -# With 20 messages à 2 KiB, we have about 10 full pipe buffers, which should be -# enough to trigger the erroneous behavior. - -notmuch new > /dev/null - -test_begin_subtest 'Search for all messages' -output=$(exec 2>&1; \ - diff -wu \ - <(notmuch search \* \ - | sed \ - -e 's%^thread:[0-9a-f]*\ %%' \ - -e 's%;%%'; \ - echo 'End of search results.'; \ - echo) \ - <(test_emacs 2>&1 \ - '(notmuch-search "*") (notmuch-test-wait) (message (buffer-string))')) -test_expect_equal "$output" '' - -test_done diff --git a/test/emacs-large-search-buffer b/test/emacs-large-search-buffer new file mode 100755 index 00000000..f827bb14 --- /dev/null +++ b/test/emacs-large-search-buffer @@ -0,0 +1,27 @@ +#!/bin/bash +test_description="Emacs with large search results buffer" +. test-lib.sh + +x=xxxxxxxxxx # 10 +x=$x$x$x$x$x$x$x$x$x$x # 100 +x=$x$x$x$x$x$x$x$x$x # 900 + +# We generate a long subject here (over 900 bytes) so that the emacs +# search results get large quickly. With 30 such messages we should +# cross several 4kB page boundaries and see the bug. +n=30 +for i in $(seq 1 $n); do + # Roughly 100B2 KiB per message. That is, we need two messages in order to + # exceed the typical size of the pipe buffer (4 KiB on commodity systems). + generate_message '[subject]="$x $i of $n"' +done + +notmuch new > /dev/null + +test_begin_subtest 'Comparing emacs result to "notmuch search"' +expected="$(notmuch search '*' | sed -e 's/^thread:[0-9a-f]* //' -e 's/;//' -e 's/xx*/[BLOB]/') +End of search results." +output=$(test_emacs '(notmuch-search "*") (notmuch-test-wait) (message (buffer-string))' 2>&1 | sed -e s', *, ,g' -e 's/xx*/[BLOB]/') +test_expect_equal "$output" "$expected" + +test_done diff --git a/test/notmuch-test b/test/notmuch-test index c0aed314..8dd9c1ec 100755 --- a/test/notmuch-test +++ b/test/notmuch-test @@ -36,8 +36,8 @@ TESTS=" long-id encoding emacs + emacs-large-search-buffer maildir-sync - emacs-forgetfulness " # Clean up any results from a previous run