+test_expect_success 'Dumping all tags' \
+ 'generate_message &&
+ notmuch new &&
+ notmuch dump > dump.expected'
+
+test_expect_success 'Clearing all tags' \
+ 'sed -e "s/(\([^(]*\))$/()/" < dump.expected > clear.expected &&
+ notmuch restore clear.expected &&
+ notmuch dump > clear.actual &&
+ test_cmp clear.expected clear.actual'
+
+test_expect_success 'Restoring original tags' \
+ 'notmuch restore 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'
+
+# notmuch restore currently only considers the first argument.
+test_subtest_known_broken
+test_expect_success 'Invalid restore invocation' \
+ 'test_must_fail notmuch restore dump.expected another_one'