aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
Commit message (Collapse)AuthorAge
* test: Emit a friendly error message if run with bash < 4.0.Gravatar Carl Worth2010-10-28
| | | | | | | | | | The bash code in the test suite is using associative arrays which were only added to bash as of release 4.0. If the test suite is run with an older bash, we now immediately error out and explain the situation, (instead of emitting confusing error messages and failing dozens of tests, which is what happened before this change).
* test: Avoid using unreliable, hard-coded thread ID values in test suite.Gravatar Carl Worth2010-10-28
| | | | | | | | | | Some recently-added tests used hard-coded thread ID values in search specifications. This is unreliable since the thread IDs depend on the order in which "notmuch new" encounters new files, (which in turn can depend on inode ordering within the filesystem). Fix these by using the new "notmuch search --output=threads" to find the correct thread IDs given a hard-coded (but reliable) message ID.
* test: Add test for reply functionality within emacs.Gravatar Carl Worth2010-10-27
| | | | | | The reply is primarily taken care of by "notmuch reply" which is already thoroughly tested. But a recent bug is inserting a duplicate From header in the emacs-based reply. So exercise that bug here.
* test: Update tests with removal of bcc from replyGravatar Jameson Rollins2010-10-27
| | | | | | | | Update the tests so that they no longer expect the Bcc header in the output of "notmuch reply" now that it has been removed. Edited-by Carl Worth: Simply applying the change to our newly modularized test suite.
* test: Add test for fully-roundtripped FCCGravatar Carl Worth2010-10-27
| | | | | | We test that the message we sent via (fake) SMTP is included in the mail index after a "notmuch new". This verifies that the FCC setting indeed successfully saved the sent message within the notmuch mail store.
* test: Use an explicit date in the message sent via (fake) SMTPGravatar Carl Worth2010-10-27
| | | | | | Simply setting an explicit date is cleaner than letting the current, (arbitrary), date get generated for the email message and then constantly filtering that date out of search results.
* emacs: Explicitly set the From address when composing a new message.Gravatar Carl Worth2010-10-27
| | | | | Previously, underlying emacs code was setting this header. Now, we do the right thing and query the notmuch configuration for the default value here.
* emacs: Enable FCC (to a directory named "sent") by default.Gravatar Carl Worth2010-10-27
| | | | | | Now that the FCC code is fixed to use the notmuch database path, we can actually enable this by default, which should be highly useful for all new users of notmuch.
* TODO: Note idea for a new "notmuch compose"Gravatar Carl Worth2010-10-27
| | | | | | Which would also allow the recently added test of sending an email message with the emacs interface to be a little more honest about the From address.
* test: Add test that emacs interface actually sends mail.Gravatar Carl Worth2010-10-27
| | | | | | | | | Rather than *reall* sending mail here, we instead have a new test program, smtp-dummy which implements (a small piece of) the server-side SMTP protocol and saves a mail message to the filename provided. This gives us reasonable test coverage of a large chunk of the notmuch+emacs code base (down to talking to an SMTP server with the final mail contents).
* test: Set alternate HOME during tests.Gravatar Carl Worth2010-10-27
| | | | | | We set the HOME environment variable to the test directory to avoid the tests relying on any configuration files from the test author's own home directory, (such as ${HOME}/.emacs or similar).
* test: Fix false failure from the "available tests" test.Gravatar Carl Worth2010-10-22
| | | | | We recently added a new sub-directory below test, so we have to blacklist it explicitly in this test.
* emacs: Fix quoting of Message-Id to fix test case of Id containing ".."Gravatar Carl Worth2010-10-22
| | | | | | If Xapian sees unquoted ".." as in id:123..456 then it thinks that's a range specification. We avoid this problem by instead passing id:"123..456" to Xapian.
* test: Add test demonstrating failure in emacs interface when Message-Id has ..Gravatar Carl Worth2010-10-22
| | | | | Thanks to Jameson Rollins for pointing out this bug (id:87y6g7zr6q.fsf@servo.finestructure.net).
* test: Add tests for adding/removing tags within emacs interfaceGravatar Carl Worth2010-10-22
| | | | Exercising both the notmuch-search and notmuch-show views.
* test: Add simple tests for navigating notmuch-hello and notmuch-search viewsGravatar Carl Worth2010-10-22
| | | | | | | | | | | | | | | | | We simulate the act of selecting the "inbox" saved search from notmuch-hello and the act of selecting a desired thread from the notmuch-search results. The test for the navigation of notmuch-hello is currently marked as BROKEN since its output is in the opposite order compared to the '(notmuch-search "tag:inbox")' test. This question of ordering is a currently open issue on the notmuch mailing list, so we'll let the test suite reflect that for now. Finally, this commit also abstracts some common emacs lisp code, (waiting for the current buffer's process to complete), into a new notmuch-test-wait function that is made available to anything calling test_emacs.
* test: Add a new test_expect_equal_failureGravatar Carl Worth2010-10-22
| | | | | Which allows us to have a known-broken test that would otherwise use test_expect_equal.
* test: Add tests for emacs notmuch-search and notmuch-show functions.Gravatar Carl Worth2010-10-22
| | | | | Moving the expected output into individual files (rather than inline) to keep the test script much easier to read.
* emacs: Remove the joke from the first line of the notmuch-hello view.Gravatar Carl Worth2010-10-22
| | | | Overuse just makes the joke unfunny.
* test: Add the most rudimentary testing of the emacs interface.Gravatar Carl Worth2010-10-22
| | | | | | So far, this is doing nothing more than adding a corpus of email and ensuring that the `notmuch-hello' function produces the desired output.
* test: Add a new test_emacs function to test-lib.shGravatar Carl Worth2010-10-22
| | | | | | | | This should be quite handy for doing automated testing of the emacs-based functionality in notmuch. This function invokes emacs with the necessary command-line arguments, (to run in batch mode with no local initialization, to load the notmuch code from the source directory, and to ensure an 80-column width).
* test: Fix add_email_corpus function to be quiet.Gravatar Carl Worth2010-10-22
| | | | This simply avoids some unneeded noise in the "make test" output.
* test/README: Document add_email_corpus (and add_message/generate_message)Gravatar Carl Worth2010-09-20
| | | | | | While adding the documentation here for add_email_corpus I noticed that the other email-adding functions in test-lib.sh were not yet documented here, so add all of that documentation.
* test: Fix the search and dump-restore tests to operator on non-empty mail store.Gravatar Carl Worth2010-09-20
| | | | | We do this with a new add_email_corpus function that establishes a mail store with 50 messages from the notmuch mailing list.
* test: Add a corpus of email messages to be used in testing.Gravatar Carl Worth2010-09-20
| | | | | This is simply 50 messages from the early history of the notmuch mailing list, (fetched from the public archives).
* test: Remove useless NOTMUCH variable (in favor of simply "notmuch")Gravatar Carl Worth2010-09-20
| | | | | | | | | | When the NOTMUCH variable was originally invented it was used as an explicit path to the notmuch binary being tested. Today, the test suite sets the PATH variable instead, so the NOTMUCH variable always has a value of simply "notmuch". We simplifying that by using the constant value rather than the continual variable reference.
* test: Remove some dead code in test-lib.shGravatar Carl Worth2010-09-20
| | | | | These assignements weren't being used at all and were just confusing me, (the real assignments happen later on in the file).
* test: Fix PATH-checking test to work with --valgrindGravatar Carl Worth2010-09-20
| | | | | The --valgrind option munges the PATH variable, so un-munge it before testing that we have PATH pointing to the source directory.
* test: Fix to actually report errors (!).Gravatar Carl Worth2010-09-20
| | | | | | A bug in the results-aggregation code was causing the test suite to report "all tests passed" even when there were failures, (as long as there were also no "broken" tests). Fix this.
* test: Avoid printing "Testing Testing ..."Gravatar Carl Worth2010-09-20
| | | | The test suite isn't auditioning for a roadie position, after all.
* test: Print section names, and rename all test sectionsGravatar Carl Worth2010-09-20
| | | | | | | | Now that we can usefully pass section names via the NOTMUCH_SKIP_TESTS environment variable, it's useful to actually print those names out for the user. Then, since we're now printing these names, let's use nicer names, (not excessively long but also not using abbreviations like "msg").
* test: Make the --valgrind option useful, (and drop --verbose).Gravatar Carl Worth2010-09-20
| | | | | | | | | In order for --valgrind to be useful, we drop noisy additional output of all of the commands being executed in verbose mode. This makes --verbose alone quite useless, so we don't document it any more. Also, add a zlib valgrind suppression that was showing up frequently in the test suite.
* test/README: Update to become notmuch-specific rather than git-specificGravatar Carl Worth2010-09-20
| | | | | | This file was obviously describing the git test suite previously, and would have been very hard to understand in the context of the notmuch test suite. HOpefully it's easier to follow now.
* test: Rename GIT_SKIP_TESTS to NOTMUCH_SKIP_TESTSGravatar Carl Worth2010-09-20
| | | | | | | | | By scanning test-lib.sh for occurrences of "git" or "GIT", I found that most of those are internal things, (like the GIT_TEST_TEE_STARTED variable). But GIT_SKIP_TESTS is part of the user-interface to the test suite, so we rename it to reference notmuch rather than git. Also, the GIT_TRACE warning is git-specific, so we drop that as well.
* test: Fix notmuch-test to pass command-line arguments to sub-scripts.Gravatar Carl Worth2010-09-20
| | | | The is useful for things like "notmuch-test --valgrind", etc.
* test: Fix test suite so that --valgrind option works.Gravatar Carl Worth2010-09-20
| | | | | The output is ugly, and we need a better suppressions file, but this is at least a start.
* test: Add test to ensure that all available test scripts are runGravatar Carl Worth2010-09-20
| | | | | | Since we are now using an explicit list of tests to run in notmuch-test we need to be careful that we don't add a new file of tests and then forget to add it to the list.
* test: Rename all tests to get rid of the ugly numbers in file names.Gravatar Carl Worth2010-09-17
| | | | | | | The numbers were meaningless, and they made it hard to find a file of interest. Instead, we get the ordering we want by adding an explicit list of tests to run to the notmuch-test script.
* test: Remove basic testing of broken, fixed, and skipped tests.Gravatar Carl Worth2010-09-17
| | | | | | | | | | | | | These were interfering with the aggregate statistics reported at the end of the test-suite run. (Always reporting 1 broken, 1 fixed, and 1 skipped). The correct way to test the test-suite itself would be to run the test suite externally for these cases, capture the expected result, and then report that as a PASS test. But, really, there's almost no value in these tests anyway. It's almost to the level of testing that 'if false; exit 1; fi' returns 1. That is, there are so many ways that the test suite could be broken internally, that these minor tests don't really help.
* test: Fix ordering of tests in t0000-basic.shGravatar Carl Worth2010-09-17
| | | | | The basic notmuch tests depend on the test-suite harness working, so test it first.
* test: Rework test-suite input to avoid ulti-command stringsGravatar Carl Worth2010-09-17
| | | | | | | | | | | | | | The original git test suite works by concatenating many commands into a very long string (each separated by &&). This is painful to work with since it prevents the editor from helping by parsing the shell script, indenting, colorizing, etc. Instead, we switch this back to something like the original notmuch test suite, and add two new functions to test-lib.sh (test_begin_subtest and test_expect_equal) to support these. This also fixes the test suite to once again display the diff when a test fails to generate the expected input.
* test: Cleanup the test outputGravatar Carl Worth2010-09-17
| | | | | | | | | | | | | | | | This makes the new, git-derived test suite report results in a manner similar to the original notmuch test suite. Notable changes include: * No more initial '*' on every line * Only colorize a single word * Don't print useless test numbers * Use "PASS" in place of "ok" * Begin sentences with a capital letter * Print test descriptions for each block * Separate each block of tests with a blank line * Don't summarize counts between each block
* test: Fix test suite to integrate with our non-recursive Makefile system.Gravatar Carl Worth2010-09-17
| | | | | | | This avoids "make test" emitting messages from three (3!) recursive invocations of make. We change the invocations of the tests themselves to occur directly from the shell script rather than having the shell script invoke make again and using wildcards in the Makefile.
* test: Set all times to UTCGravatar Michal Sojka2010-09-16
| | | | | | | | In order to have repeatable test suite, all times in messages are set to UTC time zone to match the time zone (TZ variable) set in test-lib.sh. Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
* Convert the actual tests to the new frameworkGravatar Michal Sojka2010-09-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The changes are: - The notmuch-test was split into several files (t000?-*.sh). - Removed helper functions which were moved to test-lib.sh - Replaced every printf with test_expect_success. - Test commands chained with && (test-lib.sh doesn't use "set -e" in order to complete the test suite even if something fails) - Many variables such as ${MAIL_DIR} were properly quoted as they contain spaces. - Changed quoting patterns in add_message and generate_message (single quotes are already used by the test framework). - ${TEST_DIR} replaced by ${PWD} QUICK HOWTO: To run the whole test suite make To run only a single test ./t0001-new.sh To stop on the first error ./t0001-new.sh -i then mail store and database can be inspected in "trash directory.t0001-new" To see the output of tests ./t0001-new.sh -v To not remove trash directory at the end: ./t0001-new.sh -d To run all tests verbosely: make GIT_TEST_OPTS="-v" Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
* test: Update helper functionsGravatar Michal Sojka2010-09-16
| | | | | | | | | | Modify the helper functions to work with git-based test suite i.e. 1) Quote arguments where it is necessary. 2) Do not use $NOTMUCH. It is equal to "notmuch" since $PATH is set to the build tree. 3) Modify pass_if_equal to fit into the git-based test suite. Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
* Update test framework for use with notmuchGravatar Michal Sojka2010-09-16
| | | | | | | | This removes Git specific things from the test-lib.sh and adds helper functions for notmuch taken from Carl's notmuch-test script. README is also slightly modified to reflect the current state. Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
* Copy test framework from GitGravatar Michal Sojka2010-09-16
| | | | | | | | | | | Git uses a simple and yet powerful test framework, written in shell. The framework is easy to use for both users and developers so I think it would help if it is used in notmuch as well. This is a copy of Git's test framework from commit b6b0afdc30e066788592ca07c9a6c6936c68cc11 in git repository. Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
* Avoid giving GMime a NULL MIME-stream filter.Gravatar Carl Worth2010-06-05
| | | | | | | | | | | | | | | | | | | | Micah Anderson reported an issue where a message failed to display in the emacs interface, (it instead gave an error, "json-read-string: Bad string format"). Micah tracked this down to the json output from "notmuch show" being interrupted by a GMime error message: gmime-CRITICAL **: g_mime_stream_filter_add: assertion `GMIME_IS_FILTER (filter) I tracked this down further to notmuch passing a NULL value to g_mime_stream_filter_add. And this was due to calling g_mime_filter_charset_new with a value of "unknown-8bit". So we add a test message withe a Conten-Type of "text/plain; charset=unknown-8bit" from Micah's message. Then we fix "notmuch show" to test for NULL before calling g_mime_stream_filter_add. Bug fixed.
* Add support (and tests) for messages with really long message IDs.Gravatar Carl Worth2010-06-04
| | | | | | | | | | | | | | | | | | | | | | | Scott Henson reported an internal error that occurred when he tried to add a message that referenced another message with a message ID well over 300 characters in length. The bug here was running into a Xapian limit for the length of metadata key names, (which is even more restrictive than the Xapian limit for the length of terms). We fix this by noticing long message ID values and instead using a message ID of the form "notmuch-sha1-<sha1_sum_of_message_id>". That is, we use SHA1 to generate a compressed, (but still unique), version of the message ID. We add support to the test suite to exercise this fix. The tests add a message referencing the long message ID, then add the message with the long message ID, then finally add another message referencing the long ID. Each of these tests exercise different code paths where the special handling is implemented. A final test ensures that all three messages are stitched together into a single thread---guaranteeing that the three code paths all act consistently.