mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-28 13:44:12 +01:00
a0ebd5c5e4
The patch replaces all (message (buffer-string)) calls in emacs tests with (princ (buffer-string)). This avoids accidentally interpreting '%' as format specifiers and makes code simpler because we do not need to capture stderr. Also, the patch works around an Emacs (23.3+1-1 on current Debian Unstable) segfault in "Ensure that emacs doesn't drop results" test. Note: the segfault does not happen on every test run. Though, it seems to be consistently reproducible if the test uses 300 messages instead of 30. Hopefully, it is the crash described in Emacs bug #8545 [1] which is already fixed. [1] http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8545
34 lines
1.3 KiB
Bash
Executable file
34 lines
1.3 KiB
Bash
Executable file
#!/usr/bin/env 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 "Ensure that emacs doesn't drop results"
|
|
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) (princ (buffer-string))' | sed -e s', *, ,g' -e 's/xxx*/[BLOB]/g')
|
|
test_expect_equal "$output" "$expected"
|
|
|
|
test_begin_subtest "Ensure that emacs doesn't drop error messages"
|
|
output=$(test_emacs '(notmuch-search "--this-option-does-not-exist") (notmuch-test-wait) (princ (buffer-string))')
|
|
test_expect_equal "$output" "Error: Unexpected output from notmuch search:
|
|
Unrecognized option: --this-option-does-not-exist
|
|
End of search results. (process returned 1)"
|
|
|
|
test_done
|