aboutsummaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Collapse)Author
2022-07-30emacs/show: provide notmuch-show-choose-duplicateDavid Bremner
This new command allows the user to interactively choose a different duplicate (file) to display for a given message in notmuch-show-mode. Since both tree and unthreaded view use notmuch-show-mode, this provides the same facility there.
2022-07-30CLI/show: support --duplicate for structured outputDavid Bremner
This introduces a new mandatory key for message structures, namely "duplicate". Per convention in devel/schemata this does _not_ increase the format version. This means that clients are responsible for checking that it exists, and not crashing if it does not. The main functional change is teaching mime_node_open to understand a 'duplicate' argument. Support for --duplicate in notmuch-reply would make sense, but we defer it to a later commit.
2022-07-30CLI/show: initial support for --duplicate for (raw output only)David Bremner
Add command line argument --duplicate, analogous with that already supported for notmuch-search. Use of a seperate function for _get_filename is mainly a form of documentation at this point. md5sum is of course a weak hash, but it is good enough for this (non-adversarial) test suite use.
2022-07-14emacs/show: introduce notmuch-show-height-limitDavid Bremner
Analogous to notmuch-show-depth-limit, it requires a bit more calculation, but that cost seems dominated by the rendering cost.
2022-07-14emacs/show: obey notmuch-show-max-text-part-size for part 0David Bremner
This parameter was originally introduced to hide large attachements that happened to be text/plain. From a performance point of view, there is no reason not to also hide large message bodies.
2022-07-14emacs/show: optionally insert bodies of "deep messages" lazilyDavid Bremner
This leverages the machinery already there to insert buttons for attachments. A potential use-case is browsing the top layers of the tree to decide which of the lower subtrees to read.
2022-07-07CLI/git: add --format-version argument to init subcommandDavid Bremner
This is primarily intended to support testing upward compatibility with legacy repos.
2022-07-07CL/git: add format version 1David Bremner
The original nmbug format (now called version 0) creates 1 subdirectory of 'tags/' per message. This causes problems for more than (roughly) 100k messages. Version 1 introduces 2 layers of hashed directories. This scheme was chose to balance the number of subdirectories with the number of extra directories (and git objects) created via hashing. This should be upward compatible in the sense that old repositories will continue to work with the updated notmuch-git.
2022-07-05test: known broken test for top level .notmuch in split configsDavid Bremner
In split configurations there is no special significance to a top level directory called .notmuch in the mail root. Users should therefore be able to have mail stored underneath it.
2022-07-05test: add new corpus of duplicate messagesDavid Bremner
This corpus will be used to test a new --duplicate option for notmuch-show
2022-07-05test: define and use notmuch_sexp_*_sanitize functionsDavid Bremner
These are based on the equivalent functions for json. Like those, these are pretty simple-minded, and don't really understand the syntax.
2022-07-05test: use notmuch_json_show_sanitize more placesDavid Bremner
This makes the tests more robust against changing output formats, by allowing us to centralize fixes in the sanitization function. It is not appropriate for all cases, in particular it is unneeded when using test_json_nodes, and unhelpful when testing filenames.
2022-07-01lib/sexp: add parameter expansion for regex and wildcardDavid Bremner
Fix the bug reported at [1]. The parameter expansion for regex and wildcard modifiers has to be done a bit differently, because their arguments are not s-expressions defining complete Xapian queries. [1]: id:87o7yxqxy6.fsf@code.pm
2022-07-01test/sexp: add known broken tests for macro param inside rx/wildcardDavid Bremner
These tests replicate the problem reported by Eric Colson [1] (for the regex case). [1]: id:87o7yxqxy6.fsf@code.pm
2022-06-25lib/sexp: allow * as alias for "" in range searches.David Bremner
It can be tedious to use "" inside of a string, e.g. in a shell script.
2022-06-25lib/sexp: special case "" as an argument in lastmod ranges.David Bremner
Support this syntax for constincy with (data from to) ranges.
2022-06-25test/sexp: one sided range searches.David Bremner
The date range parsing machinery already knows how to do something appropriate with an empty string, but the lastmod parsing blindly tries to parse each atom as a number.
2022-06-25lib: check for writable db in n_m_tags_maildir_flagsDavid Bremner
The database needs to be writable because the list of stored file names will change in general.
2022-06-25lib: add NOTMUCH_STATUS_CLOSED_DATABASE, use in _n_d_ensure_writableDavid Bremner
In order for a database to actually be writeable, it must be the case that it is open, not just the correct type of Xapian object. By explicitely checking, we are able to provide better error reporting, in particular for the previously broken test in T566-lib-message.
2022-06-25lib/tag: handle NULL argument to notmuch_tags_validDavid Bremner
Make the behaviour when passed NULL consistent with notmuch_filenames_valid. The library already passes the result of notmuch_message_get_tags without checking for NULL, so it should be handled.
2022-06-25test: add known broken test for notmuch_tags_valid (NULL)David Bremner
This should return false, but currently segfaults. Start a new file for tags library API related tests. This is maybe overkill, but new C boilerplate which doesn't corrupt the database is needed anyway.
2022-06-25test: error handling for n_m_tags_to_maildir_flagsDavid Bremner
The closed database case should fail gracefully, but currently it segfaults.
2022-06-25test: error handling in _n_message_{add,remove}_filenameDavid Bremner
Use a closed database to force throwing a Xapian exception. Leave the check vague to accomodate a potential explicit check for open database.
2022-06-25test: _notmuch_message_remove_term catches exceptions.David Bremner
Unfortunately we can't differentiate between the two distinct error conditions for Document::remove_term.
2022-06-25lib/message: catch exceptions in _n_m_add_termDavid Bremner
Some code movement is needed to make sure the cache is only invalidated when the Xapian operation succeeds.
2022-06-25test: define test_private_CDavid Bremner
When testing error handling, it is sometimes difficult to cover a particular error path deterministically. Introduce a test function to allow calling lower level functions directly.
2022-06-18CLI: set NOTMUCH_CONFIG in hooks.David Bremner
This addresses a bug report / feature request of Uwe Kleine-König. The assumption is that we always load a config file in the CLI (i.e. we never pass "" as the config file argument to notmuch_database_open_with_config). [1]: id:8baa58c3-7ab9-ec03-1bbd-28aa5be838f2@kleine-koenig.org
2022-06-18test: add known broken tests for setting NOTMUCH_CONFIG in hooksDavid Bremner
Setting this according to --config was requested by Uwe Kleine-König. There are some other ways that the configuration file might be found in current notmuch, so check those as well. As a bonus, fix a bug in the hook tests that left NOTMUCH_CONFIG set even though a config file was provided via NOTMUCH_PROFILE. [1]: id:8baa58c3-7ab9-ec03-1bbd-28aa5be838f2@kleine-koenig.org
2022-06-17CLI/git: add safety checks for checkout and commitDavid Bremner
Commits or checkouts that modify a large fraction of the messages in the database should be relatively rare (and in some automated process, probably non-existent). For initial setup, where such operations are expected, the user can pass --force.
2022-06-17CLI/git: support configuration for repo location / prefixDavid Bremner
This is probably more convenient than always passing a command line argument. Use notmuch-config for consistency with other notmuch CLI tools. Now that there is something relevant in the config files, test the --config option.
2022-06-17CLI/git: change defaults for repo and prefixDavid Bremner
The previous defaults were not suitable for personal (i.e. not bugtracking for notmuch development) use. Provide two ways for the user to select nmbug compatible defaults; command line argument and checking the name of the script.
2022-06-17CLI/git: cache git indicesDavid Bremner
If the private index file matches a previously known revision of the database, we can update the index incrementally using the recorded lastmod counter. This is typically much faster than a full update, although it could be slower in the case of large changes to the database. The "git-read-tree HEAD" is also a bottleneck, but unfortunately sometimes is needed. Cache the index checksum and hash to reduce the number of times the operation is run. The overall design is a simplified version of the PrivateIndex class.
2022-06-17CLI/git: replace enumeration of tags with sexp query.David Bremner
Unlike the (current) infix query parser provided by Xapian, the notmuch specific sexp query parser supports prefixed wildcard queries, so use those. In addition to being somewhat faster, this avoids needing to escape all of the user's tags to pass via the shell.
2022-06-17test/git: add known broken test for tag with quotes.David Bremner
There is current insufficient sanitization and/or escaping of tag names internally in notmuch-git.
2022-06-17CLI/git: rename environment variables.David Bremner
Although the code required to support both new and old environment variables is small, it complicates the semantics of configuration, and make the documentation harder to follow.
2022-06-17test: initial tests for notmuch-gitDavid Bremner
Exercise the main functionality of notmuch-git. add_git_repos() will hopefully be simplifed when an init subcommand is added.
2022-06-16emacs: use message-dont-reply-to-names when composing repliesjao
notmuch-mua functions for replies now use the built-in customizable variable message-dont-reply-to-names with the same semantics as message-mode.
2022-06-13emacs: Make notmuch-show-next-thread return nil on failureLeo Okawa Ericson
Having notmuch-show-next-thread return non-nil on success and nil on failure makes it easier for users to interact with notmuch via elisp. This commit changes notmuch-search-show-thread too since the return value of notmuch-show-next-thread depends on notmuch-search-show-thread. Amended by db: fix whitespace in T450-emacs-show
2022-06-13CLI: pass --config to external commands via NOTMUCH_CONFIG.David Bremner
This makes `notmuch --config foo external-subcommand` work consistently with the built in subcommands.
2022-06-13test: initial tests for external commandsDavid Bremner
The main goal is to test the setting of NOTMUCH_CONFIG, but also include a basic sanity test for execing scripts.
2022-05-29test: replace deprecated use of notmuch_database_createDavid Bremner
Like notmuch_database_open, we need to conditionally print the error message.
2022-05-29test: replace deprecated use of notmuch_database_openDavid Bremner
This is a bit more involved than replacing the use of notmuch_database_open_verbose, as we have to effectively inline the definition of notmuch_database_open.
2022-05-29test: replace deprecated use of notmuch_database_open_verboseDavid Bremner
We need to do it some day, and it is a bit annoying to read deprecation messages in broken tests.
2022-05-29test: make T450 independent of application/octet-stream interpretationMichael J Gruber
The actual content type of `application/octet-stream` is up to content type detection of the reader, and thus may not be stable across implementations or versions. This showed up when fd46fc19 ("emacs: document/defcustom notmuch-multipart/alternative-discouraged", 2022-05-14) introduced a test for omitting a part of type `text/html` because it expected a part of type `application/octet-stream` to remain in place, i.e. a part of "unstable type". In particular, tests with `fd46fc19` would succeed on RHEL/EPEL but fail on all current Fedoras with ``` FAIL multipart/alternative hides html by default --- T450-emacs-show.16.notmuch-show-multipart-alternative 2022-05-26 15:34:42.100557244 +0000 +++ T450-emacs-show.16.OUTPUT 2022-05-26 15:34:42.102557207 +0000 @@ -24,7 +24,7 @@ uses 64 as the buffer size. [ text/html (hidden) ] -[ 0001-Deal-with-situation-where-sysconf-_SC_GETPW_R_SIZE_M.patch: application/octet-stream (as text/x-diff) ] +[ 0001-Deal-with-situation-where-sysconf-_SC_GETPW_R_SIZE_M.patch: application/octet-stream (as text/x-patch) ] From e3bc4bbd7b9d0d086816ab5f8f2d6ffea1dd3ea4 Mon Sep 17 00:00:00 2001 From: Alexander Botero-Lowry <alex.boterolowry@gmail.com> Date: Tue, 17 Nov 2009 11:30:39 -0800 ``` due to the different type detected. Fix this by giving that message a specicific type of `text/x-diff` in the test corpus, and adjust all affected test outputs. Signed-off-by: Michael J Gruber <git@grubix.eu> Amended-by: db, fix some trailing whitespace
2022-05-20emacs: document/defcustom notmuch-multipart/alternative-discouragedDavid Bremner
This variable is important for people who want to change the default behaviour when displaying multipart/alternative messages. Previously it was undocumented. Add a defcustom to help users and copy some documentation from the wiki. The usual machinery of re-using docstrings is a bit tricky to use here because it mangles the example lisp code, and the link to the info node should not be in e.g. the html page. Add a simple test to make sure the switch from defvar to defcustom did not break something obvious.
2022-05-16emacs/reply: restrict what mime types are inlined by defaultDavid Bremner
Apply the previously factored-out function used by notmuch-show.
2022-05-16test: add known broken test for inlining in emacs/replyDavid Bremner
The same mitigation already applied for show should also be applied for reply
2022-05-16test/emacs: add regression test for display of tar attachmentsDavid Bremner
These should continue to display as buttons by default, even as we update the handling for reply.
2022-05-16test: start corpus for attachmentsDavid Bremner
Initially these are to test the emacs frontend.
2022-04-15lib: add sexp: prefix to Xapian (infix) query parser.David Bremner
This is analogous to the "infix" prefix provided by the s-expression based query parser.