const char *profile,
GKeyFile **key_file,
const char **database_path,
+ bool *split,
char **message)
{
notmuch_status_t status;
}
}
+ if (! *database_path) {
+ *database_path = _xdg_dir (ctx, "XDG_DATA_HOME", ".local/share", profile);
+ *split = true;
+ }
+
if (*database_path == NULL) {
*message = strdup ("Error: Cannot open a database for a NULL path.\n");
return NOTMUCH_STATUS_NULL_POINTER;
notmuch_database_t *notmuch = NULL;
char *message = NULL;
GKeyFile *key_file = NULL;
+ bool split = false;
_init_libs ();
goto DONE;
}
- if ((status = _choose_database_path (local, config_path, profile, &key_file, &database_path,
+ if ((status = _choose_database_path (local, config_path, profile,
+ &key_file, &database_path, &split,
&message)))
goto DONE;
_init_libs ();
if ((status = _choose_database_path (local, config_path, profile,
- &key_file, &database_path, &message)))
+ &key_file, &database_path, &split,
+ &message)))
goto DONE;
status = _db_dir_exists (database_path, &message);
unset DATABASE_PATH
}
-for config in traditional split symlink; do
- # start each set of tests with a known set of messages
+xdg_config () {
+ local dir
+ local profile=${1:-default}
+
+ if [[ $profile != default ]]; then
+ export NOTMUCH_PROFILE=$profile
+ fi
+
+ backup_config
+ DATABASE_PATH="${HOME}/.local/share/notmuch/${profile}"
+ rm -rf $DATABASE_PATH
+ mkdir -p $DATABASE_PATH
+
+ config_dir="${HOME}/.config/notmuch/${profile}"
+ mkdir -p ${config_dir}
+ CONFIG_PATH=$config_dir/config
+ mv ${NOTMUCH_CONFIG} $CONFIG_PATH
+ unset NOTMUCH_CONFIG
+
+ notmuch --config=${CONFIG_PATH} config set database.mail_root ${TMP_DIRECTORY}/mail
+ notmuch --config=${CONFIG_PATH} config set database.path
+}
+
+for config in traditional split XDG XDG+profile symlink; do
+ #start each set of tests with an known set of messages
add_email_corpus
case $config in
split_config
mv mail/.notmuch/xapian $DATABASE_PATH
;;
+ XDG)
+ xdg_config
+ mv mail/.notmuch/xapian $DATABASE_PATH
+ ;;
+ XDG+profile)
+ xdg_config ${RANDOM}
+ mv mail/.notmuch/xapian $DATABASE_PATH
+ ;;
symlink)
symlink_config
;;
cat <<'EOF' >EXPECTED
== stdout ==
== stderr ==
-Error: Cannot open a database for a NULL path.
+Error: Cannot open database at CWD/home/.local/share/notmuch/default: No such file or directory.
EOF
test_expect_equal_file EXPECTED OUTPUT
cat <<'EOF' >EXPECTED
== stdout ==
== stderr ==
-Error: Cannot open a database for a NULL path.
+Error: Cannot open database at CWD/home/.local/share/notmuch/default: No such file or directory.
EOF
test_expect_equal_file EXPECTED OUTPUT
== stdout ==
== stderr ==
error opening database
-Erroneous NULL pointer
-Error: Cannot open a database for a NULL path.
+Something went wrong trying to read or write a file
+Error: Cannot open database at CWD/home/.local/share/notmuch/default: No such file or directory.
EOF
test_expect_equal_file EXPECTED OUTPUT