diff options
| author | David Bremner <david@tethera.net> | 2019-03-24 00:32:43 -0300 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2019-05-03 07:48:43 -0300 |
| commit | 852167479f552cd396b1fdcbe9b1cb4db40e5e0a (patch) | |
| tree | dbf416020044b0b40882c3a0b774d6489511c318 /test | |
| parent | 98b3eebc37eba8b86e888af5dc57dd28ca923e24 (diff) | |
lib/message_file: open gzipped files
Rather than storing the lower level stdio FILE object, we store a
GMime stream. This allows both transparent decompression, and passing
the stream into GMime for parsing. As a side effect, we can let GMime
close the underlying OS stream (indeed, that stream isn't visible here
anymore).
This change is enough to get notmuch-{new,search} working, but there is still
some work required for notmuch-show, to be done in a following commit.
Diffstat (limited to 'test')
| -rwxr-xr-x | test/T750-gzip.sh | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/test/T750-gzip.sh b/test/T750-gzip.sh new file mode 100755 index 00000000..96464956 --- /dev/null +++ b/test/T750-gzip.sh @@ -0,0 +1,115 @@ +#!/usr/bin/env bash +test_description='support for gzipped messages' +. $(dirname "$0")/test-lib.sh || exit 1 + +####################################################################### +# notmuch new +test_begin_subtest "Single new gzipped message" +generate_message +gzip $gen_msg_filename +output=$(NOTMUCH_NEW --debug) +test_expect_equal "$output" "Added 1 new message to the database." + +test_begin_subtest "Single new gzipped message (full-scan)" +generate_message +gzip $gen_msg_filename +output=$(NOTMUCH_NEW --debug --full-scan 2>&1) +test_expect_equal "$output" "Added 1 new message to the database." + +test_begin_subtest "Multiple new messages, one gzipped" +generate_message +gzip $gen_msg_filename +generate_message +output=$(NOTMUCH_NEW --debug) +test_expect_equal "$output" "Added 2 new messages to the database." + +test_begin_subtest "Multiple new messages, one gzipped (full-scan)" +generate_message +gzip $gen_msg_filename +generate_message +output=$(NOTMUCH_NEW --debug --full-scan 2>&1) +test_expect_equal "$output" "Added 2 new messages to the database." + +test_begin_subtest "Renamed (gzipped) message" +generate_message +echo $gen_message_filename +notmuch new > /dev/null +gzip $gen_msg_filename +output=$(NOTMUCH_NEW --debug) +test_expect_equal "$output" "(D) add_files, pass 2: queuing passed file ${gen_msg_filename} for deletion from database +No new mail. Detected 1 file rename." + +###################################################################### +# notmuch search + +test_begin_subtest "notmuch search with partially gzipped mail store" +notmuch search '*' | notmuch_search_sanitize > OUTPUT +cat <<EOF > EXPECTED +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Single new gzipped message (inbox unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Single new gzipped message (full-scan) (inbox unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Multiple new messages, one gzipped (inbox unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Multiple new messages, one gzipped (inbox unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Multiple new messages, one gzipped (full-scan) (inbox unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Multiple new messages, one gzipped (full-scan) (inbox unread) +thread:XXX 2001-01-05 [1/1] Notmuch Test Suite; Renamed (gzipped) message (inbox unread) +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "notmuch search --output=files with partially gzipped mail store" +notmuch search --output=files '*' | notmuch_search_files_sanitize > OUTPUT +cat <<EOF > EXPECTED +MAIL_DIR/msg-001.gz +MAIL_DIR/msg-002.gz +MAIL_DIR/msg-003.gz +MAIL_DIR/msg-004 +MAIL_DIR/msg-005.gz +MAIL_DIR/msg-006 +MAIL_DIR/msg-007.gz +EOF +test_expect_equal_file EXPECTED OUTPUT + +###################################################################### +# notmuch show + +test_begin_subtest "show un-gzipped message" +notmuch show id:msg-006@notmuch-test-suite | notmuch_show_sanitize > OUTPUT +cat <<EOF > EXPECTED +message{ id:msg-006@notmuch-test-suite depth:0 match:1 excluded:0 filename:/XXX/mail/msg-006 +header{ +Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (inbox unread) +Subject: Multiple new messages, one gzipped (full-scan) +From: Notmuch Test Suite <test_suite@notmuchmail.org> +To: Notmuch Test Suite <test_suite@notmuchmail.org> +Date: Fri, 05 Jan 2001 15:43:51 +0000 +header} +body{ +part{ ID: 1, Content-type: text/plain +This is just a test message (#6) +part} +body} +message} +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "show gzipped message" +test_subtest_known_broken +notmuch show id:msg-007@notmuch-test-suite | notmuch_show_sanitize > OUTPUT +cat <<EOF > EXPECTED +message{ id:msg-007@notmuch-test-suite depth:0 match:1 excluded:0 filename:/XXX/mail/msg-007.gz +header{ +Notmuch Test Suite <test_suite@notmuchmail.org> (2001-01-05) (inbox unread) +Subject: Renamed (gzipped) message +From: Notmuch Test Suite <test_suite@notmuchmail.org> +To: Notmuch Test Suite <test_suite@notmuchmail.org> +Date: Fri, 05 Jan 2001 15:43:50 +0000 +header} +body{ +part{ ID: 1, Content-type: text/plain +This is just a test message (#7) +part} +body} +message} +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_done |
