1
0
mirror of https://github.com/djcb/mu.git synced 2024-06-25 07:28:02 +02:00
Commit Graph

1197 Commits

Author SHA1 Message Date
Dirk-Jan C. Binnema
ec942a988d tests: always log to file during tests
And set the cachedir (for logging and other things) to a random tmpdir.
2023-04-09 14:43:36 +03:00
Dirk-Jan C. Binnema
9b8a0146e0 logger: create logdir if non-existent 2023-04-09 14:43:17 +03:00
Dirk-Jan C. Binnema
e43452fa18 test: don't "uniqify" link names during test 2023-04-09 11:02:58 +03:00
Dirk-Jan C. Binnema
2aa0d20f39 mu-logger: Add lock for file-logger and stress test
Add a lock to the file logger and add a unit-test to stress test it.
(It does fail without the lock, and passed with it).

Should help for: #2469.
2023-04-08 10:26:15 +03:00
Dirk-Jan C. Binnema
026a19bcfa message: allow extracting message parts to file
And add unit-test.

Fixes #2467
2023-04-06 07:19:26 +03:00
Dirk-Jan C. Binnema
cd23e6015d mu: allow relative message paths in mu commands 2023-04-06 07:19:26 +03:00
Dirk-Jan C. Binnema
ff1e06c7c8 mu-find: restore JSON output
Fixes #2453
2023-03-30 18:12:33 +03:00
Dirk-Jan C. Binnema
39101cf583 mu-find: brush off --format=links unit test
Enable it by default, and modernize it a little bit
2023-03-28 22:26:56 +03:00
Dirk-Jan C. Binnema
f3c3811818 message: fix user-after-scope in test 2023-03-24 23:24:19 +02:00
Dirk-Jan C. Binnema
96e16034c7 contact: fix quoting
Ensure that addresses with commas are quoted. Don't 2047-encode though.

Update tests.
2023-03-14 06:18:56 +02:00
Dirk-Jan C. Binnema
617c8129ae lib/thirdparty: update tabulate to 1.5.0 2023-03-03 18:47:48 +02:00
Dirk-Jan C. Binnema
6f0e295326 lib/thirdparty: update CLI11 to 2.3.2 2023-03-03 18:46:48 +02:00
Dirk-Jan C. Binnema
9d0fe0e5d4 lib/thirdparty: update expected/optional 2023-03-03 18:41:45 +02:00
Dirk-Jan C. Binnema
413a2564b6 server: don't encode addresses in contacts_handlers
Seems it doesn't always play nice with composer
2023-02-28 23:23:52 +02:00
Dirk-Jan C. Binnema
a50357966d mu: add müller test-case 2023-02-28 22:42:55 +02:00
Dirk-Jan C. Binnema
bd5ae78c49 mime-object: add missing include 2023-02-23 18:38:18 +02:00
Dirk-Jan C. Binnema
6da223fcb6 mu-message-part: rework cooked_filename a bit
Improve working, add a 'minimal' mode, and add some unit tests.
2023-02-19 10:47:50 +02:00
Dirk-Jan C. Binnema
3d4805de0c server: small output improvement
For human users.
2023-02-17 10:20:14 +02:00
Dirk-Jan C. Binnema
76fedf4d64 mu-server: make :update for mkdir optional
It's useful to do "opportunistic" mkdir form mu4e; don't send updates in
that case (i.e. with :update nil)
2023-02-12 11:16:47 +02:00
Dirk-Jan C. Binnema
2255769de7 build: bump schema version, update contacts-cache
Bump schema version to trigger update after we added html processing.

Since we're updating the database schema version, let's use the
opportunity to remove outdated data from the contacts-cache.
2023-01-31 23:41:57 +02:00
Dirk-Jan C. Binnema
abfa6f277c mu: index html text as if it were plain text
This is a bit of hack to include html text in results.

Of course, html text is not really plain text, so this is a bit of a
hack until we introduce some html parsing step.
2023-01-31 23:41:57 +02:00
Dirk-Jan C. Binnema
3ec960c609 mu: improve mu-error
Add specific error-code for SchemaMismatch

Combine find/cfind no-matches
2023-01-29 15:38:40 +02:00
Dirk-Jan C. Binnema
cc664b8128 utils: add missing mu-regex.cc
Fixes #2425
2023-01-29 12:49:52 +02:00
Dirk-Jan C. Binnema
6b4857b189 mu-scanner: ignore some more unusable files 2023-01-29 12:03:13 +02:00
Dirk-Jan C. Binnema
40c3d3568e utils: improve xapian exception handling / reporting 2023-01-29 11:25:02 +02:00
Dirk-Jan C. Binnema
29dc90486b server: find_handler: better handle sort-field-id
Handle invalid sort-fields correctly.
2023-01-29 10:13:29 +02:00
Dirk-Jan C. Binnema
a8daec9598 lib: use join_paths
Convert some manual concatenation to the new join_paths helper.
2023-01-29 10:13:29 +02:00
Dirk-Jan C. Binnema
25635c5cfe utils: add join_paths + tests 2023-01-29 10:13:29 +02:00
Dirk-Jan C. Binnema
daef904ca1 utils: add Regex::replace + unit tests 2023-01-29 10:13:29 +02:00
Dirk-Jan C. Binnema
ba69e2104a utils: remove some dead test code 2023-01-29 10:13:29 +02:00
Derek Zhou
4271fc2fb6
really allow flags to be empty in move command
Without this patch, I see the following error:

;; mu> (move :docid 1 :maildir "/.Archive")
[2b](:error 32818 :message "invalid flags ''")

flags should not default to "", which is not a valid flags string.
2023-01-25 16:31:41 -05:00
Arsen Arsenović
ce94464652
mu-error: Add missing <cstdint> include
GCC 13s libstdc++ reduced its dependency on some headers like <cstdint>, so it's
no longer transitively included through various headers.  Include it explicitly.

See also: https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes

  ../lib/utils/mu-error.hh:36:26: error: ‘uint32_t’ does not name a type
     36 |         static constexpr uint32_t SoftError = 1 << 23;
        |                          ^~~~~~~~
2023-01-21 19:48:57 +01:00
Dirk-Jan C. Binnema
201fe45edc server: add a few stopwatches
For measuring performance.
2023-01-19 22:37:50 +02:00
Dirk-Jan C. Binnema
3dd7cf80d3 mu-scanner: ignore .nnmaildir directories
They contain gnus internal data.
2023-01-18 23:05:46 +02:00
Dirk-Jan C. Binnema
10838a2c58 mu-store: fix typo 2023-01-14 20:02:05 +02:00
Dirk-Jan C. Binnema
86a641f748 mu-flags: use implied unread flag
and update tests.

Fixes #2409
2023-01-14 20:02:05 +02:00
Dirk-Jan C. Binnema
6979a66630 utils: get rid of mu-util.[ch]
It was getting old...
Remove the unused parts, refactor the few parts still in use.
2023-01-14 20:02:05 +02:00
Dirk-Jan C. Binnema
46a2432809 mu: test-message: add test for html text from base64 2023-01-13 22:06:19 +02:00
Dirk-Jan C. Binnema
ef2ec7d5a5 server: split off new server command 'queries'
Instead of being part of the ping command, create a separate
queries command, which is easier for updating. Ie. 'ping' implies "show
main screen" but we don't always want that side-effect.
2023-01-07 15:40:30 +02:00
Dirk-Jan C. Binnema
6b04158925 mu-store: create mu cache path if needed 2023-01-06 19:48:40 +02:00
Dirk-Jan C. Binnema
60e9d54a7c mu-regex: make backward-compatible with older glib 2022-12-31 00:10:24 +02:00
Dirk-Jan C. Binnema
07a69bf206 mu-contact: cosmetic 2022-12-30 15:14:17 +02:00
Dirk-Jan C. Binnema
2229e2e77e message/contact: ensure valid email address in cache
Filter out the (rare but existent) invalid email addresses from the
cache; use the new method Contact::has_valid_email for that.
2022-12-30 11:51:21 +02:00
Dirk-Jan C. Binnema
27ecbbdd65 many: use Mu::Regex instead of std::regex
The former is PCRE-compatible, and faster than std::regex.
2022-12-30 11:15:03 +02:00
Dirk-Jan C. Binnema
e97bbb83e3 utils/mu-regex: add PCRE Regex wrapper
Add a thin c++ wrapper for GLib's GRegex (which is a PCRE wrapper
itself). PCRE is much faster than C++ std::regex, it may even matter in
some use-cases.
2022-12-30 11:15:03 +02:00
Dirk-Jan C. Binnema
96b208d712 build: bump meson requirement to 56.0
We need some of the new functionality in the near-future.

Fix build warnings.
2022-12-19 23:01:16 +02:00
Dirk-Jan C. Binnema
27ffaba817 mu-utils: use const char* from for time_to_string
To avoid lifetime problems with some(?) compilers.
2022-12-10 19:22:00 +02:00
Dirk-Jan C. Binnema
d5fb15574b mu-query-match-decider: add 'Related' to flags
We were _replacing_ the flags (such as Duplicate), but we should add to
them instead.

Add a unit-test for this.
2022-12-08 19:33:15 +02:00
Dirk-Jan C. Binnema
ca05c82451 query-threads: add multi-dup unit test 2022-12-08 19:30:20 +02:00
Dirk-Jan C. Binnema
b71751a185 mu-server: update for move_message API update 2022-12-07 18:22:29 +02:00
Dirk-Jan C. Binnema
da7c3b0c9a tests: update for move_message API update 2022-12-07 18:22:29 +02:00
Dirk-Jan C. Binnema
0b516c18c2 store: add mu_move_message dup flag test
Test the new functionality
2022-12-07 18:22:29 +02:00
Dirk-Jan C. Binnema
87c3ceb7b1 store: update move_message API
Update the move_message API so to allow for updating duplicate messages
too (not implemented yet), and return all updated messages.
2022-12-07 18:22:29 +02:00
Dirk-Jan C. Binnema
62cfc88950 flags: add flags_keep_unmutable + test
When moving we want to maintain _some_ flags; add a function making that
convenient.
2022-12-07 12:32:13 +02:00
Dirk-Jan C. Binnema
4d1352ec56 mu/options: Support date sortfield
Fixes #2368.
2022-11-22 23:16:37 +02:00
Dirk-Jan C. Binnema
d2a3a13242 query/test: add term splitting unit test
For checking issue #2365.
2022-11-20 10:18:01 +02:00
Daniel Colascione
26b3110b8f Avoid word-splitting regular expression matches
Previously, we would conduct regular expression searches by
enumerating all values of a given term, manually regex-matching each
one against our search regular expression, remember all the term
values that matched our regular expression, then do a big Xapian
OR-query that matched any of those term values. In constructing this
OR-query, however, we would split each term value on space and add a
separate Xapian phrase search term for each resulting word. This
approach worked fine most of the time, beacuse when we index a term,
we index both each word in a term and the whole term by itself.

This word splitting produced false negatives in some matches, however,
because Xapian and the Mu-level word splitting code do word splitting
slightly differently and apply different transformations to the text
while splitting.  (For example, Xapian transforms fancy Unicode
apostrophes to ASCII apostrophes.)

This patch avoids the problem by not word splitting when constructing
the big Xapian OR-query for finding the results of regular
expression matching.
2022-11-20 10:18:01 +02:00
Dirk-Jan C. Binnema
cec08ab1ea script: Rework guile script with new CLI support
Integrate the guile scripting a bit better into the mu cmdline.
Rework the old script module for that.
2022-11-17 11:00:06 +02:00
Dirk-Jan C. Binnema
27a474be41 thirdparty: include CLI11
Add the CLI11 library so we can use it.
2022-11-17 11:00:06 +02:00
Dirk-Jan C. Binnema
64f08149bc lib: remove mu-runtime
Remove runtime; update the logger for that, and move the runtime-paths
stuff to utils.
2022-11-16 23:31:51 +02:00
Dirk-Jan C. Binnema
ed08118652 utils/command-handler: fix symbol-arg copy-pasta
Fixes #2361.
2022-11-13 15:03:07 +02:00
Dirk-Jan C. Binnema
aa6fd3e757 utils/mu-utils-format: add missing includes 2022-11-12 08:30:46 +02:00
Dirk-Jan C. Binnema
a417b38624 store: update for new sexp api
And use improved cached_sexp api (automatically handled with
mu-document now)
2022-11-07 18:38:03 +02:00
Dirk-Jan C. Binnema
e1dd6f10b1 server: rework for updated Sexp/CommandHandler
Rework for the new APIs.
2022-11-07 18:38:03 +02:00
Dirk-Jan C. Binnema
58176f8438 message: updates for new sexp
Update for API changes.
2022-11-07 18:38:03 +02:00
Dirk-Jan C. Binnema
dbd3c1309a command-handler: rework for new sexp
Rework / cleanup the command-handler (and rename for command-parser).

Update tests (and integrate with sources)
2022-11-07 18:38:03 +02:00
Dirk-Jan C. Binnema
dfc2cb12d7 sexp: major rework / API improvements
Use a bit nicer/modern c++, since we're using C++17 now. Add more tests.
2022-11-07 18:37:23 +02:00
Dirk-Jan C. Binnema
6064c2e88b test-mu-store-query: make move/refresh test more rigorous 2022-11-01 18:41:10 +02:00
Dirk-Jan C. Binnema
db0d51d630 server: improve error messages 2022-11-01 18:37:31 +02:00
Dirk-Jan C. Binnema
cb4e893f3a mu-error: add missing string include 2022-10-30 15:51:03 +02:00
Dirk-Jan C. Binnema
83eceaf580 test-mu-store-query: make move/refresh test more rigorous 2022-10-30 11:39:33 +02:00
Dirk-Jan C. Binnema
0055b40a8d mu-maildir: improve error handling / reporting 2022-10-30 11:27:54 +02:00
Dirk-Jan C. Binnema
06be7a24e7 test-mu-store-query: add unit test for dup message
For ticket #2327. Haven't been able to reproduce though.
2022-10-26 22:35:34 +03:00
Dirk-Jan C. Binnema
27a85eada2 store: fix move ctor
indexer_ is holding a ptr to the _old_ store; clear it so it gets
regenerated.
2022-10-26 21:51:53 +03:00
Daniel Colascione
f0bba8e1fa message: use fake Message-ID when empty
Previously, mu generated a fake message ID for messages without a
Message-ID header. This fake message ID allows these messages to show in
an --include-related query. However, if a message contained a Message-ID
header with the value equal to the empty string, we did not generate a
fake message ID in the index, and consequently, these messages failed to
appear in an --include-related query. This change uses a fake message ID
when the Message-ID header is absent _or_ empty.
2022-10-24 23:14:17 +03:00
Dirk-Jan C. Binnema
822f49d41a mu-fields: fix string format 2022-10-17 07:33:23 +03:00
Dirk-Jan C. Binnema
3d97db8ffc view: be clearer there's no text body found
There may have been an html body, but mu-view only shows a text-body;
make that clearer.

Add a test case for an html-only message.

Fixes #2349.
2022-10-16 00:57:19 +03:00
Dirk-Jan C. Binnema
5367122c08 store: support reinit
Support reinitializing, based on some current store. This is useful for
upgrading. Note that this is only the backend implementation + tests.
2022-10-02 18:24:23 +03:00
Dirk-Jan C. Binnema
9e60ebb683 utils: add helpers for assoc-pairs
Add some unit-test, too.
2022-10-02 18:24:23 +03:00
Dirk-Jan C. Binnema
ca04ae4d65 test-mu-msg.cc: fix unit test
Fix typo.
2022-10-02 18:24:23 +03:00
Dirk-Jan C. Binnema
bb7c8d880a message: convert mime-parts to utf-8
Ensure that non-utf8 mime-parts are converted to utf8. This fixes a
problem with messages with such parts; added unit test.

Fixes #2333.
2022-09-19 18:27:03 +03:00
Dirk-Jan C. Binnema
e416a5215f autotools: remove
Since 2008, autotools has served us well - thank you!

However, mu is now using meson build, and it's time to remove the
autotools support -- one build system is enough.
2022-08-20 11:19:29 +03:00
Dirk-Jan C. Binnema
6fdc20aeb1 tests: add unit-tests for references with fake message-ids
For #2312.
2022-08-11 23:06:12 +03:00
Dirk-Jan C. Binnema
fc88158357 message: update references() implementation
Clean up the implementation at bit, and filter out 'fake' message-ids,
such as the ones from protonmail.

Update documentation.

Add Mu::Message::thread_id().

This fixes #2312.
2022-08-11 23:01:29 +03:00
Dirk-Jan C. Binnema
317fe53ff7 tests: update test helpers and users
Move test-mu-common to mu-test-utils. Use mu_test_init as a wrapper for
g_test_init. Update users.
2022-08-11 22:55:10 +03:00
Dirk-Jan C. Binnema
9aabe74df6 mu4e: add more tests for related/skipdups queries 2022-08-07 12:01:18 +03:00
Dirk-Jan C. Binnema
9fdcee8c22 test-mu-store-query: add more contact-matching tests 2022-07-14 08:10:15 +03:00
Dirk-Jan C. Binnema
ed93ff4968 message: sanitize maildir
Remove trailing '/' in maildirs, since people have that (like "/foo/"),
and earlier version didn't complain about that.

Fixes #2298
2022-07-13 23:27:54 +03:00
Dirk-Jan C. Binnema
d8bbeb0218 mu-server: more informative error message 2022-07-05 00:11:56 +03:00
Dirk-Jan C. Binnema
ca8836b631 document: cosmetic 2022-06-29 22:20:34 +03:00
Dirk-Jan C. Binnema
810b9643f4 query: exclude some test code from coverage 2022-06-29 22:20:09 +03:00
Dirk-Jan C. Binnema
97459beed9 maildir: improve testing coverage
Remove some dead/unused code. Update docs. Add test cases.
2022-06-29 22:19:26 +03:00
Dirk-Jan C. Binnema
fc25bb2866 server: commit after indexing
So external users see the changes.
2022-06-29 22:18:15 +03:00
Dirk-Jan C. Binnema
c4ed3e6ba7 server: fix read-mark propagation
Whenever a message is flagged as 'read', do the same for all the duplicates as well.
This used to work, make it work again.

Fixes #2277
2022-06-29 08:59:40 +03:00
Dirk-Jan C. Binnema
df80935c2e document: index some sub-parts as well
1. Also add 'normal' terms for some indexable fields
2. Add terms for e-mail address components

And add some tests.

This helps for some corner-case queries (see tests).

Fixes #2278
Fixes #2281
2022-06-29 08:00:43 +03:00
Dirk-Jan C. Binnema
23ac71e6a7 maildir: add tests for maildir_link / maildir_clear_links 2022-06-29 07:50:16 +03:00
Dirk-Jan C. Binnema
0708033e48 build: update autotools build 2022-06-18 15:21:26 +03:00
Dirk-Jan C. Binnema
cade7493fd build: fix some compiler warnings 2022-06-18 15:21:26 +03:00
Dirk-Jan C. Binnema
1f9172a008 message: remove x-ms-has-attach check
Apparently, it's not very useful (marks sigs as attachments).
2022-06-16 22:50:36 +03:00
Dirk-Jan C. Binnema
f69ad37e7a utils: add regex-split 2022-06-16 22:49:46 +03:00
Dirk-Jan C. Binnema
040d74a326 lib/test-mu-store-query: add aujourd'hui tests
We match aujourd'hui now; add a test.

Fixes #1150.
2022-06-14 23:48:59 +03:00
Dirk-Jan C. Binnema
48695a1981 query-parser: tidy up
Remove "Data", and use Field directly.
2022-06-14 23:15:27 +03:00
Dirk-Jan C. Binnema
412adf3400 query-match-deciders: cosmetics 2022-06-10 23:28:43 +03:00
Dirk-Jan C. Binnema
40669aae49 message/mime-object: add MimeObject::headers
To get a list of all header values.
2022-06-10 23:28:43 +03:00
Dirk-Jan C. Binnema
1ec03ce07c message-file: filter out non-file flags
Only take flags from file names that are actually file-flags, not random other
things
2022-06-10 23:28:43 +03:00
Dirk-Jan C. Binnema
9bf580de3d message: refactor/improve attachment heuristic a bit
Also check for X-MS-Has-Attach
2022-06-10 23:28:43 +03:00
Dirk-Jan C. Binnema
39dcd08fbe message: add calendar flag
For message that contain calendar invitations
2022-06-10 00:47:31 +03:00
Dirk-Jan C. Binnema
646a672ae0 test-utils: add error test 2022-06-09 00:39:34 +03:00
Dirk-Jan C. Binnema
2f3d1bb522 lib: add tokenizer test tool 2022-06-09 00:39:34 +03:00
Dirk-Jan C. Binnema
c1f66059a8 store: fix typo 2022-06-09 00:39:34 +03:00
Dirk-Jan C. Binnema
ce28c86803 tests: add store/query test
Add some tests for storing/indexing message and then run queries on them.
2022-06-09 00:39:34 +03:00
Dirk-Jan C. Binnema
d38d32c404 query-threads/results: cosmetics 2022-06-09 00:39:34 +03:00
Dirk-Jan C. Binnema
49b97e1b6b message/fields: explicit mark contact fields as IndexableTerm
They were so *implicitly*, but the query parser needs the info so contact fields
can use phrase-searces, too.
2022-06-09 00:04:35 +03:00
Dirk-Jan C. Binnema
4379e66b9f bench-store-index: make a bit more realistic
```
             .',;::::;,'.                djcb@evergrey
         .';:cccccccccccc:;,.            -------------
      .;cccccccccccccccccccccc;.         OS: Fedora release 36 (Thirty Six) x86_64
    .:cccccccccccccccccccccccccc:.       Host: MS-7B09 2.0
  .;ccccccccccccc;.:dddl:.;ccccccc;.     Kernel: 5.17.11-300.fc36.x86_64
 .:ccccccccccccc;OWMKOOXMWd;ccccccc:.    Uptime: 6 hours, 16 mins
.:ccccccccccccc;KMMc;cc;xMMc:ccccccc:.   Packages: 4340 (rpm), 70 (flatpak)
,cccccccccccccc;MMM.;cc;;WW::cccccccc,   Shell: zsh 5.8.1
:cccccccccccccc;MMM.;cccccccccccccccc:   Resolution: 3840x2160
:ccccccc;oxOOOo;MMM0OOk.;cccccccccccc:   WM: sway
cccccc:0MMKxdd:;MMMkddc.;cccccccccccc;   Theme: Adwaita [GTK2]
ccccc:XM0';cccc;MMM.;cccccccccccccccc'   Icons: Adwaita [GTK2]
ccccc;MMo;ccccc;MMW.;ccccccccccccccc;    Terminal: tilix
ccccc;0MNc.ccc.xMMd:ccccccccccccccc;     CPU: AMD Ryzen Threadripper 1950X (32) @ 3.399GHz
cccccc;dNMWXXXWM0::cccccccccccccc:,      GPU: AMD ATI Radeon RX 470/480/570/570X/580/580X/590
cccccccc;.:odl:.;cccccccccccccc:,.       Memory: 7101MiB / 15881MiB
:cccccccccccccccccccccccccccc:'.
.:cccccccccccccccccccccc:;,..
  '::cccccccccccccc::;,.

```

% make benchmark
ninja -C /home/djcb/Sources/mu/build benchmark
ninja: Entering directory `/home/djcb/Sources/mu/build'
[0/1] Running benchmark suite.
1/1 bench-store-index        OK             17.40s
2022-06-07 23:06:25 +03:00
Dirk-Jan C. Binnema
65e60a6ed5 indexer: make faster
Remove an (apparently) unneeded lock which help back much of the multi-core
handing.
2022-06-07 23:06:25 +03:00
Dirk-Jan C. Binnema
30c46fba61 message: fix 'changed' test 2022-06-05 15:22:35 +03:00
Dirk-Jan C. Binnema
3d3fd1aa7a server: add some more logging for read-marking
See what happens with multiple messages.
2022-06-04 00:41:28 +03:00
Dirk-Jan C. Binnema
d89820b26b lib/tests: move tests to parent
Otherwise, the coverage checker won't notice them!
2022-06-04 00:41:28 +03:00
Dirk-Jan C. Binnema
015a7ee0cb utils: improve locale_workaround
Fixes: #2270.
2022-06-04 00:41:28 +03:00
Dirk-Jan C. Binnema
0fe8f9a613 mu-util-play: simplify
Remove some unused options
2022-06-04 00:41:28 +03:00
Dirk-Jan C. Binnema
172ff25bb6 mu-maildir: refactor some duplicate code
mu-flags & mu-maildir were having some duplicate code; refactor it into mu-message-file.{cc,hh}
2022-06-04 00:41:28 +03:00
Dirk-Jan C. Binnema
13f0e24241 lib: improve test coverage
Add a bunch of tests
2022-06-02 21:07:41 +03:00
Dirk-Jan C. Binnema
a66360eda5 maildir: revamp unit tests
Re-enable many of the tests that were turned off, and update them for the new impl.
2022-05-31 23:43:13 +03:00
Dirk-Jan C. Binnema
26d64ec78f mu-maildir: fix message_file_parts / empty flags
Remove the suffix part even with no flags.

Fixes: issue #2268
2022-05-31 23:41:50 +03:00
Dirk-Jan C. Binnema
022ae9c2e3 result: make assert_valid_result a bit more informative
For unit tests.
2022-05-31 23:39:50 +03:00
Dirk-Jan C. Binnema
ce1fea6302 store: log whether a message is 'personal' 2022-05-30 20:31:23 +03:00
Dirk-Jan C. Binnema
734445f78d mu-server: add a bit more debugging info 2022-05-30 20:30:33 +03:00
Dirk-Jan C. Binnema
5df56896fb lib/meson.build: explicitly add thread_dep
For many setups (local, CI), things work fine without this, but apparently not
for all users. So, add thread_dep explicitly.

Fixes: #2266.
2022-05-29 11:10:58 +03:00
Dirk-Jan C. Binnema
d5632b9ac9 script: avoid compiler warning 2022-05-29 00:17:41 +03:00
Dirk-Jan C. Binnema
ffcb59bfd3 utils: add fallback for time_to_string
Still don't understand issue #2230
2022-05-28 00:51:08 +03:00
Dirk-Jan C. Binnema
ad6f8f1190 thirdparty: include in EXTRA_DIST
For autotools.
2022-05-28 00:51:08 +03:00
Dirk-Jan C. Binnema
5c161cfdbb lib/tests: add indexing benchmark 2022-05-28 00:51:08 +03:00
Dirk-Jan C. Binnema
0adf91f821 fields: include references in sexp
We need them for setting up replies. This requires a db update.
2022-05-28 00:51:08 +03:00
Dirk-Jan C. Binnema
91dcd19dad tests: improve coverage a bit 2022-05-24 19:36:39 +03:00
Dirk-Jan C. Binnema
046398b1ae utils: avoid compiler warning 2022-05-24 19:36:21 +03:00
Dirk-Jan C. Binnema
277a7e0e10 guile: don't extern-c'ify libguile
Already has it... seems to break compilation on some machines?
2022-05-24 19:35:29 +03:00
Dirk-Jan C. Binnema
9c9f9ecae3 lib: improve coverage a bit 2022-05-23 23:55:11 +03:00
Dirk-Jan C. Binnema
8eac392221 guile: re-enable the guile support
Update for the internal (Mu::Message) APIs.

Update build.
2022-05-21 17:44:09 +03:00
Dirk-Jan C. Binnema
ce46c44ea9 query-results: ease getting Xapian::Document for iter
This makes it easier to construct guile-usable Messages.
2022-05-21 17:42:25 +03:00
Dirk-Jan C. Binnema
a3ad04f12f message: make it easier to create heap-allocated messages
We need this for guile to coöperate with its garbage collector.
2022-05-21 17:41:21 +03:00
Dirk-Jan C. Binnema
cc63eca8ad autotools: improve build
*almost* works (except for guile/, which does work yet anyway).
2022-05-19 23:38:49 +03:00
Dirk-Jan C. Binnema
cea3167f3e lib: remove some dead code (mu-str/utils)
Remove unused library code; recycle some electrons.
2022-05-19 23:38:49 +03:00
Dirk-Jan C. Binnema
9af9d0fa94 indexer/store: avoid completed callback
This cause havoc / race conditions.
2022-05-18 20:16:48 +03:00
Dirk-Jan C. Binnema
c3778cd467 store: reset indexer in dtor
Clear it up as soon as possible.
2022-05-18 18:24:30 +03:00
Dirk-Jan C. Binnema
0be54119d8 store: stop indexer in dtor 2022-05-18 18:07:19 +03:00
Dirk-Jan C. Binnema
2fd133761f utils: fix unsetting timezone 2022-05-18 01:12:20 +03:00
Dirk-Jan C. Binnema
b03590cca8 tests: skip missing timezones in queries, too 2022-05-18 01:08:40 +03:00
Dirk-Jan C. Binnema
33d30775ee test-utils: Skip test if timezone is not available 2022-05-18 00:52:28 +03:00
Dirk-Jan C. Binnema
dbd15cf704 mu-maildir: don't allow empty path for new maildir
be a bit stricter.
2022-05-18 00:35:02 +03:00
Dirk-Jan C. Binnema
493549a896 mime-object: fix some pedantic compiler warnings 2022-05-18 00:14:01 +03:00
Dirk-Jan C. Binnema
c4cc9795dc utils: add locale_workaround
Attempt to work around some locale handling throwing in some systems.

   "locale::facet::_S_create_c_locale name not valid"

Ugly, but maybe it helps.
2022-05-17 22:31:03 +03:00
Dirk-Jan C. Binnema
6e37790012 mu: improve error reporting 2022-05-15 13:40:44 +03:00
Dirk-Jan C. Binnema
e13dd0da98 server: Implement forwarding attachments
Using the new infra in Message.
2022-05-15 11:33:14 +03:00
Dirk-Jan C. Binnema
5d9bb72c0b message: augment cache-path() so it supports subparts
Take an optional index parameter for a *subpart*.

This is for the case where we save attachments from a message (in particular,
when forwarding). We can't save them in the same directory for the (rare) case
when there are multiple attachments with the same name. And we don't want to
uniquify the name, since that shows up in e.g. the forwarded file name.

This can be solved by saving each in their own indexed subdir.
2022-05-15 11:28:48 +03:00
Dirk-Jan C. Binnema
9e78d3d13f utils: insist on semicolon after MU_ENABLE_BITOPS 2022-05-14 12:47:26 +03:00
Dirk-Jan C. Binnema
bf9e083ed4 message: avoid shadowing variable 2022-05-14 12:47:01 +03:00
Dirk-Jan C. Binnema
907751bc7b test: enable some more 2022-05-13 23:01:33 +03:00
Dirk-Jan C. Binnema
4edbe01aa0 indexer: add extra fsm state "finishing" to fix some races
As reported by helgrind
2022-05-13 23:00:20 +03:00
Dirk-Jan C. Binnema
201acfbbd3 store: add lock to index_complete
It must be protected.
2022-05-12 23:23:47 +03:00
Dirk-Jan C. Binnema
eb22ec450c message: Don't assume there's a sub-message
Also add unit-test.

Fixes: issue #2256.
2022-05-12 19:59:10 +03:00
Dirk-Jan C. Binnema
5b5dbf3aae fields: some small tweaks 2022-05-12 08:56:13 +03:00
Dirk-Jan C. Binnema
d79d770958 store: improve error handling
Detect store-lock
2022-05-12 08:56:13 +03:00
Dirk-Jan C. Binnema
34c5ca1627 mu-error: encode retval/flags in enum 2022-05-12 08:56:13 +03:00
Dirk-Jan C. Binnema
2e9666af0b store/info: Gather some usage statistics
Keep track of the latest-change/latest-index.
2022-05-10 08:16:47 +03:00
Dirk-Jan C. Binnema
81689f0af3 contacts-cache: return most relevant contacts
Return in the contacts in *reverse* rank order, i.e. the most relevant come first.
This is useful since we only want the first maxnum contacts, and those should of
course be the most relevant.

Update mu cfind/server as well.

cfind
2022-05-09 22:25:28 +03:00
Dirk-Jan C. Binnema
80d84bf635 store: use Result<Store> builder, add auto upgrade
Make it a Result type, and add auto-upgrade (not enabled yet)
Update dependents.
2022-05-09 22:25:28 +03:00
Dirk-Jan C. Binnema
7470a5f8ea store/fields: Use one MaxTermLength everywhere
One should be enough!
2022-05-09 22:25:28 +03:00
Dirk-Jan C. Binnema
dc69505580 mu-maildir: No need for namespaced function names
Mu::mu_maildir_... -> Mu::maildir_...
2022-05-09 22:25:28 +03:00
Dirk-Jan C. Binnema
48311ea18d mu/mu4e: tweak :list vs :mailing list 2022-05-07 20:48:21 +03:00
Dirk-Jan C. Binnema
80c9ffae1e mu/mu4e: use :mailing-list as the mailing-list property
In queries you can use list: as before

This helps for issue #2246.
2022-05-07 16:10:52 +03:00
Dirk-Jan C. Binnema
d79488efdc avoid warnings, update tests 2022-05-06 22:54:41 +03:00
Dirk-Jan C. Binnema
f83d1b3ed0 update tests: avoid helgrind warning
Log to the black_hole or helgrind gets unhappy
2022-05-06 22:17:53 +03:00
Dirk-Jan C. Binnema
8c3d1ae90a message: cosmetics 2022-05-06 22:17:53 +03:00
Dirk-Jan C. Binnema
4fc05261ce message: implement rfc2047-encoding addresses
For address names with commas, quotes etc.
2022-05-06 22:17:53 +03:00
Dirk-Jan C. Binnema
da8489d0f6 sexp: allow for some prettified string output
Allow for adding newlines between list items
2022-05-06 22:17:53 +03:00
Dirk-Jan C. Binnema
2a5c1e239c message: support embed:text in attached mail
As before; scan attached messages as well.
2022-05-06 22:17:53 +03:00
Dirk-Jan C. Binnema
f9550f3cb6 mu: merge flags into fields command
One is enough
2022-05-06 22:17:53 +03:00
Dirk-Jan C. Binnema
836bfc9062 mu/mu4e: implement mu4e-compose-complete-max
Allow limiting number of contacts for auto-completion to a specific number;
defaulting to 2000.
2022-05-06 21:58:51 +03:00
Dirk-Jan C. Binnema
ffce3dda21 contacts: support encoding names with '"', ',' etc. 2022-05-06 09:03:11 +03:00
Dirk-Jan C. Binnema
e0d047105b server/message-part: restore forwarding attachments 2022-05-05 23:45:11 +03:00
Dirk-Jan C. Binnema
62e546a4e2 autotools: fix build 2022-05-05 23:40:56 +03:00
Dirk-Jan C. Binnema
8d80bedf38 maildir: add some useful defaults for mu_maildir_mkdir 2022-05-05 01:41:32 +03:00
Dirk-Jan C. Binnema
2ccf703769 server: update for dealing with message/sexps 2022-05-05 01:40:17 +03:00
Dirk-Jan C. Binnema
4b56b8779d mime-object: ensure init_gmime is called
Was missing in some paths
2022-05-05 01:40:17 +03:00
Dirk-Jan C. Binnema
6126d7ee62 store: ensure updates update message sexp too
And turn all "add" into "replace" so old messages get removed.
Update tests too.
2022-05-05 01:40:17 +03:00
Dirk-Jan C. Binnema
c0ae7e6860 message: add cache_path per message
Generate a message-specific cache path when needed.
Update tests, too.
2022-05-05 01:40:17 +03:00
Dirk-Jan C. Binnema
85fed37870 message/document: update sexp on the fly
Keep the sexp for the document up to date during scan / change, instead of
having a separate step.
2022-05-05 01:40:17 +03:00
Dirk-Jan C. Binnema
5da066a59e indexer: use ctime, not mtime
So we update if _anything_ changes with the file, not just the contents.
2022-05-05 01:38:25 +03:00
Dirk-Jan C. Binnema
e067bca090 message-sexp: Add :modified and :reply-to 2022-05-05 01:38:25 +03:00
Dirk-Jan C. Binnema
ee4b3bda2d message: support 'personal' flag for messages
Add a new flag 'personal' for a message, which means that at least one of the
contact fields is personal.
2022-05-05 01:38:25 +03:00
Dirk-Jan C. Binnema
a4f39819ee message/document: allow updating flags
Some flags (such as 'personal') can only be set just before storing; so allow
for update the flags.
2022-05-05 01:38:25 +03:00
Dirk-Jan C. Binnema
fea596ae3b message/field: cache the message's sexp
Keep it in the store; much faster than generating on the fly.
2022-05-05 01:38:25 +03:00
Dirk-Jan C. Binnema
263e122a13 contacts: expose contact type
Instead of the Field::Id, keep a specific Contact::Type so we can distinguish
Sender, ReplyTo as well.

Update dependents.

Some cleanup.
2022-05-05 01:38:25 +03:00
Dirk-Jan C. Binnema
91d2a37379 query-results: Use mu-document as backend
So the mu-specific serialization/deserialization gets handled correctly
2022-05-05 01:38:25 +03:00
Dirk-Jan C. Binnema
a864616110 mu: add "modified" fields
Add a new "modified" field for checking the last modification time of the
message.
2022-05-05 01:38:25 +03:00
Dirk-Jan C. Binnema
9e0173f387 store: set XAPIAN_FLUSH_THRESHOLD above internal commit
Don't auto-flush more often than the internal handling.
2022-05-05 01:38:25 +03:00
Dirk-Jan C. Binnema
8f9d1e5e60 mu: add fields/flags commands
Useful information for devising queries.

Directly generated from the source. Add manpages, too.
2022-05-05 01:38:25 +03:00
Dirk-Jan C. Binnema
30e7b5d9ec lib: move 3rd party code to thirdparty; add tabulate.hpp
Move 3rd-party code to their own dir, and add the nice tabulate.hpp
2022-04-30 10:40:45 +03:00
Dirk-Jan C. Binnema
a4317d3264 mu-query-matches: remove dead code 2022-04-30 10:40:45 +03:00
Dirk-Jan C. Binnema
967e855f6b message: add docid param to sexp 2022-04-30 10:40:45 +03:00