Re: [PATCH v4 4/5] test: support testing notmuch as installed

2023-07-22 Thread David Bremner
Tomi Ollila  writes:

>>  fi
>>  
>> +if [ -n "${LD_PRELOAD-}" ]; then
>
> Is it problem to chain LD_PRELOADs here ? I see later in this message
> there is LD_PRELOAD's concatenated with :'s (in case non-empty) ?
>

It is not a problem in general, but ASAN insists on being first in
LD_PRELOAD, so it's easier just to skip the tests for now.  I updated
the printed message to

printf "Skipping due to ASAN LD_PRELOAD restrictions\n"

Since I also could not remember why that was there :P.
___
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org


Re: [PATCH v4 4/5] test: support testing notmuch as installed

2023-07-22 Thread David Bremner
Tomi Ollila  writes:

>> -LD_PRELOAD=${LD_PRELOAD:+:$LD_PRELOAD}:./${shim_file} notmuch-shared 
>> "$@"
>> +LD_PRELOAD=${LD_PRELOAD:+:$LD_PRELOAD}:./${shim_file} $notmuch_cmd "$@"
>
> hmm, should the "chaining" be done on other order (i.e. the shim_file 
> before anything if there... (that could make the case where there is
> value in LD_PRELOAD to work (commented above))

That seems like an orthogonal change, and as it turns out I don't think
it would directly help with ASAN.

d
___
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-le...@notmuchmail.org


Re: [PATCH v4 4/5] test: support testing notmuch as installed

2023-07-11 Thread Tomi Ollila
On Sun, Jul 09 2023, David Bremner wrote:

Note: I almost commented cases where it was not ensured that variable
is defined, to notice later that those were actually defined for sure
-- so in some previous mails in this series I may have missed
same cases. 

The comments for this message may be more accurate ;D

Tomi

> We put some effort into testing the built copy rather than some
> installed copy. On the other hand for people like packagers, testing
> the installed copy is also of interest.
>
> When NOTMUCH_TEST_INSTALLED is set to a nonempty value, tests do not
> require a built notmuch tree or running configure.
>
> Some of the tests marked as broken when running against installed
> notmuch are probably fixable.
> ---
>  test/README| 17 +
>  test/T000-basic.sh |  1 +
>  test/T010-help-test.sh |  3 +++
>  test/T160-json.sh  |  2 ++
>  test/T240-dump-restore.sh  |  2 ++
>  test/T310-emacs.sh |  2 ++
>  test/T350-crypto.sh|  1 +
>  test/T355-smime.sh |  2 ++
>  test/T360-symbol-hiding.sh |  4 
>  test/T390-python.sh|  4 
>  test/T391-python-cffi.sh   |  4 
>  test/T395-ruby.sh  |  8 ++--
>  test/T410-argument-parsing.sh  |  4 
>  test/T480-hex-escaping.sh  |  4 
>  test/T490-parse-time-string.sh |  4 
>  test/T550-db-features.sh   |  4 
>  test/T566-lib-message.sh   |  4 
>  test/T592-thread-breakage.sh   |  4 
>  test/T710-message-id.sh|  4 
>  test/T800-asan.sh  |  5 +
>  test/T850-git.sh   |  6 ++
>  test/export-dirs.sh|  2 +-
>  test/notmuch-test  | 12 ++--
>  test/test-lib-common.sh| 13 ++---
>  test/test-lib-emacs.sh | 12 ++--
>  test/test-lib.sh   | 27 +--
>  26 files changed, 139 insertions(+), 16 deletions(-)
>
> diff --git a/test/README b/test/README
> index 10f127cb..a81808b1 100644
> --- a/test/README
> +++ b/test/README
> @@ -137,6 +137,23 @@ detection of missing prerequisites. In the future we may 
> treat tests
>  unable to run because of missing prerequisites, but not explicitly
>  skipped by the user, as failures.
>  
> +Testing installed notmuch
> +-
> +
> +Systems integrators (e.g. Linux distros) may wish to test an installed
> +version of notmuch.  This can be done be running
> +
> + $ NOTMUCH_TEST_INSTALLED=1 ./test/notmuch-test
> +
> +In this scenario the test suite does not assume a built tree, and in
> +particular cannot rely on the output of 'configure'. You may want to
> +set certain feature environment variables ('NOTMUCH_HAVE_*') directly
> +if you know those apply to your installed notmuch). Consider also
> +setting TERM=dumb if the value of TERM cannot be used (e.g. in a
> +chroot with missing terminfo). Note that having a built tree may cause
> +surprising/broken results for NOTMUCH_TEST_INSTALLED, so consider
> +cleaning first.
> +
>  Writing Tests
>  -
>  The test script is written as a shell script. It is to be named as
> diff --git a/test/T000-basic.sh b/test/T000-basic.sh
> index a2f4d93f..642f918d 100755
> --- a/test/T000-basic.sh
> +++ b/test/T000-basic.sh
> @@ -66,6 +66,7 @@ test_begin_subtest 'NOTMUCH_CONFIG is set and points to an 
> existing file'
>  test_expect_success 'test -f "${NOTMUCH_CONFIG}"'
>  
>  test_begin_subtest 'PATH is set to build directory'
> +test_subtest_broken_for_installed
>  test_expect_equal \
>  "$(dirname ${TEST_DIRECTORY})" \
>  "$(echo $PATH|cut -f1 -d: | sed -e 's,/test/valgrind/bin$,,')"
> diff --git a/test/T010-help-test.sh b/test/T010-help-test.sh
> index 1fbc46a2..827edc14 100755
> --- a/test/T010-help-test.sh
> +++ b/test/T010-help-test.sh
> @@ -19,6 +19,9 @@ if [ "${NOTMUCH_HAVE_MAN-0}" = "1" ]; then
>  test_begin_subtest 'notmuch help tag'
>  test_expect_success 'notmuch help tag'
>  else
> +if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
> + test_done
> +fi
>  test_begin_subtest 'notmuch --help tag (man pages not available)'
>  test_expect_success 'test_must_fail notmuch --help tag >/dev/null'
>  
> diff --git a/test/T160-json.sh b/test/T160-json.sh
> index f61c3f2d..318c9788 100755
> --- a/test/T160-json.sh
> +++ b/test/T160-json.sh
> @@ -65,6 +65,7 @@ test_expect_equal_json "$output" "[{\"thread\": \"XXX\",
>   \"tags\": [\"inbox\",
>   \"unread\"]}]"
>  
> +if [ -z "${NOTMUCH_TEST_INSTALLED-}" ]; then
>  test_begin_subtest "Search message: json, 64-bit timestamp"
>  if [ "${NOTMUCH_HAVE_64BIT_TIME_T-0}" != "1" ]; then
>  test_subtest_known_broken
> @@ -81,6 +82,7 @@ test_expect_equal_json "$output" "[{\"thread\": \"XXX\",
>   \"query\": [\"id:$gen_msg_id\", null],
>   \"tags\": [\"inbox\",
>   \"unread\"]}]"
> +fi # NOTMUCH_TEST_INSTALLED undefined / empty
>  
>  test_begin_subtest "Format version: too low"
>  test_expe

[PATCH v4 4/5] test: support testing notmuch as installed

2023-07-09 Thread David Bremner
We put some effort into testing the built copy rather than some
installed copy. On the other hand for people like packagers, testing
the installed copy is also of interest.

When NOTMUCH_TEST_INSTALLED is set to a nonempty value, tests do not
require a built notmuch tree or running configure.

Some of the tests marked as broken when running against installed
notmuch are probably fixable.
---
 test/README| 17 +
 test/T000-basic.sh |  1 +
 test/T010-help-test.sh |  3 +++
 test/T160-json.sh  |  2 ++
 test/T240-dump-restore.sh  |  2 ++
 test/T310-emacs.sh |  2 ++
 test/T350-crypto.sh|  1 +
 test/T355-smime.sh |  2 ++
 test/T360-symbol-hiding.sh |  4 
 test/T390-python.sh|  4 
 test/T391-python-cffi.sh   |  4 
 test/T395-ruby.sh  |  8 ++--
 test/T410-argument-parsing.sh  |  4 
 test/T480-hex-escaping.sh  |  4 
 test/T490-parse-time-string.sh |  4 
 test/T550-db-features.sh   |  4 
 test/T566-lib-message.sh   |  4 
 test/T592-thread-breakage.sh   |  4 
 test/T710-message-id.sh|  4 
 test/T800-asan.sh  |  5 +
 test/T850-git.sh   |  6 ++
 test/export-dirs.sh|  2 +-
 test/notmuch-test  | 12 ++--
 test/test-lib-common.sh| 13 ++---
 test/test-lib-emacs.sh | 12 ++--
 test/test-lib.sh   | 27 +--
 26 files changed, 139 insertions(+), 16 deletions(-)

diff --git a/test/README b/test/README
index 10f127cb..a81808b1 100644
--- a/test/README
+++ b/test/README
@@ -137,6 +137,23 @@ detection of missing prerequisites. In the future we may 
treat tests
 unable to run because of missing prerequisites, but not explicitly
 skipped by the user, as failures.
 
+Testing installed notmuch
+-
+
+Systems integrators (e.g. Linux distros) may wish to test an installed
+version of notmuch.  This can be done be running
+
+ $ NOTMUCH_TEST_INSTALLED=1 ./test/notmuch-test
+
+In this scenario the test suite does not assume a built tree, and in
+particular cannot rely on the output of 'configure'. You may want to
+set certain feature environment variables ('NOTMUCH_HAVE_*') directly
+if you know those apply to your installed notmuch). Consider also
+setting TERM=dumb if the value of TERM cannot be used (e.g. in a
+chroot with missing terminfo). Note that having a built tree may cause
+surprising/broken results for NOTMUCH_TEST_INSTALLED, so consider
+cleaning first.
+
 Writing Tests
 -
 The test script is written as a shell script. It is to be named as
diff --git a/test/T000-basic.sh b/test/T000-basic.sh
index a2f4d93f..642f918d 100755
--- a/test/T000-basic.sh
+++ b/test/T000-basic.sh
@@ -66,6 +66,7 @@ test_begin_subtest 'NOTMUCH_CONFIG is set and points to an 
existing file'
 test_expect_success 'test -f "${NOTMUCH_CONFIG}"'
 
 test_begin_subtest 'PATH is set to build directory'
+test_subtest_broken_for_installed
 test_expect_equal \
 "$(dirname ${TEST_DIRECTORY})" \
 "$(echo $PATH|cut -f1 -d: | sed -e 's,/test/valgrind/bin$,,')"
diff --git a/test/T010-help-test.sh b/test/T010-help-test.sh
index 1fbc46a2..827edc14 100755
--- a/test/T010-help-test.sh
+++ b/test/T010-help-test.sh
@@ -19,6 +19,9 @@ if [ "${NOTMUCH_HAVE_MAN-0}" = "1" ]; then
 test_begin_subtest 'notmuch help tag'
 test_expect_success 'notmuch help tag'
 else
+if [ -n "${NOTMUCH_TEST_INSTALLED-}" ]; then
+   test_done
+fi
 test_begin_subtest 'notmuch --help tag (man pages not available)'
 test_expect_success 'test_must_fail notmuch --help tag >/dev/null'
 
diff --git a/test/T160-json.sh b/test/T160-json.sh
index f61c3f2d..318c9788 100755
--- a/test/T160-json.sh
+++ b/test/T160-json.sh
@@ -65,6 +65,7 @@ test_expect_equal_json "$output" "[{\"thread\": \"XXX\",
  \"tags\": [\"inbox\",
  \"unread\"]}]"
 
+if [ -z "${NOTMUCH_TEST_INSTALLED-}" ]; then
 test_begin_subtest "Search message: json, 64-bit timestamp"
 if [ "${NOTMUCH_HAVE_64BIT_TIME_T-0}" != "1" ]; then
 test_subtest_known_broken
@@ -81,6 +82,7 @@ test_expect_equal_json "$output" "[{\"thread\": \"XXX\",
  \"query\": [\"id:$gen_msg_id\", null],
  \"tags\": [\"inbox\",
  \"unread\"]}]"
+fi # NOTMUCH_TEST_INSTALLED undefined / empty
 
 test_begin_subtest "Format version: too low"
 test_expect_code 20 "notmuch search --format-version=0 \\*"
diff --git a/test/T240-dump-restore.sh b/test/T240-dump-restore.sh
index 80939030..c3f18839 100755
--- a/test/T240-dump-restore.sh
+++ b/test/T240-dump-restore.sh
@@ -139,6 +139,7 @@ notmuch dump --output=dump-outfile-dash-inbox.actual -- 
from:cworth
 test_expect_equal_file dump-cworth.expected dump-outfile-dash-inbox.actual
 
 test_begin_subtest "Check for a safe set of message-ids"
+test_subtest_broken_for_installed
 notmuch search --output=messages from:cworth | sed s/^id:// > EXPECT