mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-26 11:24:53 +01:00
953c3fa853
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).
108 lines
3.7 KiB
Bash
Executable file
108 lines
3.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
test_description="\"notmuch dump\" and \"notmuch restore\""
|
|
. ./test-lib.sh
|
|
|
|
add_email_corpus
|
|
|
|
test_expect_success 'Dumping all tags' \
|
|
'generate_message &&
|
|
notmuch new &&
|
|
notmuch dump > dump.expected'
|
|
|
|
# The use of from:cworth is rather arbitrary: it matches some of the
|
|
# email corpus' messages, but not all of them.
|
|
|
|
test_expect_success 'Dumping all tags II' \
|
|
'notmuch tag +ABC +DEF -- from:cworth &&
|
|
notmuch dump > dump-ABC_DEF.expected &&
|
|
! cmp dump.expected dump-ABC_DEF.expected'
|
|
|
|
test_expect_success 'Clearing all tags' \
|
|
'sed -e "s/(\([^(]*\))$/()/" < dump.expected > clear.expected &&
|
|
notmuch restore --input=clear.expected &&
|
|
notmuch dump > clear.actual &&
|
|
test_cmp clear.expected clear.actual'
|
|
|
|
test_expect_success 'Accumulate original tags' \
|
|
'notmuch tag +ABC +DEF -- from:cworth &&
|
|
notmuch restore --accumulate < dump.expected &&
|
|
notmuch dump > dump.actual &&
|
|
test_cmp dump-ABC_DEF.expected dump.actual'
|
|
|
|
test_expect_success 'Restoring original tags' \
|
|
'notmuch restore --input=dump.expected &&
|
|
notmuch dump > dump.actual &&
|
|
test_cmp dump.expected dump.actual'
|
|
|
|
test_expect_success 'Restore with nothing to do' \
|
|
'notmuch restore < dump.expected &&
|
|
notmuch dump > dump.actual &&
|
|
test_cmp dump.expected dump.actual'
|
|
|
|
test_expect_success 'Accumulate with existing tags' \
|
|
'notmuch restore --accumulate --input=dump.expected &&
|
|
notmuch dump > dump.actual &&
|
|
test_cmp dump.expected dump.actual'
|
|
|
|
test_expect_success 'Accumulate with no tags' \
|
|
'notmuch restore --accumulate < clear.expected &&
|
|
notmuch dump > dump.actual &&
|
|
test_cmp dump.expected dump.actual'
|
|
|
|
test_expect_success 'Accumulate with new tags' \
|
|
'notmuch restore --input=dump.expected &&
|
|
notmuch restore --accumulate --input=dump-ABC_DEF.expected &&
|
|
notmuch dump > OUTPUT.$test_count &&
|
|
notmuch restore --input=dump.expected &&
|
|
test_cmp dump-ABC_DEF.expected OUTPUT.$test_count'
|
|
|
|
# notmuch restore currently only considers the first argument.
|
|
test_expect_success 'Invalid restore invocation' \
|
|
'test_must_fail notmuch restore --input=dump.expected another_one'
|
|
|
|
test_begin_subtest "dump --output=outfile"
|
|
notmuch dump --output=dump-outfile.actual
|
|
test_expect_equal_file dump.expected dump-outfile.actual
|
|
|
|
test_begin_subtest "dump --output=outfile --"
|
|
notmuch dump --output=dump-1-arg-dash.actual --
|
|
test_expect_equal_file dump.expected dump-1-arg-dash.actual
|
|
|
|
# Note, we assume all messages from cworth have a message-id
|
|
# containing cworth.org
|
|
|
|
grep 'cworth[.]org' dump.expected > dump-cworth.expected
|
|
|
|
test_begin_subtest "dump -- from:cworth"
|
|
notmuch dump -- from:cworth > dump-dash-cworth.actual
|
|
test_expect_equal_file dump-cworth.expected dump-dash-cworth.actual
|
|
|
|
test_begin_subtest "dump --output=outfile from:cworth"
|
|
notmuch dump --output=dump-outfile-cworth.actual from:cworth
|
|
test_expect_equal_file dump-cworth.expected dump-outfile-cworth.actual
|
|
|
|
test_begin_subtest "dump --output=outfile -- from:cworth"
|
|
notmuch dump --output=dump-outfile-dash-inbox.actual -- from:cworth
|
|
test_expect_equal_file dump-cworth.expected dump-outfile-dash-inbox.actual
|
|
|
|
test_begin_subtest 'roundtripping random message-ids and tags'
|
|
test_subtest_known_broken
|
|
${TEST_DIRECTORY}/random-corpus --config-path=${NOTMUCH_CONFIG} \
|
|
--num-messages=10
|
|
|
|
notmuch dump| \
|
|
${TEST_DIRECTORY}/hex-xcode --direction=encode| \
|
|
sort > EXPECTED.$test_count
|
|
|
|
notmuch tag +this_tag_is_very_unlikely_to_be_random '*'
|
|
|
|
${TEST_DIRECTORY}/hex-xcode --direction=decode < EXPECTED.$test_count | \
|
|
notmuch restore 2>/dev/null
|
|
|
|
notmuch dump| \
|
|
${TEST_DIRECTORY}/hex-xcode --direction=encode| \
|
|
sort > OUTPUT.$test_count
|
|
|
|
test_expect_equal_file EXPECTED.$test_count OUTPUT.$test_count
|
|
|
|
test_done
|