#!/usr/bin/env bash
test_description="locking"
-. ./test-lib.sh || exit 1
-
-if [ "${NOTMUCH_HAVE_XAPIAN_DB_RETRY_LOCK}" = "0" ]; then
- test_subtest_missing_external_prereq_["lock retry support"]=t
-fi
+. $(dirname "$0")/test-lib.sh || exit 1
add_email_corpus
test_begin_subtest "blocking open"
+if [ $NOTMUCH_HAVE_XAPIAN_DB_RETRY_LOCK -ne 1 ]; then
+ test_subtest_known_broken
+fi
test_C ${MAIL_DIR} <<'EOF'
-#include <unistd.h>
-#include <stdlib.h>
-#include <sys/wait.h>
#include <notmuch-test.h>
void
if (child == 0) {
notmuch_database_t *db2;
+ char* msg = NULL;
sleep (1);
- EXPECT0 (notmuch_database_open (path, NOTMUCH_DATABASE_MODE_READ_WRITE, &db2));
+
+ EXPECT0(notmuch_database_open_with_config (argv[1],
+ NOTMUCH_DATABASE_MODE_READ_WRITE,
+ "", NULL, &db2, &msg));
+ if (msg) fputs (msg, stderr);
+
taggit (db2, "child");
EXPECT0 (notmuch_database_close (db2));
} else {
notmuch_database_t *db;
+ char* msg = NULL;
- EXPECT0 (notmuch_database_open (path, NOTMUCH_DATABASE_MODE_READ_WRITE, &db));
+ EXPECT0(notmuch_database_open_with_config (argv[1],
+ NOTMUCH_DATABASE_MODE_READ_WRITE,
+ "", NULL, &db, &msg));
+ if (msg) fputs (msg, stderr);
taggit (db, "parent");
sleep (2);
EXPECT0 (notmuch_database_close (db));
parent
unread
EOF
+if [ $NOTMUCH_HAVE_XAPIAN_DB_RETRY_LOCK -ne 1 ]; then
+ test_subtest_known_broken
+fi
test_expect_equal_file EXPECTED OUTPUT
test_done