Commit graph

3258 commits

Author SHA1 Message Date
Austin Clements
610f0e0992 lib: Reject multi-message mboxes and deprecate single-message mbox
Previously, we would treat multi-message mboxes as one giant email,
which, besides the obvious incorrect indexing, often led to
out-of-memory errors for archival mboxes.  Now we explicitly reject
multi-message mboxes.  For historical reasons, we retain support for
single-message mboxes, but official deprecate this behavior.
2012-11-26 21:12:10 -04:00
Austin Clements
079f5a138b test: Test for ignoring multi-message mbox
This test is currently broken.  Note that its brokenness cascades and
causes the next test to fail as well (because notmuch incorrectly
indexes the mbox file).
2012-11-26 21:10:11 -04:00
Austin Clements
de9875ca83 test: Test notmuch new for single-message mbox
We support this for historical reasons.
2012-11-26 21:05:15 -04:00
David Bremner
7beeb8c88a test: initial performance testing infrastructure
This is not near as fancy as as the unit tests, on the theory that
the code should typically be crashing when performance tuning.
Nonetheless, there is plenty of room for improvement.  Several more of
the pieces of the test infrastructure (e.g. the option parsing) could
be factored out into test/test-lib-common.sh
2012-11-26 08:39:21 -04:00
David Bremner
20b7e0ff2f test: factor out part of test-lib.sh into test-lib-common.sh
The idea is to use some of the simpler parts of the test suite
infrastructure to help run performance tests.
2012-11-25 21:11:59 -04:00
Tomi Ollila
0a21fb98b2 notmuch-show.el: handle the case where icalendar-import-buffer returns nil
icalendar-import-buffer can fail by an error signal (which have been
witnessed) but according to its docstring it can also return nil
when failing (it returns t when succeeding).

Now that the error is caught by the caller of notmuch-show-inset-part-*
functions in case icalendar-import-buffer returns nil an explicit
error is signaled and unwind-protect takes care of deleting the
temporary file (just in case, it is usually not written to the fs yet).
2012-11-25 11:06:23 -04:00
Tomi Ollila
60b5bff53d notmuch-show.el: import calendar data with public function after CR removal
notmuch-get-bodypart-content provides raw data to its caller so
that it can be stored verbatim whenever needed. icalendar functions
expect Emacs to do EOL conversion for the data given to these. Therefore
it the CRLF -> LF conversion is now done explicitly.

The calls to private functions icalendar--convert-ical-to-diary and
icalendar--read-element are replaced with call to public function
icalendar-import-buffer.
2012-11-25 11:06:12 -04:00
Tomi Ollila
3bd8494da0 test: always source test-lib.sh as ./test-lib.sh
There are currently 45 TESTS scripts. 36 of those load
test-lib.sh using '. ./test-lib.sh' and 9 '. test-lib.sh'.

In latter case test-lib.sh is first searched from directories
in PATH (posix) and then from current directory (bash feature).

Changed the 9 files to execute '. ./test-lib.sh'. The test-lib.sh
should never be loaded from directory in PATH.
2012-11-24 22:07:46 -04:00
Austin Clements
73a9fcf89b test: Produce useful output when the HTML with images test fails
Previously, this would simply indicate that the grep failed without
any indication of the Emacs output it failed on.  Now we take
advantage of the test framework's handling of stdout to display the
incorrect Emacs output if the test fails.
2012-11-21 18:52:23 -04:00
Mark Walters
e0adf10be8 contrib: notmuch-pick: add tests
The test should be run using the wrapper run-tests.sh.  This links
the tests into the normal notmuch TEST_DIRECTORY and runs them from
there. After the test is complete then the links are removed.
2012-11-19 08:22:37 -04:00
David Bremner
be66f3f709 test: add nontrivial test for restore --accumulate.
It seems we have never tested the case that restore --accumulate
actually adds tags. I noticed this when I started optimizing and no
tests failed.

The bracketing with "restore --input=dump.expected" are to make sure
we start in a known state, and we leave the database in a known state
for the next test.
2012-11-17 10:24:24 -04:00
David Bremner
7d1a2ca0ce test: add more informative titles to restore --accumulate tests
Thanks to Ethan for the suggestion.
2012-11-17 10:18:00 -04:00
Tomi Ollila
3977b250cd Fixed 2 misspellings of word 'separate'
"Seperate: The second most common misspelling on the Internet..."
(from http://www.re-vision.com/spelling/separate.html).

s/seperate/separate/ in debian/NEWS.Debian & test/README done.
2012-11-16 15:50:55 -04:00
Mark Walters
96d9f54615 contrib: pick: bugfix when trying to show a non-message
If the user pressed return on the end result status line it gave a
blank message. Modify the function notmuch-pick-get-message-id to
return nil rather than an empty message-id in this case to fix this.

This also fixes a bug in the (lack of) quoting of the id string.
2012-11-16 15:37:10 -04:00
Kevin J. McCarthy
ff9fd62ab6 Update notmuch-mutt requirements in README file.
This updates the notmuch-mutt README file with requirements for the
recently added duplicate removal patch.

-Kevin
2012-11-16 15:36:28 -04:00
David Bremner
4c38148c20 notmuch-dump: tidy formatting
More uncrustify at work.
2012-11-16 08:46:31 -04:00
David Bremner
660e1b6437 notmuch-restore: tidy formatting
This is again the work of uncrustify.

I remember there is some controversy about "! foo" versus "!foo", but
in context I think "! foo" looks OK. Also, for functions "! foo
(blah)" seems better than "!foo (blah)".
2012-11-16 08:46:07 -04:00
David Bremner
127c788e45 notmuch-tag: tidy formatting
This is just the result of running uncrustify.
2012-11-16 08:45:39 -04:00
Tomi Ollila
b939b98723 NEWS (for 0.15): Added note about Bcc & Reply-To headers in json output
notmuch show --format json now includes Bcc and Reply-To headers of
the message. Mention that in NEWS.
(Heavily modified version of text originally from Michal Nazarewicz.)
2012-11-16 08:11:57 -04:00
David Bremner
5aba32208f notmuch-restore: fix error message for extra positional parameter.
Note that a single positional parameter will take this code path also,
so the old message really makes no sense anymore.
2012-11-15 18:20:10 -04:00
David Bremner
fe13a55421 notmuch-restore: remove extra increment of optind
This is left over from when the file name was a positional parameter.
2012-11-15 18:19:38 -04:00
Austin Clements
3ac76816c5 test: Fix HTML rendering test
The test designed to exercise Emacs' rendering of HTML emails
containing images inadvertently assumed w3m was available under Emacs
23.  The real point of this test was to check that Emacs 24's shr
renderer didn't crash when given img tags, so use shr if it's
available, html2text otherwise (which is built in), and do only a
simple sanity check of the result.
2012-11-15 18:15:10 -04:00
Austin Clements
87a05adba3 emacs: Buttonize mid: links
This adds support for RFC 2392 mid: message ID links.
2012-11-15 18:13:27 -04:00
Austin Clements
580997252f emacs: Improve the regexp used to match id:'s in messages
This regexp agrees with Xapian query syntax much more closely, though
we specifically disallow various cases that would be confusing in the
context of an email body (e.g., punctuation at the end of an id: link
is not considered part of the id: link because it's probably part of
the surrounding text).

In particular, this handles id: links that are not surrounded by
quotes much better, which stash is much more likely to generate now
that we don't quote id's that don't need to be quoted.  It also
handles quoted id: links better.

We update the buttonization test to reflect the new pattern.
2012-11-15 18:11:07 -04:00
Austin Clements
65801835ee test: Test buttonization of id: links
This matches the current behavior of the buttonizer, so it passes, but
many of these cases are not what you'd want (and some of them aren't
even valid Xapian queries).  The next patch will fix the handling of
these cases and update the test.
2012-11-15 18:03:02 -04:00
David Bremner
b173037398 test: expand regex in test/basic
Over time, maintaining this very long regex has become irritating,
especially when resolving conflicts.

This patch replaces the call to sed with multiple extra arguments to
find.  Since each test binary is now on it's own line, this should
make resolving conflicts easier.
2012-11-10 16:47:10 -04:00
Austin Clements
ae459a3f4c devel: Document schemata in STYLE 2012-11-08 09:49:54 -04:00
Austin Clements
a437031a3c show: More aggressively document the presence of devel/schemata
Previously, the only mention of devel/schemata was a comment at the
top of format_part_json, but the JSON output code is spread across
several functions that are distributed across notmuch-show.c.  Add
references from the other three key JSON output functions.
2012-11-08 09:49:41 -04:00
Austin Clements
70dacc1fd9 devel: Add Reply-to to the schemata
The code got out of sync with the documentation in 7d3c06dc.
2012-11-08 09:49:22 -04:00
Tomi Ollila
7c6ac9fbae emacs/notmuch-show.el: handle bodypart insert error
When inserting of email bodypart failes, insert a failure message
to the buffer (and continue) instead of halting the insertion of
the rest of that email thread in question.
2012-11-07 08:04:12 -04:00
Peter Wang
96864a9aea test: add test for showing Reply-To headers
Test that show --format=json now outputs Reply-To header fields when
present.
2012-11-07 08:03:46 -04:00
Peter Wang
7d3c06dcbe show: include Reply-To header in json output
Output the Reply-To header field if present in a message.
I want to be able to see what the sender intended in my mail client,
before hitting the reply key.  Only json output is changed,
like the recently added Bcc field.
2012-11-07 08:03:45 -04:00
Tomi Ollila
439fe710eb uncrustify.cfg: added 3 new types for uncrustify to know
Added FILE, notmuch_show_params_t and sprinter_t to be
types when uncrustifying sources. This affect spacing
when uncrustify is deciding for type declaration instead
of binary multiplication operation.
2012-11-07 08:00:03 -04:00
Jani Nikula
84a0c529b9 test: add tests for date:since..until range queries
A brief initial test set.
2012-10-31 17:14:07 -03:00
Jani Nikula
984212d2b0 NEWS: date range search support 2012-10-31 16:58:26 -03:00
Jani Nikula
8262a1b1b0 man: document the date:since..until range queries 2012-10-31 16:57:51 -03:00
Jani Nikula
90cd1bac4e lib: add date range query support
Add a custom value range processor to enable date and time searches of
the form date:since..until, where "since" and "until" are expressions
understood by the previously added date/time parser, to restrict the
results to messages within a particular time range (based on the Date:
header).

If "since" or "until" describes date/time at an accuracy of days or
less, the values are rounded according to the accuracy, towards past
for "since" and towards future for "until". For example,
date:november..yesterday would match from the beginning of November
until the end of yesterday. Expressions such as date:today..today
means since the beginning of today until the end of today.

Open-ended ranges are supported (since Xapian 1.2.1), i.e. you can
specify date:..until or date:since.. to not limit the start or end
date, respectively.

CAVEATS:

Xapian does not support spaces in range expressions. You can replace
the spaces with '_', or (in most cases) '-', or (in some cases) leave
the spaces out altogether.

Entering date:expr without ".." (for example date:yesterday) will not
work as you might expect. You can achieve the expected result by
duplicating the expr both sides of ".." (for example
date:yesterday..yesterday).

Open-ended ranges won't work with pre-1.2.1 Xapian, but they don't
produce an error either.

Signed-off-by: Jani Nikula <jani@nikula.org>
2012-10-31 16:55:32 -03:00
Jani Nikula
af6b4b29f9 build: build parse-time-string as part of the notmuch lib and static cli 2012-10-31 16:53:01 -03:00
Jani Nikula
58b222d597 test: add smoke tests for the date/time parser module
Test the date/time parser module directly, independent of notmuch,
using the parse-time test tool.

Credits to Michal Sojka <sojkam1@fel.cvut.cz> for writing most of the
tests.
2012-10-31 16:50:57 -03:00
Jani Nikula
519be19250 test: add new test tool parse-time for date/time parser
Add a smoke testing tool to support testing the date/time parser
module directly and independent of the rest of notmuch.

Credits to Michal Sojka <sojkam1@fel.cvut.cz> for the stdin parsing
idea and consequent massive improvement in testability.
2012-10-31 16:44:55 -03:00
Jani Nikula
d86522637a parse-time-string: add a date/time parser to notmuch
Add a date/time parser to notmuch, to be used for adding date range
query support for notmuch lib later on. Add the parser to a directory
of its own to make it independent of the rest of the notmuch code
base.

Signed-off-by: Jani Nikula <jani@nikula.org>
2012-10-31 16:42:29 -03:00
Jani Nikula
c158201ee2 build: drop the -Wswitch-enum warning
-Wswitch-enum is a bit awkward if a switch statement is intended to
handle just some of the named codes of an enumeration especially, and
leave the rest to the default label.

We already have -Wall, which enables -Wswitch by default, and per GCC
documentation, "The only difference between -Wswitch and this option
[-Wswitch-enum] is that this option gives a warning about an omitted
enumeration code even if there is a default label."

Drop -Wswitch-enum to not force listing all named codes of
enumerations in switch statements that have a default label.
2012-10-31 16:39:25 -03:00
Mark Walters
42391b4056 emacs: Move the incremental JSON parser to notmuch-lib.el
This just moves the newly split out incremental json parser (together
with its state variables) to lib.

There should be no functional change.
2012-10-28 09:42:18 -03:00
Mark Walters
294667871a emacs: Rename incremental JSON internal variables
This patch just renames the internal variables for the JSON parser now
it is no longer specific to search mode. It also fixes up the white
space after the previous patch. There should be no functional changes.
2012-10-28 09:42:09 -03:00
Mark Walters
1dd76ab9b6 emacs: Split out the incremental json parser into its own function
This patch splits out the incremental json parser into its own
function.

It moves the main logic of the parser to happen inside the parse
buffer rather than inside the results buffer, but makes sure all
results and all errors are displayed in the results buffer.

It also changes the local parser variables from being buffer
local to the results buffer to being buffer local to the parse buffer,
and sets them up automatically so the caller does not need to.

Finally to keep the diff small this patch does not fix the whitespace,
nor complete the code movement (these are done in subsequent patches)
but it should contain all the functional changes.
2012-10-28 09:41:54 -03:00
Mark Walters
35ebf0b321 contrib: add pick TODO file 2012-10-28 09:35:38 -03:00
Mark Walters
04c4085ab3 contrib: add pick README. 2012-10-28 09:35:17 -03:00
Mark Walters
3d92a257c8 contrib: add notmuch-pick.el file itself
This adds the main notmuch-pick.el file.
2012-10-28 09:35:02 -03:00
Austin Clements
b04c062aee Support OpenBSD
OpenBSD's build flags are identical to FreeBSD, except that libraries
need to be explicitly linked against libc.  No code changes are
necessary.

From: Cody Cutler <ccutler@csail.mit.edu>
2012-10-27 09:35:47 -03:00
Austin Clements
0a4663ff43 emacs: Escape tag queries suggested by tab completion 2012-10-27 09:34:34 -03:00