Commit graph

834 commits

Author SHA1 Message Date
Gregor Hoffleit
08deef5f75 First tests for JSON output and UTF-8 in mail body and subject
The test suite doesn't yet cover --format=json output nor UTF-8 in
subject or body.

This patch starts with test cases for 'search --format=json' and
'show --format=json'.

Furthermore, it has test cases for a search for a UTF-8 string in a mail
body for a UTF-8 string in a mail subject.

Finally, it has a test case for --format=json with UTF-8 messages,
demonstrating the fix in 1267697893-sup-4538@sam.mediasupervision.de.

Reviewed-by: Carl Worth <cworth@cworth.org>
Updated tests to current implementation of the test suite.
These tests demonstrate a bug in the current implementation
of "notmuch show --format=json", (timestamp output is changed
depending on current timezone).
2010-04-22 17:10:23 -07:00
Carl Worth
e31aa92a4c test: Make existing "notmuch show" test more resilient
If future updates to the test suite add more messages to the database
before this "notmuch show" test, then the message-ID numbers in the
expected output will all change. But we can at least compute the
numbers so that this test will continue to pass.
2010-04-22 17:08:08 -07:00
Carl Worth
5106df9f6b test: Add a test to demonstrate message-sorting regression.
In the recent change to rename threads based on changing subject
lines, I broke message ordering within "notmuch show" output. But our
test suite didn't catch that regressions, because we didn't have any
tests of "notmuch show".

This adds one "notmuch show" test along with the thread-naming
tests. It's not a whole suite of "notmuch show" testing, but it does
catch this regression at least.
2010-04-22 13:26:37 -07:00
Carl Worth
01f03cf098 test: When a test fails, show diff only (save complete output to a file)
We're starting to get test output that's fairly long, so it's much
kinder to just show a diff rather than displaying the complete
expected and actual output. To allow the user to investigate things
after the fact, we save the expected and actual output to files named
test-${test_number}.expected and test-${test_number}.output .
2010-04-22 13:22:08 -07:00
Carl Worth
9a3d4a0f2a test: Improve grammar in test-message subjects.
Before codifying these in any expected test output, I'd like them to
at least resemble English.
2010-04-22 13:21:15 -07:00
Carl Worth
2a1a4f0551 test: Add tests for naming threads with changing subjects.
We recently added a feature to name threads based on the messages that
actually matched the search, (as opposed to simply the oldest or
newest message in the thread whether it matched or not). So add tests
for that, and (surprise, surprise!) the feature does not entirely
work.
2010-04-21 15:50:33 -07:00
Carl Worth
cddeaa59ab make test: Actually count and report on failures.
Hurrah---no more manual verification of that PASS column.

This means that "make test" can actually be a useful part of the
release process now, (since it will exit with non-zero status if there
are any failures).
2010-04-15 15:18:30 -07:00
Carl Worth
004ed3362f test: Unify all tests to use the pass_if_equal function.
Previously some tests (dump/restore) were doing ad-hoc verification of
values and their own printing of PASS/FAIL, etc. This made it
impossible to count test pass/fail rates in a single place.

The only reason these tests were written that way was because the old
execute_expecting function only worked if one could directly test the
stdout output of a notmuch command. The recent switch to pass_if_equal
means that all tests can use it.
2010-04-15 15:09:21 -07:00
Carl Worth
6d16e5c7a3 test: Align the PASS/FAIL column.
Just to make things a little more pleasant to look at.
2010-04-15 15:06:00 -07:00
Carl Worth
f0050f6dd2 test: Add a test for "notmuch search '*'"
This feature was added recently and should have gotten a new test at
the time.

As this test demonstrates, the code is broken, ("notmuch search '*'
returns bogus dates of the Unix epoch for any threads where the
term "and" does not appear in any messages).
2010-04-15 14:48:56 -07:00
Carl Worth
d49eef0a3f test: Use an older date for the generated messages.
Using a date in the current year makes the test suite fragile since
the search output will include a date of "January 05" for now, but
will start doing "2010-01-05" in the future.
2010-04-15 14:13:12 -07:00
Carl Worth
9c0ae2e73e test: Remove test-message filenames from generated messages
The filenames aren't predictable (including the current directory) nor
stable from one run to the next (including the PID). This makes it
hard to predict the output from a search command that returns such a
message (such as "*").

The original goal was simply to ensure that each generated message was
distinguishable somehow. So just use the message counter instead.
2010-04-15 14:13:12 -07:00
Carl Worth
3846c1d12c test: Disentangle execution of notmuch from the examination of the results.
The old execute_expecting function was doing far too much for its own
good.  One of the worst aspects of this was that it introduced
shell-quoting challengers where the caller could not easily control
the precise invocation of the command to be executed.

I personally couldn't find a way to test "notmuch search '*'" without
the shell expanding * against files in the current directory, or
having bogus quotation marks appearing in the search string,
(defeating the recognition of "*" as a special search term).

Hopefully this aspect of the test suite will be much easier to maintain now.
2010-04-15 14:13:12 -07:00
Carl Worth
f1776f8b51 test: Fix reply tests to track insignificant change in output.
The recent fix to properly decode encoded headers made the expected
output of "notmuch reply" differ by a single space, (previously, there
were two spaces before the References: value and now there is just
one).

Fix the test suite so that these are all noted as correct results
again.
2010-04-14 17:17:50 -07:00
James Westby
4a9b41f1da test: Add new tests for out-of-order messages.
These new tests demonstrate a bug as follows:

  Multiple messages are added to the database

  All of these message references a common parent

  The parent message does not exist in the databas

In this scenario, the messages will not be recognized as belonging to
the same thread. We consider this a bug, and the new tests treat this
as a failure.

Edited by Carl Worth <cworth@cworth.org>: Split these tests into their
own commit (before the fix of the bug). This lets me see the actual
failure in the test suite, before the fix is applied. Also fix the
alignment of new messages from test suite, (so that the PASS portions
all line up---which is important while we're still manually verifying
test-suite results).
2010-04-12 14:04:35 -07:00
Carl Worth
bf09c7d11e test: Fix phrase-search tests.
With some extra qutotation marks, we are now doing actual phrase
searches so these tests pass.
2010-03-31 13:31:09 -07:00
Carl Worth
70b7e659f6 test: Add some negative results for the phrase searches.
These results have all the same terms as the target phrase, but
not in the expected order. They are designed to ensure that we
actually test phrase searches.

And as it turns out, we're not currently quoting the search terms
properly, so the phrase-search tests now fail with this commit.
2010-03-31 13:31:09 -07:00
Carl Worth
9439b217c3 Switch from random to sequential thread identifiers.
The sequential identifiers have the advantage of being guaranteed to
be unique (until we overflow a 64-bit unsigned integer), and also take
up half as much space in the "notmuch search" output (16 columns
rather than 32).

This change also has the side effect of fixing a bug where notmuch
could block on /dev/random at startup (waiting for some entropy to
appear). This bug was hit hard by the test suite, (which could easily
exhaust the available entropy on common systems---resulting in large
delays of the test suite).
2010-02-09 11:14:11 -08:00
Carl Worth
ef8a74944c notmuch-test: Add basic tests for "notmuch dump" and "notmuch restore"
Our test-suite coverage keeps improving, (slowly).
2010-02-05 17:28:25 -08:00
Carl Worth
b918e04ee8 notmuch-test: Fix misalignment in output.
Clean output is just so much easier to read (and validate).
2010-02-05 17:27:22 -08:00
Carl Worth
a47bf6e7dc notmuch-test: Add test to verify that uuencoded data is not indexed.
As recently promised, no new features are being accepted to notmuch
without corresponding new tests for the test suite.
2010-02-05 10:33:11 -08:00
Carl Worth
bc79dc9d6c notmuch-test: Add several tests of "notmuch search"
These tests were surprisingly simple to write---not much code at all
and most of them worked the first time even with hand-prepared
versions of the expected output.
2010-02-05 10:33:06 -08:00
Carl Worth
5c938e51b2 notmuch-test: Add a new add_message function.
The previous generate_message function is what's needed when testing
"notmuch new". But after that, we never want to generate a message
without also adding it to the index. So create a new add_message
function with this convenience.
2010-02-04 17:34:48 -08:00
Carl Worth
9041c1389c notmuch-test: Test "notmuch reply" with a reply-to-munged mail
This is a test for the recently added feature where we detect that the
reply-to address already exists in the To: or Cc: header so will
already be replied to. In this case we want to include the From:
address in our reply, (where, otherwise we would use the Reply-To
address *instead* of the address in the From header).
2010-02-04 12:42:03 -08:00
Carl Worth
bcba87a3e2 notmuch-test: Test "notmuch reply" with multiple recipients
The feature tested here is that we reply to both the sender and to
others addresses on the To: line of the original message, but that we
don't reply to our own address.
2010-02-04 12:10:43 -08:00
Carl Worth
fbe595e3b9 notmuch-test: Add test for "notmuch reply" with a CC header.
A simple test to help round out the set of tested features.
2010-02-04 12:10:43 -08:00
Carl Worth
96134fc723 notmuch-test: Add "notmuch reply" test for reply-to support.
This is the standard support of reply-to, (replying to that address
rather than the from address). It has nothing to do with the proposed
feature for extra-clever handling of a mail from a mailing-list that
has munged the reply-to header.
2010-02-04 12:10:43 -08:00
Carl Worth
33f55e43e1 notmuch-test: Test "notmuch reply" from alternate address.
When reply to a message addresses to an address configured in the
other_email setting in the configuration file, the reply should use
that address in the From header. Test this.
2010-02-04 12:10:43 -08:00
Carl Worth
4e66b777cf notmuch-test: Add a basic test of "notmuch reply"
Simply ensuring that the reply template is formatted as expected.
2010-02-04 12:10:42 -08:00
Carl Worth
5a4532860c notmuch-test: Eliminate sleeps to speed up test suite run
We were sleeping merely to ensure that our updates to the mail store
would result in the mtime of the appropriate directories being
updated. We make the test suite run faster by not sleeping, but
instead explicitly updating the mtime of the directory to a future
time with touch.

We're careful to ensure that the time is not merely in the future
compared to the current time, but also later than any previous update
to the same directory mtime.
2010-02-04 12:10:42 -08:00
Carl Worth
a821ba5737 notmuch-test: Allow custom headers when generating messages
This provides the control that future tests will need, (for example,
adding a CC field to ensure proper handling with "notmuch reply",
etc.)
2010-02-04 08:44:05 -08:00
Carl Worth
0d67c52f4d notmuch-test: Use named-parameters for generate_message function
This makes the test suite bash-specific, but that's not much of
an issue for me, (if somebody else would prefer some other language
then they can rewrite the test suite and maintain it).

The advantage here is that we'll now be able to easily generate
custom messages for testing operations that depend on the message
content, (such as "notmuch reply", etc.).
2010-02-04 08:44:05 -08:00
Carl Worth
8d37b2f982 Add actual testing to notmuch-test
We verify that each command creates output exactly as expected (after
ignoring variable output such as the report of how long an operation
took).
2010-02-04 08:44:05 -08:00
Carl Worth
a2d919eb2f Add a very rough beginning of a test suite.
This notmuch-test script simply runs a few different notmuch operations,
(things that I found were useful while testing the rename-support code).

It's not useful as a test suite yet, since it doesn't actually check
the results of any operation, (the user of the suite has to know what
the results should be and must manually verify them. So there's no
integration with the build system yet, (no "make test" target).

But I didn't want to lose what I had so far, so here it is.
2010-01-24 07:36:39 +13:00