test: renamed test scripts to format T\d\d\d-name.sh All test scripts to be executed are now named as T\d\d\d-name.sh, numers in increments of 10. This eases adding new tests and developers to see which are test scripts that are executed by test suite and in which order.
dump/restore: Use Xapian queries for batch-tag format This switches the new batch-tag format away from using a home-grown hex-encoding scheme for message IDs in the dump to simply using Xapian queries with Xapian quoting syntax. This has a variety of advantages beyond presenting a cleaner and more consistent interface. Foremost is that it will dramatically simplify the quoting for batch tagging, which shares the same input format. While the hex-encoding is no better or worse for the simple ID queries used by dump/restore, it becomes onerous for general-purpose queries used in batch tagging. It also better handles strange cases like "id:foo and bar", since this is no longer syntactically valid.
notmuch-restore: handle empty input file, leading blank lines and comments. This patch corrects several undesirable behaviours: 1) Empty files were not detected, leading to buffer read overrun. 2) An initial blank line cause restore to silently abort 3) Initial comment line caused format detection to fail
test/dump-restore: new tests for empty files and leading comments/whitespace. Three of these are marked broken; the third is a regression test, since it passes by virtue of batch-tag being the default input format.
test/dump-restore: add test for warning/error messages We want to test both that error/warning messages are generated when they should be, and not generated when they should not be. This varies between restore and batch tagging.
test: second set of dump/restore --format=batch-tag tests These one need the completed functionality in notmuch-restore. Fairly exotic tags are tested, but no weird message id's. We test each possible input to autodetection, both explicit (with --format=auto) and implicit (without --format).
test: update dump-restore roundtripping test for batch-tag format Now we can actually round trip these crazy tags and and message ids. hex-xcode is no longer needed as it's built in.
test: add sanity check for dump --format=batch-tag. It's important this does not rely on restore, since it hasn't been written yet.
test: add broken roundtrip test We demonstrate the current notmuch restore parser being confused by message-id's and tags containing non alpha numeric characters (particularly space and parentheses are problematic because they are not escaped by notmuch dump). We save the files as hex escaped on disk so that terminal emulators will not get confused if the test fails (as we mostly expect it to do).
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.
test: add more informative titles to restore --accumulate tests Thanks to Ethan for the suggestion.
notmuch-restore: replace positional argument for input with option Since notmuch dump doesn't use positional arguments anymore, it seems better to be consistent.
notmuch-dump: remove deprecated positional argument for output file The syntax --output=filename is a smaller change than deleting the output argument completely, and conceivably useful e.g. when running notmuch under a debugger.
notmuch-restore: check for extra arguments. We consider it an error to pass more than one file to restore, since extra ones are ignored.
notmuch-restore: implement --accumulate option Modify command line argument handling to take a --accumulate flag. Test for extra arguments beyond the input file. The --accumulate switch causes the union of the existing and new tags to be applied, instead of replacing each message's tags as they are read in from the dump file. Based on a patch by Thomas Schwinge: id:"1317317857-29636-1-git-send-email-thomas@schwinge.name"
test/dump-restore: add tests for restore --accumulate Flesh out what ``notmuch restore --accumulate'' is supposed to do. Its tests are currently XFAILed; the functionality will be added in future patch(es). Based on a patch by Thomas Schwinge: id:"1317317811-29540-1-git-send-email-thomas@schwinge.name"
test/dump-restore: Fix quoting on grep Thanks to Thomas Schwinge for noticing yet another place where quoting matters. Since the shell translates \. to ., the regex passed to grep is too generous without the quotes. The use of [.] is the suggestion of Tomi Ollila.
test/dump-restore: expand test suite for dump-restore, make more robust Several new tests are added, and existing use of test_begin_subtest is replaced by test_expect_success to catch failing commands in cases where we execute more than one command. Based on changes in id:"1317317811-29540-1-git-send-email-thomas@schwinge.name"
notmuch-dump: deprecate use of output file argument. We print an intentionally non-specific message on stderr, since it isn't clear if there will be some global output file argument to replace. We update the test suite atomically, since it relies on having the same text in two files.
notmuch-dump: treat any remaining arguments after the filename as search terms The main motivation here is allow the fast dumping of tag data for messages having certain tags. In practice it seems too slow to pipe dump to grep. All dump-restore tests should be working now, so we update test/dump-restore accordingly