* v2 look in MAILDIR for database
@ 2021-08-04 10:42 David Bremner
2021-08-04 10:42 ` [PATCH 1/7] test/expect_equal_file: whitespace cleanup David Bremner
` (6 more replies)
0 siblings, 7 replies; 11+ messages in thread
From: David Bremner @ 2021-08-04 10:42 UTC (permalink / raw)
To: notmuch
This replaces the series [1]. Changes since that series:
1) Use a more direct approach to mark tests as broken.
- The drops the first patch of [1].
- Fix the splitting of arguments to test_begin_subtest
2) Fix a whitespace error in notmuch.rst
3) Move the 'return' into the proper patch
With these changes, patches 1-4 could be split to their own series if
needed, and the last 3 would make sense for a point release.
[1]: id:20210802150922.3234616-1-david@tethera.net
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/7] test/expect_equal_file: whitespace cleanup
2021-08-04 10:42 v2 look in MAILDIR for database David Bremner
@ 2021-08-04 10:42 ` David Bremner
2021-08-22 2:44 ` David Bremner
2021-08-04 10:42 ` [PATCH 2/7] test: factor out test_diff_file_ David Bremner
` (5 subsequent siblings)
6 siblings, 1 reply; 11+ messages in thread
From: David Bremner @ 2021-08-04 10:42 UTC (permalink / raw)
To: notmuch; +Cc: David Bremner
No functional change, just reindent to Emacs defaults.
---
test/test-lib.sh | 42 +++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/test/test-lib.sh b/test/test-lib.sh
index 1dbc6f7f..1f696c44 100644
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -404,29 +404,29 @@ test_expect_equal () {
# Like test_expect_equal, but takes two filenames.
test_expect_equal_file () {
- local file1 file2 testname basename1 basename2
- exec 1>&6 2>&7 # Restore stdout and stderr
- if [ -z "$inside_subtest" ]; then
- error "bug in the test script: test_expect_equal_file without test_begin_subtest"
- fi
- inside_subtest=
- test "$#" = 2 ||
+ local file1 file2 testname basename1 basename2
+ exec 1>&6 2>&7 # Restore stdout and stderr
+ if [ -z "$inside_subtest" ]; then
+ error "bug in the test script: test_expect_equal_file without test_begin_subtest"
+ fi
+ inside_subtest=
+ test "$#" = 2 ||
error "bug in the test script: not 2 parameters to test_expect_equal_file"
- file1="$1"
- file2="$2"
- if ! test_skip "$test_subtest_name"
- then
- if diff -q "$file1" "$file2" >/dev/null ; then
- test_ok_
- else
- testname=$this_test.$test_count
- basename1=`basename "$file1"`
- basename2=`basename "$file2"`
- cp "$file1" "$testname.$basename1"
- cp "$file2" "$testname.$basename2"
- test_failure_ "$(diff -u "$testname.$basename1" "$testname.$basename2")"
- fi
+ file1="$1"
+ file2="$2"
+ if ! test_skip "$test_subtest_name"
+ then
+ if diff -q "$file1" "$file2" >/dev/null ; then
+ test_ok_
+ else
+ testname=$this_test.$test_count
+ basename1=`basename "$file1"`
+ basename2=`basename "$file2"`
+ cp "$file1" "$testname.$basename1"
+ cp "$file2" "$testname.$basename2"
+ test_failure_ "$(diff -u "$testname.$basename1" "$testname.$basename2")"
+ fi
fi
}
--
2.30.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/7] test: factor out test_diff_file_
2021-08-04 10:42 v2 look in MAILDIR for database David Bremner
2021-08-04 10:42 ` [PATCH 1/7] test/expect_equal_file: whitespace cleanup David Bremner
@ 2021-08-04 10:42 ` David Bremner
2021-08-04 10:42 ` [PATCH 3/7] test: add test_expect_equal_file_nonempty David Bremner
` (4 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: David Bremner @ 2021-08-04 10:42 UTC (permalink / raw)
To: notmuch; +Cc: David Bremner
A following commit will use this new function in a public test
function.
---
test/test-lib.sh | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/test/test-lib.sh b/test/test-lib.sh
index 1f696c44..6f4bb47f 100644
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -402,17 +402,8 @@ test_expect_equal () {
fi
}
-# Like test_expect_equal, but takes two filenames.
-test_expect_equal_file () {
+test_diff_file_ () {
local file1 file2 testname basename1 basename2
- exec 1>&6 2>&7 # Restore stdout and stderr
- if [ -z "$inside_subtest" ]; then
- error "bug in the test script: test_expect_equal_file without test_begin_subtest"
- fi
- inside_subtest=
- test "$#" = 2 ||
- error "bug in the test script: not 2 parameters to test_expect_equal_file"
-
file1="$1"
file2="$2"
if ! test_skip "$test_subtest_name"
@@ -430,6 +421,19 @@ test_expect_equal_file () {
fi
}
+# Like test_expect_equal, but takes two filenames.
+test_expect_equal_file () {
+ exec 1>&6 2>&7 # Restore stdout and stderr
+ if [ -z "$inside_subtest" ]; then
+ error "bug in the test script: test_expect_equal_file without test_begin_subtest"
+ fi
+ inside_subtest=
+ test "$#" = 2 ||
+ error "bug in the test script: not 2 parameters to test_expect_equal_file"
+
+ test_diff_file_ "$1" "$2"
+}
+
# Like test_expect_equal, but arguments are JSON expressions to be
# canonicalized before diff'ing. If an argument cannot be parsed, it
# is used unchanged so that there's something to diff against.
--
2.30.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/7] test: add test_expect_equal_file_nonempty
2021-08-04 10:42 v2 look in MAILDIR for database David Bremner
2021-08-04 10:42 ` [PATCH 1/7] test/expect_equal_file: whitespace cleanup David Bremner
2021-08-04 10:42 ` [PATCH 2/7] test: factor out test_diff_file_ David Bremner
@ 2021-08-04 10:42 ` David Bremner
2021-08-04 10:42 ` [PATCH 4/7] test/path-config: use test_expect_equal_file_nonempty David Bremner
` (3 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: David Bremner @ 2021-08-04 10:42 UTC (permalink / raw)
To: notmuch; +Cc: David Bremner
A common bug in tests is that the code used to generate the EXPECTED
file fails, generating no output. When the code generating the OUTPUT
file fails in the same way, the test passes, even though there is a
failure being hidden. Add a new test function that guards against
this.
---
test/test-lib.sh | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/test/test-lib.sh b/test/test-lib.sh
index 6f4bb47f..dc4962f5 100644
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -434,6 +434,26 @@ test_expect_equal_file () {
test_diff_file_ "$1" "$2"
}
+# Like test_expect_equal, but takes two filenames. Fails if either is empty
+test_expect_equal_file_nonempty () {
+ exec 1>&6 2>&7 # Restore stdout and stderr
+ if [ -z "$inside_subtest" ]; then
+ error "bug in the test script: test_expect_equal_file_nonempty without test_begin_subtest"
+ fi
+ inside_subtest=
+ test "$#" = 2 ||
+ error "bug in the test script: not 2 parameters to test_expect_equal_file_nonempty"
+
+ for file in "$1" "$2"; do
+ if [ ! -s "$file" ]; then
+ test_failure_ "Missing or zero length file: $file"
+ return $?
+ fi
+ done
+
+ test_diff_file_ "$1" "$2"
+}
+
# Like test_expect_equal, but arguments are JSON expressions to be
# canonicalized before diff'ing. If an argument cannot be parsed, it
# is used unchanged so that there's something to diff against.
--
2.30.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/7] test/path-config: use test_expect_equal_file_nonempty
2021-08-04 10:42 v2 look in MAILDIR for database David Bremner
` (2 preceding siblings ...)
2021-08-04 10:42 ` [PATCH 3/7] test: add test_expect_equal_file_nonempty David Bremner
@ 2021-08-04 10:42 ` David Bremner
2021-08-21 20:41 ` Tomi Ollila
2021-08-04 10:42 ` [PATCH 5/7] test: add known broken tests for finding database via MAILDIR David Bremner
` (2 subsequent siblings)
6 siblings, 1 reply; 11+ messages in thread
From: David Bremner @ 2021-08-04 10:42 UTC (permalink / raw)
To: notmuch; +Cc: David Bremner
This is more robust against crashes when the expected output is also
generated by notmuch. In the case where the expected output is
explicit, it seems like overkill.
---
test/T055-path-config.sh | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/test/T055-path-config.sh b/test/T055-path-config.sh
index bb3bf665..8271579f 100755
--- a/test/T055-path-config.sh
+++ b/test/T055-path-config.sh
@@ -141,13 +141,13 @@ EOF
notmuch tag -inbox '*'
notmuch restore < EXPECTED
notmuch dump > OUTPUT
- test_expect_equal_file EXPECTED OUTPUT
+ test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "reindex ($config)"
notmuch search --output=messages '*' > EXPECTED
notmuch reindex '*'
notmuch search --output=messages '*' > OUTPUT
- test_expect_equal_file EXPECTED OUTPUT
+ test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "use existing database ($config)"
output=$(notmuch new)
@@ -169,7 +169,7 @@ EOF
test_begin_subtest "Show a raw message ($config)"
add_message
notmuch show --format=raw id:$gen_msg_id > OUTPUT
- test_expect_equal_file $gen_msg_filename OUTPUT
+ test_expect_equal_file_nonempty $gen_msg_filename OUTPUT
rm -f $gen_msg_filename
test_begin_subtest "reply ($config)"
@@ -198,14 +198,13 @@ EOF
mkdir -p "$MAIL_DIR"/{cur,new,tmp}
notmuch insert < "$gen_msg_filename"
cur_msg_filename=$(notmuch search --output=files "subject:insert-subject")
- test_expect_equal_file "$cur_msg_filename" "$gen_msg_filename"
-
+ test_expect_equal_file_nonempty "$cur_msg_filename" "$gen_msg_filename"
test_begin_subtest "compact+search ($config)"
notmuch search --output=messages '*' | sort > EXPECTED
notmuch compact
notmuch search --output=messages '*' | sort > OUTPUT
- test_expect_equal_file EXPECTED OUTPUT
+ test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "upgrade backup ($config)"
features=$(xapian-metadata get $XAPIAN_PATH features | grep -v "^relative directory paths")
--
2.30.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/7] test: add known broken tests for finding database via MAILDIR
2021-08-04 10:42 v2 look in MAILDIR for database David Bremner
` (3 preceding siblings ...)
2021-08-04 10:42 ` [PATCH 4/7] test/path-config: use test_expect_equal_file_nonempty David Bremner
@ 2021-08-04 10:42 ` David Bremner
2021-08-04 10:42 ` [PATCH 6/7] lib/open: look in MAILDIR for database, as documented David Bremner
2021-08-04 10:42 ` [PATCH 7/7] doc: document database search algorithm David Bremner
6 siblings, 0 replies; 11+ messages in thread
From: David Bremner @ 2021-08-04 10:42 UTC (permalink / raw)
To: notmuch; +Cc: David Bremner
This highlights a bug reported by several users, including
Mohsin Kaleem [1].
The use of test_begin_subtest is because these tests pass even though
the database cannot be located.
[1]: id:87bl9lx864.fsf@kisara.moe
---
test/T055-path-config.sh | 47 +++++++++++++++++++++++++++++++++++-----
1 file changed, 41 insertions(+), 6 deletions(-)
diff --git a/test/T055-path-config.sh b/test/T055-path-config.sh
index 8271579f..4cec8f18 100755
--- a/test/T055-path-config.sh
+++ b/test/T055-path-config.sh
@@ -16,6 +16,7 @@ restore_config () {
unset DATABASE_PATH
unset NOTMUCH_PROFILE
unset XAPIAN_PATH
+ unset MAILDIR
rm -f "$HOME/mail"
cp notmuch-config-backup.${test_name} ${NOTMUCH_CONFIG}
}
@@ -55,6 +56,18 @@ home_mail_config () {
unset DATABASE_PATH
}
+maildir_env_config () {
+ local dir
+ backup_config
+ dir="${HOME}/env_points_here"
+ ln -s $MAIL_DIR $dir
+ export MAILDIR=$dir
+ notmuch config set database.path
+ notmuch config set database.mail_root
+ XAPIAN_PATH="${MAIL_DIR}/.notmuch/xapian"
+ unset DATABASE_PATH
+}
+
xdg_config () {
local dir
local profile=${1:-default}
@@ -79,7 +92,7 @@ xdg_config () {
notmuch --config=${CONFIG_PATH} config set database.path
}
-for config in traditional split XDG XDG+profile symlink home_mail; do
+for config in traditional split XDG XDG+profile symlink home_mail maildir_env; do
#start each set of tests with an known set of messages
add_email_corpus
@@ -106,13 +119,18 @@ for config in traditional split XDG XDG+profile symlink home_mail; do
home_mail)
home_mail_config
;;
+ maildir_env)
+ maildir_env_config
+ ;;
esac
test_begin_subtest "count ($config)"
+ [[ "$config" = maildir_env ]] && test_subtest_known_broken
output=$(notmuch count '*')
test_expect_equal "$output" '52'
test_begin_subtest "count+tag ($config)"
+ [[ "$config" = maildir_env ]] && test_subtest_known_broken
tag="tag${RANDOM}"
notmuch tag +$tag '*'
output=$(notmuch count tag:$tag)
@@ -120,6 +138,7 @@ for config in traditional split XDG XDG+profile symlink home_mail; do
test_expect_equal "$output" '52'
test_begin_subtest "address ($config)"
+ [[ "$config" = maildir_env ]] && test_subtest_known_broken
notmuch address --deduplicate=no --sort=newest-first --output=sender --output=recipients path:foo >OUTPUT
cat <<EOF >EXPECTED
Carl Worth <cworth@cworth.org>
@@ -128,6 +147,7 @@ EOF
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "dump ($config)"
+ [[ "$config" = maildir_env ]] && test_subtest_known_broken
notmuch dump is:attachment and is:signed | sort > OUTPUT
cat <<EOF > EXPECTED
#notmuch-dump batch-tag:3 config,properties,tags
@@ -137,6 +157,7 @@ EOF
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "dump + tag + restore ($config)"
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
notmuch dump '*' > EXPECTED
notmuch tag -inbox '*'
notmuch restore < EXPECTED
@@ -144,22 +165,26 @@ EOF
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "reindex ($config)"
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
notmuch search --output=messages '*' > EXPECTED
notmuch reindex '*'
notmuch search --output=messages '*' > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "use existing database ($config)"
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
output=$(notmuch new)
test_expect_equal "$output" 'No new mail.'
test_begin_subtest "create database ($config)"
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
rm -rf $DATABASE_PATH/{.notmuch,}/xapian
notmuch new
output=$(notmuch count '*')
test_expect_equal "$output" '52'
test_begin_subtest "detect new files ($config)"
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
generate_message
generate_message
notmuch new
@@ -167,12 +192,14 @@ EOF
test_expect_equal "$output" '54'
test_begin_subtest "Show a raw message ($config)"
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
add_message
notmuch show --format=raw id:$gen_msg_id > OUTPUT
test_expect_equal_file_nonempty $gen_msg_filename OUTPUT
rm -f $gen_msg_filename
test_begin_subtest "reply ($config)"
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
add_message '[from]="Sender <sender@example.com>"' \
[to]=test_suite@notmuchmail.org \
[subject]=notmuch-reply-test \
@@ -190,7 +217,9 @@ On Tue, 05 Jan 2010 15:43:56 -0000, Sender <sender@example.com> wrote:
> basic reply test
EOF
test_expect_equal_file EXPECTED OUTPUT
+
test_begin_subtest "insert+search ($config)"
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
generate_message \
"[subject]=\"insert-subject\"" \
"[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" \
@@ -201,12 +230,14 @@ EOF
test_expect_equal_file_nonempty "$cur_msg_filename" "$gen_msg_filename"
test_begin_subtest "compact+search ($config)"
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
notmuch search --output=messages '*' | sort > EXPECTED
notmuch compact
notmuch search --output=messages '*' | sort > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "upgrade backup ($config)"
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
features=$(xapian-metadata get $XAPIAN_PATH features | grep -v "^relative directory paths")
xapian-metadata set $XAPIAN_PATH features "$features"
output=$(notmuch new | grep Welcome)
@@ -240,6 +271,7 @@ EOF
test_expect_equal "${output}+${output2}" "${value}+"
test_begin_subtest "Set config value in database ($config)"
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
name=${RANDOM}
value=${RANDOM}
notmuch config set --database test${test_count}.${name} ${value}
@@ -249,11 +281,14 @@ EOF
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/" \
- -e "s,^database.mail_root=CWD/home/mail,database.mail_root=MAIL_DIR," \
- > OUTPUT
+ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
+ 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/" \
+ -e "s,^database.mail_root=CWD/home/mail,database.mail_root=MAIL_DIR," \
+ -e "s,^database.mail_root=CWD/home/env_points_here,database.mail_root=MAIL_DIR," \
+ > OUTPUT
cat <<EOF > EXPECTED
built_with.compact=true
built_with.field_processor=true
--
2.30.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 6/7] lib/open: look in MAILDIR for database, as documented.
2021-08-04 10:42 v2 look in MAILDIR for database David Bremner
` (4 preceding siblings ...)
2021-08-04 10:42 ` [PATCH 5/7] test: add known broken tests for finding database via MAILDIR David Bremner
@ 2021-08-04 10:42 ` David Bremner
2021-08-04 10:42 ` [PATCH 7/7] doc: document database search algorithm David Bremner
6 siblings, 0 replies; 11+ messages in thread
From: David Bremner @ 2021-08-04 10:42 UTC (permalink / raw)
To: notmuch; +Cc: David Bremner
This fixes the bug id:87bl9lx864.fsf@kisara.moe
---
lib/open.cc | 4 ++++
test/T055-path-config.sh | 16 ----------------
2 files changed, 4 insertions(+), 16 deletions(-)
diff --git a/lib/open.cc b/lib/open.cc
index 7b95c5b1..280ffee3 100644
--- a/lib/open.cc
+++ b/lib/open.cc
@@ -220,6 +220,10 @@ _choose_database_path (void *ctx,
}
}
+ if (! *database_path) {
+ *database_path = getenv ("MAILDIR");
+ }
+
if (! *database_path) {
notmuch_status_t status;
diff --git a/test/T055-path-config.sh b/test/T055-path-config.sh
index 4cec8f18..27dd209a 100755
--- a/test/T055-path-config.sh
+++ b/test/T055-path-config.sh
@@ -125,12 +125,10 @@ for config in traditional split XDG XDG+profile symlink home_mail maildir_env; d
esac
test_begin_subtest "count ($config)"
- [[ "$config" = maildir_env ]] && test_subtest_known_broken
output=$(notmuch count '*')
test_expect_equal "$output" '52'
test_begin_subtest "count+tag ($config)"
- [[ "$config" = maildir_env ]] && test_subtest_known_broken
tag="tag${RANDOM}"
notmuch tag +$tag '*'
output=$(notmuch count tag:$tag)
@@ -138,7 +136,6 @@ for config in traditional split XDG XDG+profile symlink home_mail maildir_env; d
test_expect_equal "$output" '52'
test_begin_subtest "address ($config)"
- [[ "$config" = maildir_env ]] && test_subtest_known_broken
notmuch address --deduplicate=no --sort=newest-first --output=sender --output=recipients path:foo >OUTPUT
cat <<EOF >EXPECTED
Carl Worth <cworth@cworth.org>
@@ -147,7 +144,6 @@ EOF
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "dump ($config)"
- [[ "$config" = maildir_env ]] && test_subtest_known_broken
notmuch dump is:attachment and is:signed | sort > OUTPUT
cat <<EOF > EXPECTED
#notmuch-dump batch-tag:3 config,properties,tags
@@ -157,7 +153,6 @@ EOF
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "dump + tag + restore ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
notmuch dump '*' > EXPECTED
notmuch tag -inbox '*'
notmuch restore < EXPECTED
@@ -165,26 +160,22 @@ EOF
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "reindex ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
notmuch search --output=messages '*' > EXPECTED
notmuch reindex '*'
notmuch search --output=messages '*' > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "use existing database ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
output=$(notmuch new)
test_expect_equal "$output" 'No new mail.'
test_begin_subtest "create database ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
rm -rf $DATABASE_PATH/{.notmuch,}/xapian
notmuch new
output=$(notmuch count '*')
test_expect_equal "$output" '52'
test_begin_subtest "detect new files ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
generate_message
generate_message
notmuch new
@@ -192,14 +183,12 @@ EOF
test_expect_equal "$output" '54'
test_begin_subtest "Show a raw message ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
add_message
notmuch show --format=raw id:$gen_msg_id > OUTPUT
test_expect_equal_file_nonempty $gen_msg_filename OUTPUT
rm -f $gen_msg_filename
test_begin_subtest "reply ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
add_message '[from]="Sender <sender@example.com>"' \
[to]=test_suite@notmuchmail.org \
[subject]=notmuch-reply-test \
@@ -219,7 +208,6 @@ EOF
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "insert+search ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
generate_message \
"[subject]=\"insert-subject\"" \
"[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" \
@@ -230,14 +218,12 @@ EOF
test_expect_equal_file_nonempty "$cur_msg_filename" "$gen_msg_filename"
test_begin_subtest "compact+search ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
notmuch search --output=messages '*' | sort > EXPECTED
notmuch compact
notmuch search --output=messages '*' | sort > OUTPUT
test_expect_equal_file_nonempty EXPECTED OUTPUT
test_begin_subtest "upgrade backup ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
features=$(xapian-metadata get $XAPIAN_PATH features | grep -v "^relative directory paths")
xapian-metadata set $XAPIAN_PATH features "$features"
output=$(notmuch new | grep Welcome)
@@ -271,7 +257,6 @@ EOF
test_expect_equal "${output}+${output2}" "${value}+"
test_begin_subtest "Set config value in database ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
name=${RANDOM}
value=${RANDOM}
notmuch config set --database test${test_count}.${name} ${value}
@@ -281,7 +266,6 @@ EOF
test_expect_equal "${output}+${output2}" "${value}+"
test_begin_subtest "Config list ($config)"
- [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
notmuch config list | notmuch_dir_sanitize | \
sed -e "s/^database.backup_dir=.*$/database.backup_dir/" \
-e "s/^database.hook_dir=.*$/database.hook_dir/" \
--
2.30.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 7/7] doc: document database search algorithm.
2021-08-04 10:42 v2 look in MAILDIR for database David Bremner
` (5 preceding siblings ...)
2021-08-04 10:42 ` [PATCH 6/7] lib/open: look in MAILDIR for database, as documented David Bremner
@ 2021-08-04 10:42 ` David Bremner
2021-08-21 15:03 ` David Bremner
6 siblings, 1 reply; 11+ messages in thread
From: David Bremner @ 2021-08-04 10:42 UTC (permalink / raw)
To: notmuch; +Cc: David Bremner
Essentially a translation of the function _choose_database_path for
human consumption. As a bonus, document environment variable
NOTMUCH_DATABASE
---
doc/man1/notmuch-config.rst | 21 ++++++++++++++++++++-
doc/man1/notmuch.rst | 5 +++++
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/doc/man1/notmuch-config.rst b/doc/man1/notmuch-config.rst
index 82fbb44c..07a9eaf0 100644
--- a/doc/man1/notmuch-config.rst
+++ b/doc/man1/notmuch-config.rst
@@ -60,7 +60,7 @@ paths are presumed relative to `$HOME` for items in section
sub-directory named ``.notmuch`` if **database.mail\_root**
is unset).
- Default: ``$MAILDIR`` variable if set, otherwise ``$HOME/mail``.
+ Default: see :ref:`database`
**database.mail_root**
The top-level directory where your mail currently exists and to
@@ -272,6 +272,25 @@ Notmuch configuration file search order:
by :envvar:`NOTMUCH_PROFILE` environment variable if set,
``$HOME/.notmuch-config`` otherwise.
+.. _database:
+
+DATABASE LOCATION
+-----------------
+
+Notmuch database search order:
+
+1. Directory specified by :envvar:`NOTMUCH_DATABASE` environment variable.
+
+2. Directory specified by config key ``database.path``.
+
+3. ``$XDG_DATA_HOME/notmuch/<profile>`` where ``<profile>``
+ is defined by :envvar:`NOTMUCH_PROFILE` environment variable if
+ set, ``$XDG_DATA_HOME/notmuch/default`` otherwise.
+
+4. Directory specified by :envvar:`MAILDIR` environment variable.
+
+5. ``$HOME/mail``
+
HOOKS
-----
diff --git a/doc/man1/notmuch.rst b/doc/man1/notmuch.rst
index 6bd1dc03..c6ee3036 100644
--- a/doc/man1/notmuch.rst
+++ b/doc/man1/notmuch.rst
@@ -164,6 +164,11 @@ of notmuch.
Specifies the location of the notmuch configuration file. See
:any:`notmuch-config(1)` for details.
+.. envvar:: NOTMUCH_DATABASE
+
+ Specifies the location of the notmuch database. See
+ :any:`notmuch-config(1)` for details.
+
.. envvar:: NOTMUCH_PROFILE
Selects among notmuch configurations. See :any:`notmuch-config(1)`
--
2.30.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 7/7] doc: document database search algorithm.
2021-08-04 10:42 ` [PATCH 7/7] doc: document database search algorithm David Bremner
@ 2021-08-21 15:03 ` David Bremner
0 siblings, 0 replies; 11+ messages in thread
From: David Bremner @ 2021-08-21 15:03 UTC (permalink / raw)
To: notmuch
David Bremner <david@tethera.net> writes:
> Essentially a translation of the function _choose_database_path for
> human consumption. As a bonus, document environment variable
> NOTMUCH_DATABASE
applied to master
d
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 4/7] test/path-config: use test_expect_equal_file_nonempty
2021-08-04 10:42 ` [PATCH 4/7] test/path-config: use test_expect_equal_file_nonempty David Bremner
@ 2021-08-21 20:41 ` Tomi Ollila
0 siblings, 0 replies; 11+ messages in thread
From: Tomi Ollila @ 2021-08-21 20:41 UTC (permalink / raw)
To: David Bremner
On Wed, Aug 04 2021, David Bremner wrote:
> This is more robust against crashes when the expected output is also
> generated by notmuch. In the case where the expected output is
> explicit, it seems like overkill.
1,2,3 and 4 in this series look good to me
Tomi (on mobile device)
> ---
> test/T055-path-config.sh | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/test/T055-path-config.sh b/test/T055-path-config.sh
> index bb3bf665..8271579f 100755
> --- a/test/T055-path-config.sh
> +++ b/test/T055-path-config.sh
> @@ -141,13 +141,13 @@ EOF
> notmuch tag -inbox '*'
> notmuch restore < EXPECTED
> notmuch dump > OUTPUT
> - test_expect_equal_file EXPECTED OUTPUT
> + test_expect_equal_file_nonempty EXPECTED OUTPUT
>
> test_begin_subtest "reindex ($config)"
> notmuch search --output=messages '*' > EXPECTED
> notmuch reindex '*'
> notmuch search --output=messages '*' > OUTPUT
> - test_expect_equal_file EXPECTED OUTPUT
> + test_expect_equal_file_nonempty EXPECTED OUTPUT
>
> test_begin_subtest "use existing database ($config)"
> output=$(notmuch new)
> @@ -169,7 +169,7 @@ EOF
> test_begin_subtest "Show a raw message ($config)"
> add_message
> notmuch show --format=raw id:$gen_msg_id > OUTPUT
> - test_expect_equal_file $gen_msg_filename OUTPUT
> + test_expect_equal_file_nonempty $gen_msg_filename OUTPUT
> rm -f $gen_msg_filename
>
> test_begin_subtest "reply ($config)"
> @@ -198,14 +198,13 @@ EOF
> mkdir -p "$MAIL_DIR"/{cur,new,tmp}
> notmuch insert < "$gen_msg_filename"
> cur_msg_filename=$(notmuch search --output=files "subject:insert-subject")
> - test_expect_equal_file "$cur_msg_filename" "$gen_msg_filename"
> -
> + test_expect_equal_file_nonempty "$cur_msg_filename" "$gen_msg_filename"
>
> test_begin_subtest "compact+search ($config)"
> notmuch search --output=messages '*' | sort > EXPECTED
> notmuch compact
> notmuch search --output=messages '*' | sort > OUTPUT
> - test_expect_equal_file EXPECTED OUTPUT
> + test_expect_equal_file_nonempty EXPECTED OUTPUT
>
> test_begin_subtest "upgrade backup ($config)"
> features=$(xapian-metadata get $XAPIAN_PATH features | grep -v "^relative directory paths")
> --
> 2.30.2
> _______________________________________________
> notmuch mailing list -- notmuch@notmuchmail.org
> To unsubscribe send an email to notmuch-leave@notmuchmail.org
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/7] test/expect_equal_file: whitespace cleanup
2021-08-04 10:42 ` [PATCH 1/7] test/expect_equal_file: whitespace cleanup David Bremner
@ 2021-08-22 2:44 ` David Bremner
0 siblings, 0 replies; 11+ messages in thread
From: David Bremner @ 2021-08-22 2:44 UTC (permalink / raw)
To: notmuch
David Bremner <david@tethera.net> writes:
> No functional change, just reindent to Emacs defaults.
All patches in this series are now applied to master
d
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2021-08-22 2:44 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-04 10:42 v2 look in MAILDIR for database David Bremner
2021-08-04 10:42 ` [PATCH 1/7] test/expect_equal_file: whitespace cleanup David Bremner
2021-08-22 2:44 ` David Bremner
2021-08-04 10:42 ` [PATCH 2/7] test: factor out test_diff_file_ David Bremner
2021-08-04 10:42 ` [PATCH 3/7] test: add test_expect_equal_file_nonempty David Bremner
2021-08-04 10:42 ` [PATCH 4/7] test/path-config: use test_expect_equal_file_nonempty David Bremner
2021-08-21 20:41 ` Tomi Ollila
2021-08-04 10:42 ` [PATCH 5/7] test: add known broken tests for finding database via MAILDIR David Bremner
2021-08-04 10:42 ` [PATCH 6/7] lib/open: look in MAILDIR for database, as documented David Bremner
2021-08-04 10:42 ` [PATCH 7/7] doc: document database search algorithm David Bremner
2021-08-21 15:03 ` David Bremner
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).