[PATCH 24/27] CLI/config: support set/get with split configuration

Subject: [PATCH 24/27] CLI/config: support set/get with split configuration

Date: Thu, 4 Mar 2021 09:01:36 -0400

To: notmuch@notmuchmail.org

Cc: David Bremner

From: David Bremner


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
+user.other_email=test_suite_other@notmuchmail.org;test_suite@otherdomain.org
+user.primary_email=test_suite@notmuchmail.org
+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 -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-leave@notmuchmail.org

Thread: