unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* 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	[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	[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	[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	[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	[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	[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	[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 inbox:

	notmuch.git.git (no URL configured)

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 NNTP newsgroup(s).