The code change is tiny, and transient, but the tests will serve as
regression tests the config file opening is moved into subcommands.
---
 notmuch.c                |  5 +++-
 test/T055-path-config.sh | 60 +++++++++++++++++++++++++++++++++++++++-
 2 files changed, 63 insertions(+), 2 deletions(-)

diff --git a/notmuch.c b/notmuch.c
index fa6b7eaa..b1dac8a7 100644
--- a/notmuch.c
+++ b/notmuch.c
@@ -443,7 +443,7 @@ main (int argc, char *argv[])
     int ret = EXIT_SUCCESS;
 
     notmuch_opt_desc_t options[] = {
-       { .opt_string = &config_file_name, .name = "config" },
+       { .opt_string = &config_file_name, .name = "config", .allow_empty=TRUE 
},
        { .opt_inherit = notmuch_shared_options },
        { }
     };
@@ -565,6 +565,9 @@ main (int argc, char *argv[])
     }
 
     if (command->mode & NOTMUCH_COMMAND_CONFIG_OPEN) {
+       if (! config_file_name)
+           config_file_name = notmuch_config_path (notmuch);
+
        config = notmuch_config_open (notmuch, config_file_name, command->mode);
        if (! config) {
            ret = EXIT_FAILURE;
diff --git a/test/T055-path-config.sh b/test/T055-path-config.sh
index 0a34e67f..535c41e9 100755
--- a/test/T055-path-config.sh
+++ b/test/T055-path-config.sh
@@ -215,7 +215,65 @@ EOF
 
    test_expect_equal_file EXPECTED OUTPUT
 
-    restore_config
+   test_begin_subtest "Set config value ($config)"
+   name=${RANDOM}
+   value=${RANDOM}
+   notmuch config set test${test_count}.${name} ${value}
+   output=$(notmuch config get test${test_count}.${name})
+   notmuch config set test${test_count}.${name}
+   output2=$(notmuch config get test${test_count}.${name})
+   test_expect_equal "${output}+${output2}" "${value}+"
+
+   test_begin_subtest "Set config value in database ($config)"
+   name=${RANDOM}
+   value=${RANDOM}
+   notmuch config set --database test${test_count}.${name} ${value}
+   output=$(notmuch config get test${test_count}.${name})
+   notmuch config set --database test${test_count}.${name}
+   output2=$(notmuch config get test${test_count}.${name})
+   test_expect_equal "${output}+${output2}" "${value}+"
+
+   test_begin_subtest "Config list ($config)"
+   notmuch config list | notmuch_dir_sanitize | sed -e 
"s/^database.backup_dir=.*$/database.backup_dir/"  \
+                                                   -e 
"s/^database.hook_dir=.*$/database.hook_dir/" \
+                                                   -e 
"s/^database.path=.*$/database.path/" > OUTPUT
+   cat <<EOF > EXPECTED
+built_with.compact=true
+built_with.field_processor=true
+built_with.retry_lock=true
+database.backup_dir
+database.hook_dir
+database.mail_root=MAIL_DIR
+database.path
+maildir.synchronize_flags=true
+new.ignore=
+new.tags=unread;inbox
+search.exclude_tags=
+user.name=Notmuch Test Suite
[email protected];[email protected]
[email protected]
+EOF
+   test_expect_equal_file EXPECTED OUTPUT
+
+   case $config in
+       XDG*)
+          test_begin_subtest "Set shadowed config value in database ($config)"
+          test_subtest_known_broken
+          name=${RANDOM}
+          value=${RANDOM}
+          key=test${test_count}.${name}
+          notmuch config set --database ${key}  ${value}
+          notmuch config set ${key} shadow${value}
+          output=$(notmuch --config='' config get ${key})
+          notmuch config set --database ${key}
+          output2=$(notmuch --config='' config get ${key})
+          notmuch config set ${key}
+          test_expect_equal "${output}+${output2}" "${value}+"
+          ;;
+   esac
+   restore_config
+   rm -rf home/.local
+   rm -rf home/.config
 done
 
 test_done
-- 
2.30.1
_______________________________________________
notmuch mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to