From 83298fa0f8e7717a260c1f88edd7bf545709562d Mon Sep 17 00:00:00 2001 From: David Bremner Date: Sat, 14 Mar 2015 09:50:55 +0100 Subject: [PATCH] test: add error reporting tests This first half of the tests is all that don't need to retrieve the the error string explicitly from the notmuch database structure. --- test/T560-lib-error.sh | 136 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100755 test/T560-lib-error.sh diff --git a/test/T560-lib-error.sh b/test/T560-lib-error.sh new file mode 100755 index 00000000..6f31aefd --- /dev/null +++ b/test/T560-lib-error.sh @@ -0,0 +1,136 @@ +#!/usr/bin/env bash +test_description="error reporting for library" + +. ./test-lib.sh + +backup_database () { + rm -rf notmuch-dir-backup + cp -pR ${MAIL_DIR}/.notmuch notmuch-dir-backup +} +restore_database () { + rm -rf ${MAIL_DIR}/.notmuch + cp -pR notmuch-dir-backup ${MAIL_DIR}/.notmuch +} + + +add_email_corpus + +test_expect_success "building database" "NOTMUCH_NEW" + +test_begin_subtest "Open null pointer" +test_C <<'EOF' +#include +#include +int main (int argc, char** argv) +{ + notmuch_database_t *db; + notmuch_status_t stat; + stat = notmuch_database_open (NULL, 0, 0); +} +EOF +cat <<'EOF' >EXPECTED +== stdout == +== stderr == +Error: Cannot open a database for a NULL path. +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Open nonexistent database" +test_C <<'EOF' +#include +#include +int main (int argc, char** argv) +{ + notmuch_database_t *db; + notmuch_status_t stat; + stat = notmuch_database_open ("/nonexistent/foo", 0, 0); +} +EOF +cat <<'EOF' >EXPECTED +== stdout == +== stderr == +Error opening database at /nonexistent/foo/.notmuch: No such file or directory +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "create NULL path" +test_C <<'EOF' +#include +#include +int main (int argc, char** argv) +{ + notmuch_status_t stat; + stat = notmuch_database_create (NULL, NULL); +} +EOF +cat <<'EOF' >EXPECTED +== stdout == +== stderr == +Error: Cannot create a database for a NULL path. +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Create database in non-existant directory" +test_C <<'EOF' +#include +#include +int main (int argc, char** argv) +{ + notmuch_database_t *db; + notmuch_status_t stat; + stat = notmuch_database_create ("/nonexistent/foo", &db); +} +EOF +cat <<'EOF' >EXPECTED +== stdout == +== stderr == +Error: Cannot create database at /nonexistent/foo: No such file or directory. +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "Write to read-only database" +test_C ${MAIL_DIR} <<'EOF' +#include +#include +int main (int argc, char** argv) +{ + notmuch_database_t *db; + notmuch_status_t stat; + stat = notmuch_database_open (argv[1], NOTMUCH_DATABASE_MODE_READ_ONLY, &db); + if (stat != NOTMUCH_STATUS_SUCCESS) { + fprintf (stderr, "error opening database: %d\n", stat); + } + stat = notmuch_database_add_message (db, "/dev/null", NULL); +} +EOF +cat <<'EOF' >EXPECTED +== stdout == +== stderr == +Cannot write to a read-only database. +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "compact, overwriting existing backup" +test_C ${MAIL_DIR} <<'EOF' +#include +#include +static void +status_cb (const char *msg, void *closure) +{ + printf ("%s\n", msg); +} +int main (int argc, char** argv) +{ + notmuch_database_t *db; + notmuch_status_t stat; + stat = notmuch_database_compact (argv[1], argv[1], status_cb, NULL); +} +EOF +cat <<'EOF' >EXPECTED +== stdout == +== stderr == +Path already exists: CWD/mail +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_done