Tomi Ollila [Mon, 27 Jan 2014 20:32:12 +0000 (22:32 +0200)]
emacs: ad-activate 'mm-shr after ad-disable-advice 'mm-shr
Imitated from "Enabling advice" in Emacs lisp manual...
ad-disable-advice by itself only changes the enable flag for a
piece of advice. To make the change take effect in the
advised definition, the advice needs to be activated again.
Jani Nikula [Sun, 19 Jan 2014 20:32:26 +0000 (22:32 +0200)]
cli: abstract notmuch new result printing
The notmuch_new_command() function has grown huge, chop it up a
bit. This should also be helpful when adding a --quiet option to
notmuch new. No functional changes.
David Bremner [Sat, 25 Jan 2014 03:07:43 +0000 (23:07 -0400)]
lib: update documentation for notmuch_database_get_directory
Clarify that using the directory after destroying the corresponding
database is not permitted.
This is implicit in the description of notmuch_database_destroy, but
it doesn't hurt to be explicit, and we do express similar "ownership"
relationships at other places in the docs.
Tomi Ollila [Sat, 25 Jan 2014 12:33:55 +0000 (14:33 +0200)]
build: delete the default .SUFFIXES
All implicit rules in notmuch Makefiles are "pattern rules"; Deleting the
default suffixes (to support obsolete, old-fashioned "suffix rules") from
make reduces the output of 'make -d' by 40 to 90 percent, helping e.g.
debugging make problems.
David Bremner [Thu, 23 Jan 2014 13:02:47 +0000 (09:02 -0400)]
man: update notmuch-dump man page for new default.
Actually the previous default was not documented explicitely. I moved
the batch-tag section first because it seemed that the formats were
previously documented in order default, other.
Tomi Valkeinen [Tue, 19 Nov 2013 05:10:31 +0000 (07:10 +0200)]
lib: fix error handling
Currently if a Xapian exception happens in notmuch_message_get_header,
the exception is not caught leading to crash. In
notmuch_message_get_date the exception is caught, but an internal error
is raised, again leading to crash.
This patch fixes the error handling by making both functions catch the
Xapian exceptions, print an error and return NULL or 0.
The 'notmuch->exception_reported' is also set, as is done elsewhere,
even if I don't really get the idea of that field.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@iki.fi>
Jani Nikula [Fri, 10 Jan 2014 21:28:53 +0000 (23:28 +0200)]
cli: clean up exit status code returned by the cli commands
Apart from the status codes for format mismatches, the non-zero exit
status codes have been arbitrary. Make the cli consistently return
either EXIT_SUCCESS or EXIT_FAILURE.
Mark Walters [Sat, 11 Jan 2014 21:49:52 +0000 (21:49 +0000)]
emacs: tree: use tag-format-tags
Previously tree did not use tag-format-tags: since tree wants to
distinguish matching messages from non-matching messages it is not a
perfect fit.
However, in preparation for allowing tag-changes to be shown (i.e.,
added or deleted tags to be indicated) it is convenient to make all
places displaying tags call the same routines.
We modify notmuch-tag-format-tags slightly so that it can take and
argument for the default characteristics of the face before the
special tag features are applied.
This also means that things like the star symbol for flagged messages
all work in tree.
Mark Walters [Sat, 11 Jan 2014 21:41:42 +0000 (21:41 +0000)]
emacs: tree: default face for matching/non-matching messages
This adds default faces for matching and non-matching messages. This
makes it easier for a user to do broad customization without having to
customize every field. It also fits more neatly with the next patch
which switches to using notmuch-tag-format-tags for tag formatting.
We set the field specific face customization to nil for all the fields
which use the message default face to make it clear to a user which
fields customizations are being used.
Tomi Ollila [Wed, 15 Jan 2014 19:02:03 +0000 (21:02 +0200)]
test: leave T\d\d\d- in variable $this_test and introduce $this_test_bare
Script `notmuch-test` expects the results file have T\d\d\d- part
intact so the results files (and some test output files) are now
name as such.
Without this change `notmuch-test` will exit in case the test
script it was executing exited with nonzero value.
The T\d\d\d- part is dropped in new variable $this_test_bare which is
used in progress informational messages and when loading .el files in
emacs tests (whenever $this_test_bare.el exists).
Jani Nikula [Fri, 17 Jan 2014 16:21:05 +0000 (18:21 +0200)]
lib: fix clang compiler warning
With some combination of clang and talloc, not using the return value
of talloc_steal() produces a warning. Ignore it, as talloc_steal() has
no failure modes per documentation.
Tomi Ollila [Sun, 3 Nov 2013 14:05:35 +0000 (16:05 +0200)]
build: remove trailing '/.' when doing mkdir -p .deps/.
When make variable $@ does not contain directory part, $(@D)
resolves as '.'. In this case .deps/$(@D) is '.deps/.'
In some systems `mkdir [-p] directory/.` fails.
To make this compatible with more system substitute trailing
'/.' (slashdot) with '' (empty string) whenever it occurs there.
David Bremner [Sat, 11 Jan 2014 17:25:39 +0000 (13:25 -0400)]
test/emacs: replace the use of process-attributes with signal-process
In some environments (at least Hurd), process-attributes is
unimplimented and always returns nil. This ends up causing test
failures (see e.g. id:87a9ffofsc.fsf@zancas.localnet).
Historically and according to POSIX 1003.1-2001, a signal of 0 can be
used to check the validity of a pid. This seems less heinous than
parsing the output of ps(1).
David Bremner [Sun, 12 Jan 2014 03:05:33 +0000 (23:05 -0400)]
debian: update notmuch-emacs for emacs policy 2.0.6
This involves
- the meta-flavour emacs has gone away
- a compat file is needed (also installed by dh_installemacsen)
- a conflict with pre-2.0.0 emacsen-common
- manually managing the "installed" semaphore file
Mark Walters [Thu, 19 Dec 2013 19:16:51 +0000 (19:16 +0000)]
emacs: tree: bare-id in tree
Previously notmuch-tree-get-message-id always returned the id
including the prefix "id:". Modify the function to take an optional
`bare' argument saying to return the raw string.
This will be useful later and brings the function in line with
notmuch-show-get-message-id.
Tomi Ollila [Wed, 4 Dec 2013 19:31:58 +0000 (21:31 +0200)]
devel/release-checks.sh: adjust to LIBNOTMUCH version checks
NOTMUCH_VERSION_* macros in lib/notmuch.h are replaced with
LIBNOTMUCH_VERSION_* macros. Check that the values of those
match the LIBNOTMUCH_*_VERSION values in lib/Makefile.local.
Austin Clements [Mon, 23 Dec 2013 20:20:36 +0000 (15:20 -0500)]
test: Fix transient error in 'new' test
This fixes a non-deterministic failure in "Ignore files and
directories specified in new.ignore (multiple occurrences)". The test
assumed that all directories would be scanned, even though nothing
updated the mtime of ${MAIL_DIR}. It *usually* worked nevertheless
because the tests run quickly enough that the directory mtime is
usually the same as the current time, so notmuch new does not update
the mtime in the database (because more changes could occur in the
same second). However, when it occasionally did update the mtime in
the database, the notmuch new call in this test would (correctly) skip
"pass 2" of scanning ${MAIL_DIR}, causing it to skip the following
expected lines:
This patch fixes this problem by touching ${MAIL_DIR} to ensure it
gets scanned and by rearranging the test to ensure the directories are
touched immediately before the main notmuch new call in the test.
David Bremner [Sat, 14 Dec 2013 14:49:43 +0000 (22:49 +0800)]
test: remove call to notmuch-hello from emacs_deliver_message
There is an obscure bug in notmuch-hello that very occasionally causes
emacs_deliver_message to fail. Since it it doesn't serve any actual
purpose in the function we delete it, and leave tracking down the the
bug for another day.
David Bremner [Sat, 14 Dec 2013 14:39:54 +0000 (22:39 +0800)]
test: add emacs_fcc_message that does not use smtp-dummy
Most of the tests previously using emacs_deliver_message do not use
the actual transmitted message, so we replace it with a simpler (and
presumably more reliable function) that only saves (and indexes) an
fcc copy of the message.
Tomi Ollila [Thu, 5 Dec 2013 12:46:00 +0000 (14:46 +0200)]
test: implement and document NOTMUCH_TEST_QUIET variable usage
When NOTMUCH_TEST_QUIET environment variable is set to non-null value
messages when new test script starts and when test PASSes are disabled.
This eases picking the cases when tests FAIL (as those are still printed).
Tomi Ollila [Mon, 25 Nov 2013 17:08:18 +0000 (19:08 +0200)]
test: print empty line at the beginning of test script, not at end
In preparation for quiet mode print empty line before writing the
test description. This is done now in function designed for it --
it will also be called when test fails.
Tomi Ollila [Mon, 25 Nov 2013 17:08:17 +0000 (19:08 +0200)]
test: resolve `basename "$0" .sh` once for all in test-lib.sh
test-lib.sh sometimes did equivalent of `basename "$0" .sh`, sometimes
skipping the basename part and sometimes .sh part. This worked as
we never had path components in $0 (more than ./) nor .sh ending.
Now the equivalent of `basename "$0" .sh` is done once and used
everywhere. In the future we may have .sh suffix in test names
-- removing those is a good idea.
David Bremner [Sun, 8 Dec 2013 15:29:38 +0000 (23:29 +0800)]
test: give unique timestamps to messages
The choice of decreasing timestamps is a hack which reduces the number
of existing tests which fail. This can be changed to increasing
if/when somebody wants update another 47 tests.
David Bremner [Sun, 8 Dec 2013 08:41:34 +0000 (16:41 +0800)]
test: sanitize Date and timestamp fields in json
Eventually we want test messages to have distinct dates to avoid
reproducability problems. This sanitization will prevent some test
failures when that change is made.
Replace the use of a local function in maildir-sync with
notmuch_json_show_sanitize
Austin Clements [Wed, 4 Dec 2013 16:19:46 +0000 (11:19 -0500)]
lib: Bump library version from 3.0.0 to 3.1.0
This version of the library introduces LIBNOTMUCH_CHECK_VERSION and
the *_VERSION macros. Bumping the version number is also necessary to
make the comment on LIBNOTMUCH_CHECK_VERSION no longer a lie.
Austin Clements [Wed, 4 Dec 2013 16:19:45 +0000 (11:19 -0500)]
lib: Replace NOTMUCH_*_VERSION with LIBNOTMUCH_*_VERSION
This makes it clear that these macros refer to the *library* version,
and not to the notmuch application-level release. Since there are no
consumers of these macros yet, this is now or never.
Austin Clements [Wed, 4 Dec 2013 16:19:44 +0000 (11:19 -0500)]
lib: Make VERSION macros agree with soname version
We have two distinct "library version" numbers: the soname version and
the version macros. We need both for different reasons: the version
macros enable easy compile-time version detection (and conditional
compilation), while the soname version enables runtime version
detection (which includes the version checking done by things like the
Python bindings).
However, currently, these two version numbers are different, which is
unnecessary and can lead to confusion (especially in things like
Debian, which include the soname version in the package name). This
patch makes them the same by bumping the version macros up to agree
with the soname version.
(We should probably keep the version number in just one place so they
can't get out of sync, but that can be done in another patch.)
David Bremner [Wed, 27 Nov 2013 15:35:46 +0000 (11:35 -0400)]
test/crypto: disable gpg version printing
This was causing test failures because version strings varied in
length between GNU/Linux and GNU/KFreeBSD. One can also imagine
different versions of gnupg causing the same failure.
David Bremner [Sun, 24 Nov 2013 21:29:42 +0000 (17:29 -0400)]
lib: fix byte order test in libsha1.c
Previously PLATFORM_BYTE_ORDER and IS_LITTLE_ENDIAN were not defined,
so the little endian code was always compiled in.
This will have the effect that the "SHA1s" on big endian architectures
will change (i.e. become actual sha1s). So someone re-indexing their
database could conceivable lose tags on messages without a message-id
header.
David Bremner [Sun, 24 Nov 2013 22:51:37 +0000 (18:51 -0400)]
debian: disable gdb as a build-dependency on s390x
Gdb is currently broken on s390x buildd's and porterboxes (see #728705).
By removing it as a build-dep, we disable the (failing) atomicity test on this
architecture
David Bremner [Sat, 23 Nov 2013 11:01:16 +0000 (07:01 -0400)]
test: replace $PWD with YYY in emacs & emacs-show tests
When executed command line is written to *Notmuch errors* buffer,
shell-quote-argument will backslash-escape any char that is not in
"POSIX filename characters" (i.e. matching "[^-0-9a-zA-Z_./\n]").
Currently in two emacs tests shell has expanded $PWD as part of
emacs variable, which will later be fed to #'shell-quote-argument
and finally written to ERROR file. If $PWD contained non-POSIX
filename characters, data in ERROR file will not match $PWD when
later comparing in shell. Therefore, in these two particular cases
the escaped $PWD is replaced with YYY in ERROR file and expected
content is adjusted accordingly.
Mark Walters [Mon, 18 Nov 2013 21:10:33 +0000 (21:10 +0000)]
emacs: show: stop stderr appearing in buffer
In emacs 24.3+ the stdout/stderr from externally displaying an
attachment gets inserted into the show buffer. This is caused by
changes in mm-display-external in mm-decode.el.
Ideally, we would put this output in the notmuch errors buffer but the
handler is called asynchronously so we don't know when the output will
appear. Thus if we put it straight into the errors buffer it could get
interleaved with other errors. Also we can't easily tell when we
have got all the error output so can't wait until the process is complete.
One solution would be to create a new buffer for the stderr of each
attachment viewed. Again, since we can't tell when the process has
finished, we can't close these buffers automatically so this will
leave lots of buffers around.
Thus we add a debug variable notmuch-show-attachment-debug: it this is
non-nil we create a new buffer for each viewer; if this variable is
nil we just use a temp buffer which means all error output is
discarded (this is the same behaviour as with emacs pre 24.3).