Diff below brings notmuch to 0.31. From NEWS [0]: - notmuch now supports Emacs 27.1 - add support for moving between threads after notmuch-tree-from-search-thread
The test suite completes with 4 failing tests, test.log attached: 1210/1219 tests passed. 3 broken tests failed as expected. 4 tests failed. 2 tests skipped. All tests in 1 file skipped. I'm not sure if these failures are new. Current version in ports hangs during 'make test' after 'Message with quote in Message-Id:'. Probably related with Emacs 27.1. Unfortunately I don't understand these failures and could use some help. No issues found while using this update, in combination with neomutt, on amd64. Python bindings have been build tested only. [0] https://notmuchmail.org/news/release-0.31/ diff --git Makefile.inc Makefile.inc index a1a0e2c0411..e0a6a135fce 100644 --- Makefile.inc +++ Makefile.inc @@ -1,6 +1,6 @@ # $OpenBSD: Makefile.inc,v 1.2 2020/08/13 18:21:18 sthen Exp $ -V = 0.30 +V = 0.31 DISTNAME = notmuch-$V EXTRACT_SUFX = .tar.xz diff --git notmuch/distinfo notmuch/distinfo index 6acd960833a..159d653a986 100644 --- notmuch/distinfo +++ notmuch/distinfo @@ -1,2 +1,2 @@ -SHA256 (notmuch-0.30.tar.xz) = Xjuqb+EdZcZ+Jq5Ii+EbMguuBOM2rMnGRiH340SQlvo= -SIZE (notmuch-0.30.tar.xz) = 711904 +SHA256 (notmuch-0.31.tar.xz) = Vx+g4VOchmErHyssgKOY4I7P71LifvfkjPjjuE+hg5Q= +SIZE (notmuch-0.31.tar.xz) = 713144 diff --git notmuch/patches/patch-Makefile_global notmuch/patches/patch-Makefile_global index 7e12c72b2a3..dcbd72e8ea9 100644 --- notmuch/patches/patch-Makefile_global +++ notmuch/patches/patch-Makefile_global @@ -3,7 +3,7 @@ $OpenBSD: patch-Makefile_global,v 1.1.1.1 2020/05/15 08:58:14 sthen Exp $ Index: Makefile.global --- Makefile.global.orig +++ Makefile.global -@@ -16,7 +16,7 @@ else +@@ -17,7 +17,7 @@ else DATE:=$(shell date +%F) endif diff --git notmuch/patches/patch-configure notmuch/patches/patch-configure index c09b2e882cb..c7cd56424e9 100644 --- notmuch/patches/patch-configure +++ notmuch/patches/patch-configure @@ -3,7 +3,7 @@ $OpenBSD: patch-configure,v 1.4 2020/10/05 19:46:17 jca Exp $ Index: configure --- configure.orig +++ configure -@@ -721,9 +721,9 @@ if ! pkg-config --exists zlib; then +@@ -702,9 +702,9 @@ if ! pkg-config --exists zlib; then rm -f compat/gen_zlib_pc fi @@ -15,3 +15,12 @@ Index: configure printf "Yes.\n" have_zlib=1 zlib_cflags=$(pkg-config --cflags zlib) +@@ -1536,7 +1536,7 @@ EOF + if [ $WITH_PYTHON_DOCS = "1" ]; then + echo "tags.add('WITH_PYTHON')" + fi +- printf "rsti_dir = '%s'\n" $(realpath emacs) ++ printf "rsti_dir = '../emacs'" + } > sphinx.config + + # Finally, after everything configured, inform the user how to continue. diff --git notmuch/patches/patch-doc_Makefile_local notmuch/patches/patch-doc_Makefile_local index 1cff4b01245..2066ec07b09 100644 --- notmuch/patches/patch-doc_Makefile_local +++ notmuch/patches/patch-doc_Makefile_local @@ -7,8 +7,8 @@ Index: doc/Makefile.local # You can set these variables from the command line. SPHINXOPTS := -q --SPHINXBUILD = WITH_EMACS=${WITH_EMACS} RSTI_DIR=$(realpath emacs) sphinx-build -+SPHINXBUILD = WITH_EMACS=${WITH_EMACS} RSTI_DIR=$(realpath emacs) sphinx-build-3 +-SPHINXBUILD = sphinx-build ++SPHINXBUILD = sphinx-build-3 DOCBUILDDIR := $(dir)/_build # Internal variables. diff --git notmuch/patches/patch-doc_conf_py notmuch/patches/patch-doc_conf_py index a7eb543a19f..262f54889f9 100644 --- notmuch/patches/patch-doc_conf_py +++ notmuch/patches/patch-doc_conf_py @@ -3,7 +3,7 @@ $OpenBSD: patch-doc_conf_py,v 1.2 2020/08/13 18:21:19 sthen Exp $ Index: doc/conf.py --- doc/conf.py.orig +++ doc/conf.py -@@ -17,7 +17,7 @@ copyright = u'2009-2020, Carl Worth and many others' +@@ -19,7 +19,7 @@ copyright = u'2009-2020, Carl Worth and many others' location = os.path.dirname(__file__) for pathdir in ['.', '..']: diff --git notmuch/patches/patch-notmuch-new_c notmuch/patches/patch-notmuch-new_c index 05b307edc36..3a9ee9de9e0 100644 --- notmuch/patches/patch-notmuch-new_c +++ notmuch/patches/patch-notmuch-new_c @@ -6,7 +6,7 @@ when upgrading database, back up the old db without compression since Index: notmuch-new.c --- notmuch-new.c.orig +++ notmuch-new.c -@@ -1148,7 +1148,7 @@ notmuch_new_command (notmuch_config_t *config, int arg +@@ -1151,7 +1151,7 @@ notmuch_new_command (notmuch_config_t *config, int arg * relatively small. */ const char *backup_name = @@ -15,7 +15,7 @@ Index: notmuch-new.c dot_notmuch_path, gm_time->tm_year + 1900, gm_time->tm_mon + 1, -@@ -1160,11 +1160,11 @@ notmuch_new_command (notmuch_config_t *config, int arg +@@ -1163,11 +1163,11 @@ notmuch_new_command (notmuch_config_t *config, int arg if (add_files_state.verbosity >= VERBOSITY_NORMAL) { printf ("Welcome to a new version of notmuch! Your database will now be upgraded.\n"); printf ("This process is safe to interrupt.\n"); diff --git notmuch/patches/patch-test_T355-smime_sh notmuch/patches/patch-test_T355-smime_sh deleted file mode 100644 index 314bc8d210b..00000000000 --- notmuch/patches/patch-test_T355-smime_sh +++ /dev/null @@ -1,17 +0,0 @@ -$OpenBSD: patch-test_T355-smime_sh,v 1.2 2020/08/13 18:21:19 sthen Exp $ - -OpenSSL has sha1 as default fingerprint algo -LibreSSL has md5 as default fingerprint algo - -Index: test/T355-smime.sh ---- test/T355-smime.sh.orig -+++ test/T355-smime.sh -@@ -6,7 +6,7 @@ test_description='S/MIME signature verification and de - test_require_external_prereq openssl - test_require_external_prereq gpgsm - --FINGERPRINT=$(openssl x509 -fingerprint -in "$NOTMUCH_SRCDIR/test/smime/key+cert.pem" -noout | sed -e 's/^.*=//' -e s/://g) -+FINGERPRINT=$(openssl x509 -fingerprint -sha1 -in "$NOTMUCH_SRCDIR/test/smime/key+cert.pem" -noout | sed -e 's/^.*=//' -e s/://g) - - add_gpgsm_home - diff --git notmuch/patches/patch-test_T530-upgrade_sh notmuch/patches/patch-test_T530-upgrade_sh deleted file mode 100644 index ffc735de4be..00000000000 --- notmuch/patches/patch-test_T530-upgrade_sh +++ /dev/null @@ -1,18 +0,0 @@ -$OpenBSD: patch-test_T530-upgrade_sh,v 1.1.1.1 2020/05/15 08:58:14 sthen Exp $ - -modify test because we don't have notmuch dump --gzip - -Index: test/T530-upgrade.sh ---- test/T530-upgrade.sh.orig -+++ test/T530-upgrade.sh -@@ -38,8 +38,8 @@ Your notmuch database has now been upgraded. - No new mail." - - test_begin_subtest "tag backup matches pre-upgrade dump" --gunzip -c ${MAIL_DIR}/.notmuch/dump-*.gz | sort > backup-dump --test_expect_equal_file pre-upgrade-dump backup-dump -+<${MAIL_DIR}/.notmuch/dump-* sort > backup-dump -+test_expect_equal_file pre-upgrade-dump backup-dump - - test_begin_subtest "folder: no longer matches in the middle of path" - output=$(notmuch search folder:baz) diff --git py-notmuch/distinfo py-notmuch/distinfo index 6acd960833a..159d653a986 100644 --- py-notmuch/distinfo +++ py-notmuch/distinfo @@ -1,2 +1,2 @@ -SHA256 (notmuch-0.30.tar.xz) = Xjuqb+EdZcZ+Jq5Ii+EbMguuBOM2rMnGRiH340SQlvo= -SIZE (notmuch-0.30.tar.xz) = 711904 +SHA256 (notmuch-0.31.tar.xz) = Vx+g4VOchmErHyssgKOY4I7P71LifvfkjPjjuE+hg5Q= +SIZE (notmuch-0.31.tar.xz) = 713144
gmake -C doc/_build/texinfo info cd bindings/python-cffi && \ /usr/local/bin/python3.8 setup.py build --build-lib build/stage && \ mkdir -p build/stage/tests && cp tests/*.py build/stage/tests gmake[1]: Entering directory '/tmp/ports/pobj/notmuch-0.31/notmuch-0.31/doc/_build/texinfo' gmake[1]: Nothing to be done for 'info'. gmake[1]: Leaving directory '/tmp/ports/pobj/notmuch-0.31/notmuch-0.31/doc/_build/texinfo' running build running build_py running build_ext generating cffi module 'build/temp.openbsd-6.8-amd64-3.8/notmuch2._capi.c' already up-to-date T000-basic: Testing the test framework itself. PASS success is reported like this PASS test runs if prerequisite is satisfied PASS tests clean up after themselves PASS tests clean up even after a failure PASS failure to clean up causes the test to fail PASS Ensure that test output is suppressed unless the test fails PASS Ensure that -v does not suppress test output PASS test that mail store was created PASS mail store should be empty PASS NOTMUCH_CONFIG is set and points to an existing file PASS PATH is set to build directory PASS notmuch is compiled with debugging symbols T010-help-test: Testing online help PASS notmuch --help PASS notmuch help PASS notmuch --version PASS notmuch --help tag PASS notmuch help tag T020-compact: Testing "notmuch compact" PASS Running compact PASS Compact preserves database PASS Restoring Backup PASS Checking restored backup T030-config: Testing "notmuch config" PASS Get string value PASS Get list value PASS Set string value PASS Set string value again PASS Set list value PASS Set list value again PASS Remove key PASS Remove non-existent key PASS List all items PASS Top level --config=FILE option PASS Top level --config:FILE option PASS Top level --config<space>FILE option PASS Top level --config=FILE option changed the right file PASS Read config file through a symlink PASS Write config file through a symlink PASS Writing config file through symlink follows symlink PASS Absolute database path returned PASS Relative database path properly expanded T040-setup: Testing "notmuch setup" PASS Notmuch new without a config suggests notmuch setup PASS Create a new config interactively T050-new: Testing "notmuch new" in several variations PASS No new messages PASS Single new message PASS Single message (full-scan) PASS Multiple new messages PASS Multiple new messages (full-scan) PASS No new messages (non-empty DB) PASS No new messages (full-scan) PASS New directories PASS Alternate inode order PASS Message moved in PASS Renamed message PASS Deleted message PASS Renamed directory PASS Deleted directory PASS New directory (at end of list) PASS Deleted directory (end of list) PASS New symlink to directory PASS New symlink to a file PASS Broken symlink aborts PASS New two-level directory PASS Deleted two-level directory PASS One character directory at top level PASS Support single-message mbox PASS Skip and report non-mail files PASS Ignore files and directories specified in new.ignore PASS Ignore files and directories specified in new.ignore (full-scan) PASS Ignore files and directories specified in new.ignore (multiple occurrences) PASS Don't stop for ignored broken symlinks PASS Ignore files and directories specified in new.ignore (regexp) PASS Quiet: No new mail. PASS Quiet: new, removed and renamed messages. PASS Empty tags in new.tags are forbidden PASS Tags starting with '-' in new.tags are forbidden PASS Invalid tags set exit code PASS Xapian exception: read only files PASS Handle files vanishing between scandir and add_file PASS reference loop does not crash PASS reference loop ordered by date T060-count: Testing "notmuch count" for messages and threads PASS message count is the default for notmuch count PASS message count with --output=messages PASS thread count with --output=threads PASS thread count is the default for notmuch search PASS files count PASS files count for a duplicate message-id PASS count with no matching messages PASS count with no matching threads PASS message count is the default for batch count PASS batch message count PASS batch thread count PASS batch message count with input file PASS error message for database open PASS error message from query_search_messages PASS count library function is non-destructive T070-insert: Testing "notmuch insert" PASS Insert zero-length file PASS Insert non-message PASS Database empty so far PASS Insert message PASS Permissions on inserted message should be 0600 PASS Insert message adds default tags PASS Insert duplicate message PASS Duplicate message does not change tags PASS Insert message, add tag PASS Insert tagged world-readable message PASS Permissions on inserted world-readable message should be 0644 PASS Insert tagged world-readable message with group-only umask PASS Permissions on inserted world-readable message with funny umask should be 0640 PASS Insert message, add/remove tags PASS Insert message with default tags stays in new/ PASS Insert message with non-maildir synced tags stays in new/ PASS Insert message with custom new.tags goes to cur/ PASS Insert message with custom new.tags actually gets the tags PASS Insert message with maildir synced tags goes to cur/ PASS Insert message with maildir sync off goes to new/ PASS Insert message into folder PASS Insert message into top level folder PASS Insert message into folder with trailing / PASS Insert message into folder, add/remove tags PASS Insert message into non-existent folder PASS Insert message, create folder PASS Insert message, create subfolder PASS Created subfolder should have permissions 0700 PASS Created subfolder new/ should also have permissions 0700 PASS Insert message, create world-readable subfolder PASS Created world-readable subfolder should have permissions 0755 PASS Created world-readable subfolder new/ should also have permissions 0755 PASS Insert message, create existing subfolder PASS Insert message, create invalid subfolder PASS Empty tags in new.tags are forbidden PASS Tags starting with '-' in new.tags are forbidden PASS Invalid tags set exit code PASS EXIT_FAILURE when index_file returns FILE_NOT_EMAIL PASS success exit with --keep when index_file returns FILE_NOT_EMAIL PASS EXIT_FAILURE when index_file returns READ_ONLY_DATABASE PASS success exit with --keep when index_file returns READ_ONLY_DATABASE PASS EXIT_FAILURE when index_file returns UPGRADE_REQUIRED PASS success exit with --keep when index_file returns UPGRADE_REQUIRED PASS EXIT_FAILURE when index_file returns PATH_ERROR PASS success exit with --keep when index_file returns PATH_ERROR PASS EX_TEMPFAIL when index_file returns OUT_OF_MEMORY PASS success exit with --keep when index_file returns OUT_OF_MEMORY PASS EX_TEMPFAIL when index_file returns XAPIAN_EXCEPTION PASS success exit with --keep when index_file returns XAPIAN_EXCEPTION T080-search: Testing "notmuch search" in several variations PASS Search body PASS Search by from: PASS Search by to: PASS Search by subject: PASS Search by subject (utf-8): PASS Search by id: PASS Search by mid: PASS Search by tag: PASS Search by thread: PASS Search body (phrase) PASS Search by from: (address) PASS Search by from: (name) PASS Search by from: (name and address) PASS Search by from: without prefix (name and address) PASS Search by to: (address) PASS Search by to: (name) PASS Search by to: (name and address) PASS Search by to: without prefix (name and address) PASS Search by subject: (phrase) PASS Search for all messages ("*") PASS Search body (utf-8): PASS headers do not have adjacent term positions PASS parts have non-overlapping term positions PASS parts do not have adjacent term positions T090-search-output: Testing various settings for "notmuch search --output=" PASS --output=threads PASS --output=threads --format=json PASS --output=messages PASS --output=messages --duplicate=1 PASS --output=messages --duplicate=2 PASS --output=messages --duplicate=3 PASS --output=messages --format=json PASS --output=messages --format=json --duplicate=1 PASS --output=messages --format=json --duplicate=2 PASS --output=messages --format=json --duplicate=3 PASS --output=files PASS --output=files --duplicate=1 PASS --output=files --format=json PASS --output=files --format=json --duplicate=2 PASS --output=tags PASS --output=tags --format=json PASS sanitize output for quoted-printable line-breaks in author and subject PASS search for non-existent message prints nothing PASS search --format=json for non-existent message prints proper empty json T095-address: Testing "notmuch address" in several variants PASS --output=sender PASS without --output PASS --output=sender --format=json PASS --output=recipients PASS --output=sender --output=recipients PASS --output=sender --output=count PASS --output=recipients --output=address PASS --output=sender --output=address --output=count PASS --output=count --format=json PASS --deduplicate=no --sort=oldest-first --output=sender PASS --deduplicate=no --sort=newest-first --output=sender --output=recipients PASS --deduplicate=address --output=sender --output=recipients PASS --deduplicate=no --output=sender PASS --deduplicate=mailbox --output=sender --output=count PASS --deduplicate=address --output=sender --output=count T100-search-by-folder: Testing "notmuch search" by folder: and path: (with variations) PASS Single-world folder: specification (multiple results) PASS Top level folder PASS Two-word path to narrow results to one PASS Folder search with --output=files PASS After removing duplicate instance of matching path PASS Folder search with --output=files part #2 PASS After removing duplicate instance of matching path part #2 PASS After rename, old path returns nothing PASS After rename, new path returns result PASS folder: search PASS top level folder: search PASS path: search PASS top level path: search PASS recursive path: search T110-search-position-overlap-bug: Testing that notmuch does not overlap term positions PASS Search for a@b.c matches PASS Search for x@y.z matches PASS Search for a@y.c must not match T120-search-insufficient-from-quoting: Testing messages with unquoted . in name PASS Search by first name PASS Search by last name: PASS Search by address: PASS Search for all messages: T130-search-limiting: Testing "notmuch search" --offset and --limit parameters PASS messages: limit does the right thing PASS messages: concatenation of limited searches PASS messages: limit larger than result set PASS messages: limit = 0 PASS messages: offset does the right thing PASS messages: offset = 0 PASS messages: negative offset PASS messages: negative offset PASS messages: negative offset combined with limit PASS messages: negative offset combined with equal limit PASS messages: negative offset combined with large limit PASS messages: negative offset larger then results PASS threads: limit does the right thing PASS threads: concatenation of limited searches PASS threads: limit larger than result set PASS threads: limit = 0 PASS threads: offset does the right thing PASS threads: offset = 0 PASS threads: negative offset PASS threads: negative offset PASS threads: negative offset combined with limit PASS threads: negative offset combined with equal limit PASS threads: negative offset combined with large limit PASS threads: negative offset larger then results T140-excludes: Testing "notmuch search, count and show" with excludes in several variations PASS Search, exclude "deleted" messages from search PASS Search, exclude "deleted" messages from message search PASS Search, exclude "deleted" messages from message search --exclude=false PASS Search, exclude "deleted" messages from message search (non-existent exclude-tag) PASS Search, exclude "deleted" messages from search, overridden PASS Search, exclude "deleted" messages from threads PASS Search, don't exclude "deleted" messages when --exclude=flag specified PASS Search, don't exclude "deleted" messages from search if not configured PASS Search, default exclusion (thread summary) PASS Search, default exclusion (messages) PASS Search, exclude=true (thread summary) PASS Search, exclude=true (messages) PASS Search, exclude=false (thread summary) PASS Search, exclude=false (messages) PASS Search, exclude=flag (thread summary) PASS Search, exclude=flag (messages) PASS Search, exclude=all (thread summary) PASS Search, exclude=all (messages) PASS Search, default exclusion: tag in query (thread summary) PASS Search, default exclusion: tag in query (messages) PASS Search, exclude=true: tag in query (thread summary) PASS Search, exclude=true: tag in query (messages) PASS Search, exclude=false: tag in query (thread summary) PASS Search, exclude=false: tag in query (messages) PASS Search, exclude=flag: tag in query (thread summary) PASS Search, exclude=flag: tag in query (messages) PASS Search, exclude=all: tag in query (thread summary) PASS Search, exclude=all: tag in query (messages) PASS Count, default exclusion (messages) PASS Count, default exclusion (threads) PASS Count, exclude=true (messages) PASS Count, exclude=true (threads) PASS Count, exclude=false (messages) PASS Count, exclude=false (threads) PASS Count, default exclusion: tag in query (messages) PASS Count, default exclusion: tag in query (threads) PASS Count, exclude=true: tag in query (messages) PASS Count, exclude=true: tag in query (threads) PASS Count, exclude=false: tag in query (messages) PASS Count, exclude=false: tag in query (threads) PASS Show, default exclusion PASS Show, default exclusion (entire-thread) PASS Show, exclude=true PASS Show, exclude=true (entire-thread) PASS Show, exclude=false PASS Show, exclude=false (entire-thread) T150-tagging: Testing "notmuch tag" PASS Adding tags PASS Removing tags PASS No tag operations PASS No query PASS Redundant tagging PASS Remove all PASS Remove all with batch PASS Remove all with a no-op PASS Special characters in tags PASS Tagging order PASS --batch PASS --input PASS --batch --input PASS --batch --input --remove-all PASS --batch, dependence on previous line PASS --batch, blank lines and comments PASS --batch: checking error messages PASS --batch: tags with quotes PASS --batch: tags with punctuation and space PASS --batch: unicode tags PASS --batch: only space and % needs to be encoded. PASS --batch: unicode message-ids PASS Empty tag names PASS Tag name beginning with - PASS Xapian exception: read only files T160-json: Testing --format=json output PASS Show message: json PASS Show message: json --body=true PASS Show message: json --body=false PASS Search message: json PASS Show message: json, utf-8 PASS Show message: json, inline attachment filename PASS Search message: json, utf-8 PASS Search message: json, 64-bit timestamp PASS Format version: too low PASS Format version: too high PASS Show message: multiple filenames PASS Show message: multiple filenames, format version 2 T170-sexp: Testing --format=sexp output PASS Show message: sexp PASS Show message: sexp --body=true PASS Show message: sexp --body=false PASS Search message: sexp PASS Show message: sexp, utf-8 PASS Search message: sexp, utf-8 PASS Show message: sexp, inline attachment filename T180-text: Testing --format=text output PASS Show message: text PASS Search message: text PASS Show message: text, utf-8 PASS Search message: text, utf-8 PASS Search message tags: text0 PASS Compare text vs. text0 for threads PASS Compare text vs. text0 for messages PASS Compare text vs. text0 for files PASS Compare text vs. text0 for tags T190-multipart: Testing output of multipart message PASS --format=text --part=0, full message PASS --format=text --part=0 --body=false, message header PASS --format=text --part=1, message body PASS --format=text --part=2, multipart/mixed PASS --format=text --part=3, rfc822 part PASS --format=text --part=4, rfc822's multipart PASS --format=text --part=5, rfc822's html part PASS --format=text --include-html --part=5, rfc822's html part PASS --format=text --part=6, rfc822's text part PASS --format=text --part=7, inline attachment PASS --format=text --part=8, plain text part PASS --format=text --part=9, pgp signature (unverified) PASS --format=text --part=8, no part, expect error PASS --format=json --part=0, full message PASS --format=json --part=1, message body PASS --format=json --part=2, multipart/mixed PASS --format=json --part=3, rfc822 part PASS --format=json --part=4, rfc822's multipart/alternative PASS --format=json --part=5, rfc822's html part PASS --format=json --part=6, rfc822's text part PASS --format=json --part=7, inline attachment PASS --format=json --part=8, plain text part PASS --format=json --part=9, pgp signature (unverified) PASS --format=json --part=10, no part, expect error PASS --format=raw PASS --format=raw --part=0, full message PASS --format=raw --part=1, message body PASS --format=raw --part=2, multipart/mixed PASS --format=raw --part=3, rfc822 part PASS --format=raw --part=4, rfc822's multipart PASS --format=raw --part=5, rfc822's html part PASS --format=raw --part=6, rfc822's text part PASS --format=raw --part=7, inline attachment PASS --format=raw --part=8, plain text part PASS --format=raw --part=9, pgp signature (unverified) PASS --format=raw --part=10, no part, expect error PASS --format=mbox PASS --format=mbox --part=1, incompatible, expect error PASS 'notmuch reply' to a multipart message PASS 'notmuch reply' to a multipart message with json format PASS 'notmuch show --part' does not corrupt a part with CRLF pair PASS html parts excluded by default PASS html parts included PASS indexes mime-type #1 PASS indexes mime-type #2 PASS indexes mime-type #3 PASS case of Content-Disposition doesn't matter for indexing T200-thread-naming: Testing naming of threads with changing subject PASS Initial thread name (oldest-first search) PASS Initial thread name (newest-first search) PASS Changed thread name (oldest-first search) PASS Changed thread name (newest-first search) PASS Ignore added reply prefix (Re:) PASS Ignore added reply prefix (Aw:) PASS Ignore added reply prefix (Vs:) PASS Ignore added reply prefix (Sv:) PASS Use empty subjects if necessary. PASS Avoid empty subjects if possible (newest-first). PASS Avoid empty subjects if possible (oldest-first). PASS Test order of messages in "notmuch show" T205-author-naming: Testing naming of authors with unusual addresses PASS Add author with empty quoted real name T210-raw: Testing notmuch show --format=raw PASS Attempt to show multiple raw messages PASS Show a raw message PASS Show another raw message PASS content, message of size 0001024 PASS return value, message of size 0001024 PASS content, message of size 0002048 PASS return value, message of size 0002048 PASS content, message of size 0004096 PASS return value, message of size 0004096 PASS content, message of size 0008192 PASS return value, message of size 0008192 PASS content, message of size 0016384 PASS return value, message of size 0016384 PASS content, message of size 0032768 PASS return value, message of size 0032768 PASS content, message of size 0065536 PASS return value, message of size 0065536 PASS content, message of size 0131072 PASS return value, message of size 0131072 PASS content, message of size 0262144 PASS return value, message of size 0262144 PASS content, message of size 0524288 PASS return value, message of size 0524288 PASS content, message of size 1048576 PASS return value, message of size 1048576 T220-reply: Testing "notmuch reply" in several variations PASS Basic reply PASS Multiple recipients PASS Reply with CC PASS Reply from alternate address PASS Reply from address in named group list PASS Support for Reply-To PASS Un-munging Reply-To PASS Un-munging Reply-To With Exact Match PASS Un-munging Reply-To With Raw addr-spec PASS Message with header of exactly 200 bytes PASS From guessing: Envelope-To PASS From guessing: X-Original-To PASS From guessing: Delivered-To PASS Reply with RFC 2047-encoded headers PASS Reply with RFC 2047-encoded headers (JSON) PASS Reply to a message with multiple Cc headers T230-reply-to-sender: Testing "notmuch reply --reply-to=sender" in several variations PASS Basic reply-to-sender PASS From Us, Basic reply to message PASS Multiple recipients PASS From Us, Multiple TO recipients PASS Reply with CC PASS From Us, Reply with CC PASS From Us, Reply no TO but with CC PASS Reply from alternate address PASS Support for Reply-To PASS Support for Reply-To with multiple recipients PASS Un-munging Reply-To PASS Message with header of exactly 200 bytes T240-dump-restore: Testing "notmuch dump" and "notmuch restore" PASS dump header PASS Dumping all tags PASS Dumping all tags II PASS Clearing all tags PASS Clearing all tags PASS Restoring original tags PASS Restore with nothing to do PASS Accumulate with existing tags PASS Accumulate with no tags PASS Accumulate with new tags PASS Invalid restore invocation PASS dump --output=outfile PASS dump --output=outfile -- SKIP dump --gzip SKIP dump --gzip --output=outfile PASS restoring gzipped stdin PASS restoring gzipped file PASS dump -- from:cworth PASS dump --output=outfile from:cworth PASS dump --output=outfile -- from:cworth PASS Check for a safe set of message-ids PASS format=batch-tag, dump sanity check. PASS format=batch-tag, missing newline PASS format=batch-tag, # round-trip PASS format=batch-tag, # blank lines and comments PASS format=batch-tag, # reverse-round-trip empty tag PASS restoring empty file is not an error PASS file of comments and blank lines is not an error PASS detect format=batch-tag with leading comments and blanks PASS detect format=sup with leading comments and blanks PASS format=batch-tag, round trip with strange tags PASS format=batch-tag, checking encoded output PASS restoring sane tags PASS format=batch-tag, restore=auto PASS format=sup, restore=auto PASS format=batch-tag, restore=default PASS format=sup, restore=default PASS restore: checking error messages PASS roundtripping random message-ids and tags T250-uuencode: Testing handling of uuencoded data PASS Ensure content before uu data is indexed PASS Ensure uu data is not indexed PASS Ensure content after uu data is indexed T260-thread-order: Testing threading when messages received out of order PASS Messages with one parent get linked in all delivery orders PASS Messages with all parents get linked in all delivery orders T270-author-order: Testing author reordering; PASS Adding parent message PASS Adding initial child message PASS Adding second child message PASS Searching when all three messages match PASS Searching when two messages match PASS Searching when only one message matches PASS Searching when only first message matches PASS Adding duplicate author PASS Searching when all four messages match PASS Adding non-monotonic child message PASS Searching non-monotonic messages (oldest-first) PASS Searching non-monotonic messages (newest-first) T280-from-guessing: Testing From line heuristics (with multiple configured addresses) PASS Magic from guessing (nothing to go on) PASS Magic from guessing (Envelope-to:) PASS Magic from guessing (X-Original-To:) PASS Magic from guessing (Received: .. for ..) PASS Magic from guessing (Received: domain) PASS Magic from guessing (multiple Received: headers) PASS Testing From line heuristics (with single configured address) PASS Magic from guessing (nothing to go on) PASS Magic from guessing (Envelope-to:) PASS Magic from guessing (X-Original-To:) PASS Magic from guessing (Received: .. for ..) PASS Magic from guessing (Received: domain) T290-long-id: Testing messages with ridiculously-long message IDs PASS Referencing long ID before adding PASS Adding message with long ID PASS Referencing long ID after adding PASS Ensure all messages were threaded together T300-encoding: Testing encoding issues PASS Message with text of unknown charset PASS Search for ISO-8859-2 encoded message PASS RFC 2047 encoded word with spaces PASS RFC 2047 encoded words back to back PASS RFC 2047 encoded words without space before or after PASS Mislabeled Windows-1252 encoding T310-emacs: Testing emacs interface PASS Syntax of emacs test library PASS Basic notmuch-hello view in emacs PASS Saved search with 0 results PASS No saved searches displayed (all with 0 results) PASS Basic notmuch-search view in emacs PASS Incremental parsing of search results PASS Navigation of notmuch-hello to search results PASS Basic notmuch-show view in emacs PASS Basic notmuch-show view in emacs default indentation PASS Basic notmuch-show view in emacs without indentation PASS Basic notmuch-show view in emacs with fourfold indentation PASS notmuch-show for message with invalid From PASS Navigation of notmuch-search to thread view PASS Add tag from search view PASS Remove tag from search view PASS Add tag (large query) PASS notmuch-show: add single tag to single message PASS notmuch-show: remove single tag from single message PASS notmuch-show: add multiple tags to single message PASS notmuch-show: remove multiple tags from single message PASS Message with .. in Message-Id: PASS Message with quote in Message-Id: PASS Sending a message via (fake) SMTP PASS Folding a long header when sending via (fake) SMTP PASS Verify that sent messages are saved/searchable (via FCC) PASS notmuch-fcc-dirs set to nil PASS notmuch-fcc-dirs set to a string PASS notmuch-fcc-dirs set to a list (with match) PASS notmuch-fcc-dirs set to a list (catch-all) PASS notmuch-fcc-dirs set to a list (no match) PASS Reply within emacs PASS Reply within emacs to a message with TAB in subject PASS Reply from alternate address within emacs PASS Reply from address in named group list within emacs PASS Reply within emacs to a multipart/mixed message PASS Reply within emacs to a multipart/alternative message PASS Reply within emacs to an html-only message PASS Reply within emacs to message from self PASS Quote MML tags in reply PASS Save attachment from within emacs using notmuch-show-save-attachments PASS Save attachment from within emacs using notmuch-show-save-part PASS Save 8bit attachment from within emacs using notmuch-show-save-attachments PASS View raw message within emacs PASS Hiding/showing signature in notmuch-show view PASS Detection and hiding of top-post quoting of message PASS Hiding message in notmuch-show view PASS Hiding message with visible citation in notmuch-show view PASS notmuch-show: show message headers PASS notmuch-show: hide message headers PASS notmuch-show: hide message headers (w/ notmuch-show-toggle-visibility-headers) PASS notmuch-show: collapse all messages in thread PASS notmuch-show: uncollapse all messages in thread PASS Stashing in notmuch-show PASS Stashing in notmuch-search PASS notmuch-show-advance-and-archive with invisible signature PASS Refresh show buffer PASS Refresh modified show buffer PASS Do not call notmuch for non-inlinable application/mpeg parts PASS Do not call notmuch for non-inlinable audio/mpeg parts PASS notmuch-hello-mode hook is called PASS notmuch-hello-mode hook is not called on updates PASS notmuch-hello-refresh hook is called PASS notmuch-hello-refresh hook is called on updates PASS Rendering HTML mail with images PASS Search handles subprocess error exit codes PASS Search handles subprocess warnings PASS Search thread tag operations are race-free PASS Search global tag operations are race-free PASS Term escaping PASS Sending a message calls the send message hooks T320-emacs-large-search-buffer: Testing Emacs with large search results buffer PASS Ensure that emacs doesn't drop results T330-emacs-subject-to-filename: Testing emacs: mail subject to filename PASS no patch sequence number PASS patch sequence number #1 PASS patch sequence number #2 PASS patch sequence number #3 PASS patch sequence number #4 PASS patch sequence number #5 PASS patch sequence number #6 PASS patch sequence number #7 PASS filename #1 PASS filename #2 PASS filename #3 PASS filename #4 PASS filename #5 PASS filename #6 PASS filename #7 PASS filename #8 PASS filename #9 PASS patch filename #1 PASS patch filename #2 PASS patch filename #3 PASS patch filename #4 T340-maildir-sync: Testing maildir synchronization PASS Adding 'S' flag to existing filename removes 'unread' tag PASS Adding message with 'S' flag prevents 'unread' tag PASS Adding message with 'S' w/o 'unread' in new.tags prevents 'unread' tag PASS Adding 'replied' tag adds 'R' flag to filename PASS notmuch show works with renamed file (without notmuch new) PASS notmuch reply works with renamed file (without notmuch new) PASS notmuch new detects no file rename after tag->flag synchronization PASS When read, message moved from new to cur PASS No rename should be detected by notmuch new PASS Adding non-maildir tags does not move message from new to cur PASS Message in cur lacking maildir info gets one on any tag change PASS Message in new with maildir info is moved to cur on any tag change PASS Removing 'S' flag from existing filename adds 'unread' tag PASS Removing info from filename leaves tags unchanged PASS Can remove unread tag from message in non-maildir directory PASS Message in non-maildir directory does not get renamed PASS notmuch dump/restore re-synchronizes maildir tags with flags PASS Adding flags to duplicate message tags the mail PASS Adding duplicate message without flags does not remove tags PASS Tag changes modify flags of multiple files PASS Synchronizing tag changes preserves unsupported maildir flags PASS A file with non-compliant maildir info will not be renamed PASS Files in new/ get default synchronized tags PASS draft is valid in new.tags PASS flagged is valid in new.tags PASS passed is valid in new.tags PASS replied is valid in new.tags T350-crypto: Testing PGP/MIME signature verification and decryption PASS emacs delivery of signed message PASS signed part content-type indexing PASS signature verification PASS detection of modified signed contents PASS corrupted pgp/mime signature PASS signature verification without full user ID validity PASS signature verification with signer key unavailable PASS emacs delivery of encrypted message with attachment PASS encrypted part content-type indexing PASS decryption, --format=text PASS decryption, --format=json PASS decryption, --format=json, --part=4 PASS decrypt attachment (--part=5 --format=raw) PASS decryption failure with missing key PASS emacs delivery of encrypted + signed message PASS decryption + signature verification PASS reply to encrypted message PASS Reply within emacs to an encrypted message PASS signature verification with revoked key T351-pgpmime-mangling: Testing PGP/MIME message mangling PASS show 'Mixed-Up' mangled PGP/MIME message correctly PASS reply to 'Mixed-Up' mangled PGP/MIME message correctly PASS repaired 'Mixed-up' messages can be found with index.repaired=mixedup PASS index cleartext of 'Mixed-Up' mangled PGP/MIME message PASS search cleartext of 'Mixed-Up' mangled PGP/MIME message T355-smime: Testing S/MIME signature verification and decryption PASS emacs delivery of S/MIME signed message PASS emacs delivery of S/MIME encrypted + signed message PASS Signature verification (openssl) PASS signature verification (notmuch CLI) PASS Decryption and signature verification (openssl) PASS Decryption (notmuch CLI) PASS Cryptographic message status (encrypted+signed) PASS encrypted+signed message is known to be encrypted, but signature is unknown PASS Encrypted body is not indexed PASS Reindex cleartext PASS signature is now known PASS Encrypted body is indexed PASS index PKCS#7 SignedData message PASS do not index embedded certificates from PKCS#7 SignedData PASS know the MIME type of the embedded part in PKCS#7 SignedData PASS PKCS#7 SignedData message is tagged 'signed' PASS show contents of PKCS#7 SignedData message PASS reply to PKCS#7 SignedData message with proper quoting and attribution PASS show PKCS#7 SignedData outputs valid JSON PASS Verify signature on PKCS#7 SignedData message PASS Verify signature on PKCS#7 SignedData message signer User ID T356-protected-headers: Testing Message decryption with protected headers PASS verify protected header is not visible without decryption PASS verify protected header is visible with decryption PASS when no external header is present, show masked subject as null PASS misplaced protected headers should not be made visible during decryption PASS verify double-wrapped phony protected header is not visible when inner decryption fails PASS cleartext phony protected headers should not be made visible when decryption fails PASS wrapped protected headers should not be made visible during decryption PASS internal headers without protected-header attribute should be skipped PASS verify nested message/rfc822 protected header is visible PASS show cryptographic envelope on signed mail PASS verify signed protected header PASS protected subject does not leak by default in replies PASS protected subject is not indexed by default PASS reindex message with protected header PASS protected subject is indexed when cleartext is indexed PASS indexed protected subject is visible in search PASS indexed protected subject is not visible in reply header PASS verify correct protected header when submessage exists PASS verify protected header is both signed and encrypted PASS verify protected header is signed even when not masked PASS reindex everything, ensure headers are as expected PASS when rendering protected headers, avoid rendering legacy-display part PASS when replying, avoid rendering legacy-display part PASS do not treat legacy-display part as body when indexing PASS identify message that had a legacy display part skipped during indexing PASS verify signed PKCS#7 subject (multipart-signed) PASS verify signed PKCS#7 subject (multipart-signed) signer User ID PASS verify signed PKCS#7 subject (onepart-signed) PASS verify signed PKCS#7 subject (onepart-signed) signer User ID PASS confirm signed and encrypted PKCS#7 subject (sign+enc) PASS confirm signed and encrypted PKCS#7 subject (sign+enc) signer User ID PASS confirm signed and encrypted PKCS#7 subject (sign+enc+legacy-disp) PASS confirm signed and encrypted PKCS#7 subject (sign+enc+legacy-disp) signer User ID PASS confirm encryption-protected PKCS#7 subject (enc+legacy-disp) T357-index-decryption: Testing indexing decrypted mail PASS emacs delivery of encrypted message PASS search for unindexed cleartext PASS emacs delivery of encrypted message PASS emacs delivery of encrypted message, indexed cleartext PASS emacs search by property for one message PASS show the message body of the encrypted message PASS message should go away after deletion PASS message cleartext not present after insert PASS stash decryption during show PASS search should now find the contents PASS message cleartext is present after reinserting with --decrypt=true PASS delete all copies of the message PASS message cleartext is present with insert --decrypt=true PASS tagging all messages PASS verify that tags have not changed PASS reindex old messages PASS reindexed encrypted message, including cleartext PASS emacs search by property for both messages PASS reindex in auto mode PASS reindexed encrypted messages, should not have changed PASS reindex without cleartext PASS reindexed encrypted messages, without cleartext PASS reindex using only session keys PASS reindexed encrypted messages, decrypting only with session keys PASS emacs search by property with both messages unindexed PASS verify that tags remain without cleartext PASS index cleartext without keeping session keys PASS Ensure that the indexed terms are present PASS show one of the messages with --decrypt=true PASS Ensure that we cannot show the message with --decrypt=auto PASS indexing message fails when secret key not available PASS cannot find cleartext index PASS cleartext index recovery on reindexing with stashed session keys PASS notmuch reply should show cleartext if session key is present PASS notmuch show should show cleartext if session key is present PASS notmuch show should show nothing if decryption is explicitly disallowed PASS purging stashed session keys should lose access to the cleartext PASS and cleartext should be unrecoverable now that there are no stashed session keys PASS verify signature without a session key stashed when --decrypt=true PASS do not verify sig without a session key stashed if --decrypt=auto PASS verify signature when --decrypt=stash PASS verify signature with stashed session key T358-emacs-protected-headers: Testing protected headers in emacs interface PASS notmuch-search should show not unindexed protected subject header in emacs PASS notmuch-show should not show unindexed protected subject header in emacs when nm-c-process-mime is nil PASS notmuch-show should show protected subject header in emacs PASS Reply within emacs to a message with protected headers, not leaking subject PASS defaulting to indexing cleartext PASS try reindexing protected header message PASS notmuch-search should show indexed protected subject header in emacs PASS don't leak protected subject during reply, even if indexed T360-symbol-hiding: Testing exception symbol hiding FAIL running test --- T360-symbol-hiding.1.EXPECTED Fri Oct 16 10:49:38 2020 +++ T360-symbol-hiding.1.OUTPUT Fri Oct 16 10:49:39 2020 @@ -1,2 +1 @@ -A Xapian exception occurred opening database: Couldn't stat 'CWD/fakedb/.notmuch/xapian' -caught No XXXXXX database found at path 'CWD/nonexistent' +ld.so: symbol-test: can't load library 'lib/libnotmuch.so.0.0' PASS checking output PASS comparing existing to exported symbols T370-search-folder-coherence: Testing folder tags removed and added through file renames remain consistent PASS No new messages PASS Single new message PASS Add second folder for same message PASS Multiple files for same message PASS Test matches folder:spam PASS Remove folder:spam copy of email PASS No mails match the folder:spam search T380-atomicity: Testing atomicity PASS "notmuch new" is idempotent under arbitrary aborts PASS detected 23>10 abort points T390-python: Testing python bindings PASS compare thread ids PASS compare message ids PASS get non-existent file PASS get revision PASS output of count matches test code PASS Add ISO-8859-2 encoded message, call get_message_parts PASS set and get config values PASS get_configs with no match returns empty generator PASS get_configs with no arguments returns all pairs PASS get_configs prefix is used to match keys PASS set_config with no value will unset config entries PASS index message with decryption T391-python-cffi: Testing python bindings (pytest) PASS python cffi tests T395-ruby: Testing ruby bindings missing prerequisites: ruby development files SKIP all tests in T395-ruby T400-hooks: Testing hooks PASS pre-new is run PASS post-new is run PASS post-insert hook is run PASS pre-new is run before post-new PASS pre-new non-zero exit status (hook status) PASS pre-new non-zero exit status (notmuch status) PASS pre-new non-zero exit status aborts new PASS post-new non-zero exit status (hook status) PASS post-new non-zero exit status (notmuch status) PASS post-insert hook does not affect insert status PASS hook without executable permissions PASS hook execution failure T410-argument-parsing: Testing argument parsing PASS sanity check PASS sanity check zero values PASS space instead of = between parameter name and value PASS --boolean=true PASS --boolean=false PASS --no-boolean PASS --no-flag PASS test keyword arguments without value PASS test keyword arguments with non-default value separated by a space PASS test keyword arguments without value at the end PASS test keyword arguments without value but with = (should be an error) T420-emacs-test-functions: Testing emacs test function sanity PASS emacs test function sanity T430-emacs-address-cleaning: Testing emacs address cleaning PASS notmuch-test-address-clean part 1 PASS notmuch-test-address-clean part 2 PASS notmuch-test-address-clean part 3 T440-emacs-hello: Testing emacs notmuch-hello view PASS User-defined section with inbox tag PASS User-defined section with empty, hidden entry PASS User-defined section, unread tag filtered out PASS User-defined section, different query for counts PASS Empty custom tags section PASS Empty custom queries section PASS Column alignment for tag/queries with long names T450-emacs-show: Testing emacs notmuch-show view PASS Hiding Original Message region at beginning of a message PASS Bare subject #1 PASS Bare subject #2 PASS Bare subject #3 PASS don't process cryptographic MIME parts PASS process cryptographic MIME parts PASS process cryptographic MIME parts (w/ notmuch-show-toggle-process-crypto) PASS notmuch-show: don't elide non-matching messages PASS notmuch-show: elide non-matching messages PASS notmuch-show: elide non-matching messages (w/ notmuch-show-toggle-elide-non-matching) PASS notmuch-show: elide non-matching messages (w/ prefix arg to notmuch-show) PASS notmuch-show: disable indentation of thread content (w/ notmuch-show-toggle-thread-indentation) PASS id buttonization PASS Show handles subprocess errors PASS text/enriched exploit mitigation PASS show decrypted message PASS show undecryptable message PASS show encrypted message when not processing crypto T455-emacs-charsets: Testing emacs notmuch-show charset handling FAIL Text parts are decoded when rendering --- T455-emacs-charsets.1.EXPECTED Fri Oct 16 10:50:09 2020 +++ T455-emacs-charsets.1.OUTPUT Fri Oct 16 10:50:09 2020 @@ -1 +1 @@ -Yen: ¥ +Yen: ¥ nil FAIL 8bit text parts are decoded when rendering --- T455-emacs-charsets.2.EXPECTED Fri Oct 16 10:50:10 2020 +++ T455-emacs-charsets.2.OUTPUT Fri Oct 16 10:50:10 2020 @@ -1 +1 @@ -Yen: ¥ +Yen: ¥ nil PASS HTML parts are decoded when rendering PASS Text parts are not decoded when saving PASS 8bit text parts are not decoded when saving PASS HTML parts are not decoded when saving PASS Binary parts are not decoded when saving PASS Text message are not decoded when viewing PASS 8bit text message are not decoded when viewing T460-emacs-tree: Testing emacs tree view interface PASS Basic notmuch-tree view in emacs PASS Refreshed notmuch-tree view in emacs PASS Tag message in notmuch tree view (display) PASS Tag message in notmuch tree view (database) PASS Untag message in notmuch tree view PASS Untag message in notmuch tree view (database) PASS Tag thread in notmuch tree view PASS Tag message in notmuch tree view (database) PASS Untag thread in notmuch tree view PASS Untag message in notmuch tree view (database) PASS Navigation of notmuch-hello to search results PASS Tree view of a single thread (from search) PASS Tree view of a single thread (from show) PASS Message window of tree view PASS Stash id PASS Move to next matching message PASS Move to next thread PASS Move to previous thread PASS Move to previous previous thread T470-missing-headers: Testing messages with missing headers PASS Search: text PASS Search: json PASS Show: text PASS Show: json T480-hex-escaping: Testing hex encoding and decoding PASS round trip PASS punctuation PASS round trip newlines PASS round trip 8bit chars PASS round trip (in-place) PASS punctuation (in-place) PASS round trip newlines (in-place) PASS round trip 8bit chars (in-place) T490-parse-time-string: Testing date/time parser module PASS date(1) default format without TZ code PASS date(1) --rfc-2822 format PASS date(1) --rfc=3339=seconds format PASS Date parser tests PASS Second rounding tests T500-search-date: Testing date:since..until queries PASS Absolute date range PASS Absolute date range with 'same' operator PASS Absolute date field PASS Absolute time range with TZ T510-thread-replies: Testing test of proper handling of in-reply-to and references headers PASS Use References when In-Reply-To is broken PASS Prefer References to dodgy In-Reply-To PASS Use In-Reply-To when no References PASS Use last Reference when In-Reply-To is dodgy PASS Ignore garbage at the end of References PASS reply to ghost PASS reply to ghost (tree view) PASS reply to ghost (RT) PASS reply to ghost (RT/tree view) PASS trusting reply-to (tree view) T520-show: Testing "notmuch show" PASS exit code for show invalid query T550-db-features: Testing database version and feature compatibility PASS future database versions abort open PASS unknown 'rw' feature aborts read/write open PASS unknown 'rw' feature aborts read-only open PASS unknown 'w' feature aborts read/write open PASS unknown 'w' feature does not abort read-only open T560-lib-error: Testing error reporting for library PASS building database PASS Open null pointer PASS Open relative path PASS Create database in relative path PASS Open nonexistent database PASS create NULL path PASS Create database in nonexistent directory PASS Write to read-only database PASS Add non-existent file PASS compact, overwriting existing backup PASS Xapian exception finding message PASS Xapian exception getting tags PASS Xapian exception creating directory PASS Xapian exception searching messages PASS Xapian exception counting messages T562-lib-database: Testing notmuch_database_* API PASS building database PASS get status_string with closed db PASS get path with closed db PASS get version with closed db PASS re-close a closed db PASS destroy a closed db PASS destroy an open db PASS check a closed db for upgrade PASS upgrade a closed db PASS begin atomic section for a closed db PASS end atomic section for a closed db PASS get revision for a closed db PASS get directory for a closed db PASS index file with a closed db PASS index file (relative path) PASS index file (absolute path outside mail root) PASS remove message file with a closed db PASS find message by filename with a closed db PASS Handle getting tags from closed database PASS get config from closed database PASS set config in closed database PASS get indexopts from closed database PASS get decryption policy from closed database PASS set decryption policy with closed database T563-lib-directory: Testing notmuch_directory_* API PASS building database PASS get child directories for a closed db PASS get child filenames for a closed db PASS delete directory document for a closed db PASS get/set mtime of directory for a closed db PASS get/set mtime of directory for a closed db T564-lib-query: Testing notmuch_query_* API PASS building database PASS roundtrip query string with closed db PASS retrieve closed db from query PASS set omit_excluded on closed db PASS roundtrip sort on closed db PASS add tag_exclude on closed db PASS search threads on closed db PASS search messages on closed db PASS count messages on closed db PASS count threads on closed db PASS destroy query with closed db T566-lib-message: Testing API tests for notmuch_message_* PASS building database PASS Handle getting message-id from closed database PASS Handle getting thread-id from closed database PASS Handle getting header from closed database PASS Handle getting replies from closed database PASS Handle getting message filename from closed database PASS Handle getting all message filenames from closed database PASS iterate over all message filenames from closed database PASS Handle getting ghost flag from closed database PASS Handle getting date from closed database PASS Handle getting tags from closed database PASS Handle counting files from closed database PASS Handle adding tag with closed database PASS Handle removing tag with closed database PASS Handle read maildir flag with closed database PASS Handle checking maildir flag with closed db (new API) PASS Handle converting maildir flags to tags with closed db PASS Handle removing all tags with closed db PASS Handle freezing message with closed db PASS Handle thawing message with closed db PASS Handle destroying message with closed db PASS Handle retrieving closed db from message PASS Handle reindexing message with closed db T568-lib-thread: Testing API tests for notmuch_thread_* PASS building database PASS get thread-id from closed database PASS get total messages with closed database PASS get total files with closed database PASS get top level messages with closed database PASS iterate over level messages with closed database PASS iterate over level messages with closed database PASS iterate over replies with closed database PASS iterate over all messages with closed database PASS get authors from closed database PASS get subject from closed database PASS oldest date from closed database PASS newest date from closed database PASS iterate tags from closed database PASS collect tags with closed database PASS destroy thread with closed database T570-revision-tracking: Testing database revision tracking PASS notmuch_database_get_revision PASS output of count matches test code PASS modification count increases PASS search succeeds with correct uuid PASS uuid works as global option PASS uuid works as global option II PASS search fails with incorrect uuid PASS show succeeds with correct uuid PASS show fails with incorrect uuid PASS tag succeeds with correct uuid PASS tag fails with incorrect uuid PASS lastmod:0.. matches everything PASS lastmod:1000000.. matches nothing PASS exclude one message using lastmod T580-thread-search: Testing test of searching by thread-id PASS Every message is found in exactly one thread PASS roundtripping message-ids via thread-ids T585-thread-subquery: Testing test of searching by using thread subqueries PASS Basic query that matches no messages PASS Same query against threads PASS Mix thread and non-threads query PASS Compound subquery PASS Syntax/quoting error in subquery T590-libconfig: Testing library config API PASS notmuch_database_{set,get}_config PASS notmuch_database_get_config_list: empty list FAIL notmuch_database_get_config_list: closed db --- T590-libconfig.3.EXPECTED Fri Oct 16 10:50:45 2020 +++ T590-libconfig.3.OUTPUT Fri Oct 16 10:50:45 2020 @@ -1,3 +1,2 @@ == stdout == -1 == stderr == /tmp/ports/pobj/notmuch-0.31/notmuch-0.31/test/test-lib.sh: line 1093: 15168 Segmentation fault (core dumped) ./${exec_file} "$@" >> OUTPUT.stdout 2>> OUTPUT.stderr PASS notmuch_database_get_config_list: all pairs PASS notmuch_database_get_config_list: all pairs (closed db) PASS notmuch_database_get_config_list: one prefix PASS dump config PASS restore config T590-thread-breakage: Testing thread breakage during reindexing PASS There should be no threads initially PASS There should be no ghosts initially PASS One message in: one thread PASS looking for 1 instance of 'apple' PASS looking for 0 instance of 'banana' PASS Expecting 0 ghosts(s) PASS Second message in the same thread: one thread PASS looking for 1 instance of 'apple' PASS looking for 1 instance of 'banana' PASS Expecting 0 ghosts(s) PASS First message removed: still only one thread PASS looking for 0 instance of 'apple' PASS looking for 1 instance of 'banana' PASS should be one ghost after first message removed PASS First message reappears: should return to the same thread PASS looking for 1 instance of 'apple' PASS looking for 1 instance of 'banana' PASS Expecting 0 ghosts(s) PASS Removing second message: still only one thread PASS looking for 1 instance of 'apple' PASS looking for 0 instance of 'banana' BROKEN No ghosts should remain after deletion of second message --- T590-thread-breakage.22.expected Fri Oct 16 10:50:47 2020 +++ T590-thread-breakage.22.output Fri Oct 16 10:50:47 2020 @@ -1 +1 @@ -0 +1 PASS All messages gone: no threads PASS looking for 0 instance of 'apple' PASS looking for 0 instance of 'banana' PASS No ghosts should remain after full thread deletion T600-named-queries: Testing named queries PASS error adding named query before initializing DB PASS adding named query PASS adding nested named query PASS retrieve named query PASS List all queries PASS dump named queries PASS dumping large queries PASS delete named queries PASS restore named queries PASS search named query PASS search named query with other terms PASS search nested named query T610-message-property: Testing message property API PASS notmuch_message_{add,get,remove}_property PASS notmuch_message_remove_all_properties PASS testing string map binary search (via message properties) PASS notmuch_message_get_properties: empty list PASS notmuch_message_properties: one value PASS notmuch_message_properties: multiple values PASS notmuch_message_properties: prefix PASS notmuch_message_properties: modify during iteration PASS dump message properties PASS dump _only_ message properties PASS restore missing message property (single line) PASS restore missing message property (full dump) PASS restore clear extra message property PASS test 'property:' queries: empty PASS test 'property:' queries: single message PASS msg.get_property (python) PASS msg.get_properties (python) PASS msg.get_properties (python, prefix) PASS msg.get_properties (python, exact) T620-lock: Testing locking PASS blocking open T630-emacs-draft: Testing Emacs Draft Handling PASS Saving a draft indexes it PASS Saving a draft tags previous draft as deleted PASS Saving a signed draft adds header PASS Refusing to save an encrypted draft PASS Resuming a signed draft T640-database-modified: Testing DatabaseModifiedError handling PASS catching DatabaseModifiedError in _notmuch_message_ensure_metadata T650-regexp-query: Testing regular expression searches PASS empty path:// search PASS empty folder:// search PASS unanchored folder:// specification PASS anchored folder:// search PASS unanchored path:// specification PASS anchored path:// search PASS null from: search PASS null subject: search PASS xapian wildcard search for from: PASS xapian wildcard search for subject: PASS quoted xapian keyword search for from: PASS quoted xapian keyword search for subject: PASS regexp from search, case sensitive PASS empty regexp or query PASS non-empty regexp and query PASS regexp from search, duplicate term search PASS long enough regexp matches only desired senders PASS shorter regexp matches one more sender PASS regexp subject search, non-ASCII PASS regexp subject search, punctuation PASS regexp subject search, no punctuation PASS combine regexp from and subject PASS regexp error reporting PASS empty mid search PASS non-empty mid regex search PASS combine regexp mid and subject PASS unanchored tag search PASS anchored tag search T660-bad-date: Testing parsing of bad dates PASS Bad dates translate to a date after the Unix epoch T670-duplicate-mid: Testing duplicate message ids PASS search: first indexed subject preserved BROKEN First subject preserved in notmuch-show (json) --- T670-duplicate-mid.2.expected Fri Oct 16 10:51:02 2020 +++ T670-duplicate-mid.2.output Fri Oct 16 10:51:02 2020 @@ -2,6 +2,7 @@ [ [ { + "crypto": {}, "date_relative": "2001-01-05", "excluded": false, "filename": [ @@ -12,7 +13,7 @@ "headers": { "Date": "GENERATED_DATE", "From": "Notmuch Test Suite <test_su...@notmuchmail.org>", - "Subject": "message 1", + "Subject": "message 0", "To": "Notmuch Test Suite <test_su...@notmuchmail.org>" }, "id": "XXXXX", PASS Search for second subject BROKEN Regexp search for second subject --- T670-duplicate-mid.4.EXPECTED Fri Oct 16 10:51:02 2020 +++ T670-duplicate-mid.4.OUTPUT Fri Oct 16 10:51:02 2020 @@ -1,3 +0,0 @@ -MAIL_DIR/copy0 -MAIL_DIR/copy1 -MAIL_DIR/copy2 PASS search for body in duplicate file PASS reindex drops terms in duplicate file PASS reindex choses subject from first filename PASS Deleted first duplicate file does not stop notmuch show from working T680-html-indexing: Testing indexing of html parts PASS embedded images should not be indexed PASS ignore > in attribute text PASS non tag text should be indexed T690-command-line-args: Testing command line arguments PASS bad option to show PASS string option with space PASS string option with = PASS string option with : PASS single keyword option with space PASS single keyword option with = PASS single keyword option with : PASS multiple keyword options with space PASS multiple keyword options with = PASS mixed space and = delimiters PASS mixed space and : delimiters PASS show --entire-thread PASS show --exclude T700-reindex: Testing reindexing messages PASS reindex preserves threads PASS reindex after removing duplicate file preserves threads PASS reindex preserves message-ids PASS reindex preserves tags PASS reindex preserves tags with special prefixes PASS reindex moves a message between threads PASS reindex detects removal of all files PASS reindex preserves properties PASS reindex of lkml corpus preserves threads T710-message-id: Testing message id parsing PASS good message ids PASS leading and trailing space is OK PASS <> delimiters are required PASS embedded whitespace is forbidden PASS folded real life bad In-Reply-To values T720-emacs-attachment-warnings: Testing emacs attachment warnings PASS notmuch-test-attachment-warning part 1 T720-lib-lifetime: Testing Lifetime constraints for library PASS building database PASS Message outlives parent Messages from replies T730-emacs-forwarding: Testing emacs forwarding PASS Forward setting the correct references header PASS Forwarding adding the forwarded tag T740-body: Testing search body PASS search with body: prefix PASS search without body: prefix PASS negated body: prefix PASS search unprefixed for prefixed term PASS search with body: prefix for term only in subject T750-gzip: Testing support for gzipped messages PASS Single new gzipped message PASS Single new gzipped message (full-scan) PASS Multiple new messages, one gzipped PASS Multiple new messages, one gzipped (full-scan) PASS Renamed (gzipped) message PASS notmuch search with partially gzipped mail store PASS notmuch search --output=files with partially gzipped mail store PASS show un-gzipped message PASS show un-gzipped message (format mbox) PASS show un-gzipped message (format raw) PASS show gzipped message PASS show gzipped message (mbox) PASS show gzipped message (raw) PASS new doesn't run out of file descriptors with many gzipped files T750-user-header: Testing indexing user specified headers PASS error adding user header before initializing DB PASS adding illegal prefix name, bad utf8 PASS adding illegal prefix name, reserved for notmuch PASS adding illegal prefix name, non-word character. PASS adding empty prefix name. PASS adding user header PASS adding existing user header PASS retrieve user header PASS reindex after adding header preserves threads PASS List all user headers PASS parse user prefix PASS parse user prefix, stemmed PASS parse user prefix, phrase PASS index user header Notmuch test suite complete. 1210/1219 tests passed. 3 broken tests failed as expected. 4 tests failed. 2 tests skipped. All tests in 1 file skipped. gmake: *** [test/Makefile.local:75: test] Error 1