]> git.notmuchmail.org Git - notmuch/blobdiff - test/T560-lib-error.sh
lib: add NOTMUCH_STATUS_PATH_ERROR
[notmuch] / test / T560-lib-error.sh
index 67a5e8dfb6c6be9fc595fc286f2e5fc2152017dc..9f5f7aefeea2e2c6fd44abc28c5e7ca29031840c 100755 (executable)
@@ -35,7 +35,27 @@ Error: Cannot open a database for a NULL path.
 EOF
 test_expect_equal_file EXPECTED OUTPUT
 
-test_begin_subtest "Open nonexistent database"
+test_begin_subtest "Open relative path"
+test_subtest_known_broken
+test_C <<'EOF'
+#include <stdio.h>
+#include <notmuch.h>
+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: Database path must be absolute.
+EOF
+test_expect_equal_file EXPECTED OUTPUT
+
+test_begin_subtest "Create database in relative path"
+test_subtest_known_broken
 test_C <<'EOF'
 #include <stdio.h>
 #include <notmuch.h>
@@ -43,13 +63,31 @@ int main (int argc, char** argv)
 {
     notmuch_database_t *db;
     notmuch_status_t stat;
-    stat = notmuch_database_open ("/nonexistent/foo", 0, 0);
+    stat = notmuch_database_create ("./nonexistent/foo", &db);
+}
+EOF
+cat <<'EOF' >EXPECTED
+== stdout ==
+== stderr ==
+Error: Database path must be absolute.
+EOF
+test_expect_equal_file EXPECTED OUTPUT
+
+test_begin_subtest "Open nonexistent database"
+test_C ${PWD}/nonexistent/foo <<'EOF'
+#include <stdio.h>
+#include <notmuch.h>
+int main (int argc, char** argv)
+{
+    notmuch_database_t *db;
+    notmuch_status_t stat;
+    stat = notmuch_database_open (argv[1], 0, 0);
 }
 EOF
 cat <<'EOF' >EXPECTED
 == stdout ==
 == stderr ==
-Error opening database at /nonexistent/foo/.notmuch: No such file or directory
+Error opening database at CWD/nonexistent/foo/.notmuch: No such file or directory
 EOF
 test_expect_equal_file EXPECTED OUTPUT
 
@@ -78,13 +116,13 @@ int main (int argc, char** argv)
 {
     notmuch_database_t *db;
     notmuch_status_t stat;
-    stat = notmuch_database_create ("/nonexistent/foo", &db);
+    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.
+Error: Cannot create database at ./nonexistent/foo: No such file or directory.
 EOF
 test_expect_equal_file EXPECTED OUTPUT
 
@@ -125,16 +163,17 @@ int main (int argc, char** argv)
    if (stat != NOTMUCH_STATUS_SUCCESS) {
      fprintf (stderr, "error opening database: %d\n", stat);
    }
-   stat = notmuch_database_add_message (db, "/nonexistent", NULL);
-   if (stat)
-       fputs (notmuch_database_status_string (db), stderr);
-
+   stat = notmuch_database_add_message (db, "./nonexistent", NULL);
+   if (stat) {
+       char *status_string = notmuch_database_status_string (db);
+       if (status_string) fputs (status_string, stderr);
+   }
 }
 EOF
 cat <<'EOF' >EXPECTED
 == stdout ==
 == stderr ==
-Error opening /nonexistent: No such file or directory
+Error opening ./nonexistent: No such file or directory
 EOF
 test_expect_equal_file EXPECTED OUTPUT
 
@@ -201,7 +240,7 @@ test_begin_subtest "Xapian exception finding message"
 cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR}
    {
        notmuch_message_t *message = NULL;
-       stat = notmuch_database_find_message (db, "id:nonexistant", &message);
+       stat = notmuch_database_find_message (db, "id:nonexistent", &message);
    }
 EOF
 sed 's/^\(A Xapian exception [^:]*\):.*$/\1/' < OUTPUT > OUTPUT.clean