This is a sanity check on a bug I stumbled upon while writing unit tests for error handling in the library.
The attached test script (meant to be run from within the test subdir of a built source tree) demonstrates trying (and failing) to index a relative path. Am I missing something here, or does _notmuch_message_file_open_ctx (or something that calls it) need to check for absolute paths and prepend the mail root if not? I'm just a bit surprised that no-one hit this before.
#!/usr/bin/env bash test_description="notmuch_database_* API" . $(dirname "$0")/test-lib.sh || exit 1 add_email_corpus test_begin_subtest "building database" test_expect_success "NOTMUCH_NEW" cat <<EOF > c_head #include <stdio.h> #include <notmuch.h> #include <notmuch-test.h> #include <talloc.h> int main (int argc, char** argv) { notmuch_database_t *db; notmuch_status_t stat; char *msg = NULL; stat = notmuch_database_open_verbose (argv[1], NOTMUCH_DATABASE_MODE_READ_WRITE, &db, &msg); if (stat != NOTMUCH_STATUS_SUCCESS) { fprintf (stderr, "error opening database: %d %s\n", stat, msg ? msg : ""); exit (1); } EOF cat <<'EOF' > c_tail if (stat) { const char *stat_str = notmuch_database_status_string (db); if (stat_str) fputs (stat_str, stderr); } } EOF generate_message '[filename]=relative_path' test_subtest_known_broken test_begin_subtest "index file (relative path)" cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} { notmuch_message_t *msg; stat = notmuch_database_index_file (db, "relative_path", NULL, &msg); printf ("%d\n", stat == NOTMUCH_STATUS_SUCCESS); } EOF cat <<EOF > EXPECTED == stdout == 1 == stderr == EOF test_expect_equal_file EXPECTED OUTPUT test_done
_______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org