From: Tomi Ollila <tomi.ollila@iki.fi>
To: Felipe Contreras <felipe.contreras@gmail.com>, notmuch@notmuchmail.org
Cc: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
Subject: Re: [PATCH 08/13] test: split emacs functionality to its own file
Date: Sat, 01 May 2021 23:28:13 +0300 [thread overview]
Message-ID: <m2tunm2o82.fsf@guru.guru-group.fi> (raw)
In-Reply-To: <20210501115422.483314-9-felipe.contreras@gmail.com>
On Sat, May 01 2021, Felipe Contreras wrote:
> This way it's easier to identify the tests that do require emacs stuff.
>
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> ---
> test/T160-json.sh | 1 +
> test/T170-sexp.sh | 1 +
> test/T310-emacs.sh | 1 +
> test/T320-emacs-large-search-buffer.sh | 3 +
> test/T330-emacs-subject-to-filename.sh | 3 +
> test/T350-crypto.sh | 1 +
> test/T355-smime.sh | 1 +
> test/T357-index-decryption.sh | 1 +
> test/T358-emacs-protected-headers.sh | 2 +
> test/T420-emacs-test-functions.sh | 1 +
> test/T430-emacs-address-cleaning.sh | 3 +
> test/T440-emacs-hello.sh | 2 +
> test/T450-emacs-show.sh | 1 +
> test/T455-emacs-charsets.sh | 3 +
> test/T460-emacs-tree.sh | 1 +
> test/T510-thread-replies.sh | 1 +
> test/T630-emacs-draft.sh | 2 +
> test/T720-emacs-attachment-warnings.sh | 3 +
> test/T730-emacs-forwarding.sh | 1 +
> test/test-lib-emacs.sh | 213 +++++++++++++++++++++++++
> test/test-lib.sh | 199 -----------------------
> 21 files changed, 245 insertions(+), 199 deletions(-)
> create mode 100644 test/test-lib-emacs.sh
>
> diff --git a/test/T160-json.sh b/test/T160-json.sh
> index e8b75605..638afb4d 100755
> --- a/test/T160-json.sh
> +++ b/test/T160-json.sh
> @@ -1,6 +1,7 @@
> #!/usr/bin/env bash
> test_description="--format=json output"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> test_begin_subtest "Show message: json"
> add_message "[subject]=\"json-show-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[bcc]=\"test_suite+bcc@notmuchmail.org\"" "[reply-to]=\"test_suite+replyto@notmuchmail.org\"" "[body]=\"json-show-message\""
> diff --git a/test/T170-sexp.sh b/test/T170-sexp.sh
> index 24be8351..af8c4b44 100755
> --- a/test/T170-sexp.sh
> +++ b/test/T170-sexp.sh
> @@ -1,6 +1,7 @@
> #!/usr/bin/env bash
> test_description="--format=sexp output"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> test_begin_subtest "Show message: sexp"
> add_message "[subject]=\"sexp-show-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[bcc]=\"test_suite+bcc@notmuchmail.org\"" "[reply-to]=\"test_suite+replyto@notmuchmail.org\"" "[body]=\"sexp-show-message\""
> diff --git a/test/T310-emacs.sh b/test/T310-emacs.sh
> index e64627c6..c08df5fc 100755
> --- a/test/T310-emacs.sh
> +++ b/test/T310-emacs.sh
> @@ -2,6 +2,7 @@
>
> test_description="emacs interface"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> EXPECTED=$NOTMUCH_SRCDIR/test/emacs.expected-output
>
> diff --git a/test/T320-emacs-large-search-buffer.sh b/test/T320-emacs-large-search-buffer.sh
> index f61e8a97..d2638c8b 100755
> --- a/test/T320-emacs-large-search-buffer.sh
> +++ b/test/T320-emacs-large-search-buffer.sh
> @@ -1,11 +1,14 @@
> #!/usr/bin/env bash
> test_description="Emacs with large search results buffer"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> x=xxxxxxxxxx # 10
> x=$x$x$x$x$x$x$x$x$x$x # 100
> x=$x$x$x$x$x$x$x$x$x # 900
>
> +test_require_emacs
Could the following work in case of emacs tests:
. $(dirname "$0")/test-lib.sh || exit 1
test_require_emacs
. $(dirname "$0")/test-lib-emacs.sh || exit 1
i.e. in case of emacs tests test_require_emacs would always be needed
-- and it requirement not satisfied, exit even before sourcing
test-lib-emacs.sh
Tomi
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> x=xxxxxxxxxx # 10
> x=$x$x$x$x$x$x$x$x$x$x # 100
> x=$x$x$x$x$x$x$x$x$x # 900
>
> +test_require_emacs
> +
> # We generate a long subject here (over 900 bytes) so that the emacs
> # search results get large quickly. With 30 such messages we should
> # cross several 4kB page boundaries and see the bug.
> diff --git a/test/T330-emacs-subject-to-filename.sh b/test/T330-emacs-subject-to-filename.sh
> index eaf7c980..6e09a048 100755
> --- a/test/T330-emacs-subject-to-filename.sh
> +++ b/test/T330-emacs-subject-to-filename.sh
> @@ -2,6 +2,9 @@
>
> test_description="emacs: mail subject to filename"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
> +
> +test_require_emacs
>
> # emacs server can't be started in a child process with $(test_emacs ...)
> test_emacs '(ignore)' > /dev/null
> diff --git a/test/T350-crypto.sh b/test/T350-crypto.sh
> index ae1d6a98..4508c984 100755
> --- a/test/T350-crypto.sh
> +++ b/test/T350-crypto.sh
> @@ -6,6 +6,7 @@
>
> test_description='PGP/MIME signature verification and decryption'
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> ##################################################
>
> diff --git a/test/T355-smime.sh b/test/T355-smime.sh
> index 12ac2525..69bdcfac 100755
> --- a/test/T355-smime.sh
> +++ b/test/T355-smime.sh
> @@ -2,6 +2,7 @@
>
> test_description='S/MIME signature verification and decryption'
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> test_require_emacs
> test_require_external_prereq openssl
> diff --git a/test/T357-index-decryption.sh b/test/T357-index-decryption.sh
> index b81bdfe1..f5644d7e 100755
> --- a/test/T357-index-decryption.sh
> +++ b/test/T357-index-decryption.sh
> @@ -4,6 +4,7 @@
>
> test_description='indexing decrypted mail'
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> ##################################################
>
> diff --git a/test/T358-emacs-protected-headers.sh b/test/T358-emacs-protected-headers.sh
> index bca78531..b25d7ea7 100755
> --- a/test/T358-emacs-protected-headers.sh
> +++ b/test/T358-emacs-protected-headers.sh
> @@ -2,8 +2,10 @@
>
> test_description="protected headers in emacs interface"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> # testing protected headers with emacs
> +test_require_emacs
> add_gnupg_home
> add_email_corpus protected-headers
>
> diff --git a/test/T420-emacs-test-functions.sh b/test/T420-emacs-test-functions.sh
> index bfc10be3..22e4f01e 100755
> --- a/test/T420-emacs-test-functions.sh
> +++ b/test/T420-emacs-test-functions.sh
> @@ -2,6 +2,7 @@
>
> test_description="emacs test function sanity"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> test_begin_subtest "emacs test function sanity"
> test_emacs_expect_t 't'
> diff --git a/test/T430-emacs-address-cleaning.sh b/test/T430-emacs-address-cleaning.sh
> index 02d3b411..640bff3f 100755
> --- a/test/T430-emacs-address-cleaning.sh
> +++ b/test/T430-emacs-address-cleaning.sh
> @@ -2,6 +2,9 @@
>
> test_description="emacs address cleaning"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
> +
> +test_require_emacs
>
> test_begin_subtest "notmuch-test-address-clean part 1"
> test_emacs_expect_t '(notmuch-test-address-cleaning-1)'
> diff --git a/test/T440-emacs-hello.sh b/test/T440-emacs-hello.sh
> index d23c1fca..642aa3cc 100755
> --- a/test/T440-emacs-hello.sh
> +++ b/test/T440-emacs-hello.sh
> @@ -2,9 +2,11 @@
>
> test_description="emacs notmuch-hello view"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> EXPECTED=$NOTMUCH_SRCDIR/test/emacs.expected-output
>
> +test_require_emacs
> add_email_corpus
>
> test_begin_subtest "User-defined section with inbox tag"
> diff --git a/test/T450-emacs-show.sh b/test/T450-emacs-show.sh
> index bd76d378..e58124d4 100755
> --- a/test/T450-emacs-show.sh
> +++ b/test/T450-emacs-show.sh
> @@ -2,6 +2,7 @@
>
> test_description="emacs notmuch-show view"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> EXPECTED=$NOTMUCH_SRCDIR/test/emacs-show.expected-output
>
> diff --git a/test/T455-emacs-charsets.sh b/test/T455-emacs-charsets.sh
> index cb1297ca..a0f4dc24 100755
> --- a/test/T455-emacs-charsets.sh
> +++ b/test/T455-emacs-charsets.sh
> @@ -2,11 +2,14 @@
>
> test_description="emacs notmuch-show charset handling"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
>
> UTF8_YEN=$'\xef\xbf\xa5'
> BIG5_YEN=$'\xa2\x44'
>
> +test_require_emacs
> +
> # Add four messages with unusual encoding requirements:
> #
> # 1) text/plain in quoted-printable big5
> diff --git a/test/T460-emacs-tree.sh b/test/T460-emacs-tree.sh
> index 195485c1..dfc69049 100755
> --- a/test/T460-emacs-tree.sh
> +++ b/test/T460-emacs-tree.sh
> @@ -2,6 +2,7 @@
>
> test_description="emacs tree view interface"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> EXPECTED=$NOTMUCH_SRCDIR/test/emacs-tree.expected-output
>
> diff --git a/test/T510-thread-replies.sh b/test/T510-thread-replies.sh
> index 2859d29f..cdb4be44 100755
> --- a/test/T510-thread-replies.sh
> +++ b/test/T510-thread-replies.sh
> @@ -10,6 +10,7 @@ test_description='test of proper handling of in-reply-to and references headers'
> # non-RFC-compliant headers'
>
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> test_begin_subtest "Use References when In-Reply-To is broken"
> add_message '[id]="foo@one.com"' \
> diff --git a/test/T630-emacs-draft.sh b/test/T630-emacs-draft.sh
> index d7903ce7..8553f022 100755
> --- a/test/T630-emacs-draft.sh
> +++ b/test/T630-emacs-draft.sh
> @@ -1,7 +1,9 @@
> #!/usr/bin/env bash
> test_description="Emacs Draft Handling"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> +test_require_emacs
> add_email_corpus
>
> notmuch config set search.exclude_tags deleted
> diff --git a/test/T720-emacs-attachment-warnings.sh b/test/T720-emacs-attachment-warnings.sh
> index c8d2bcc2..4e8c5d26 100755
> --- a/test/T720-emacs-attachment-warnings.sh
> +++ b/test/T720-emacs-attachment-warnings.sh
> @@ -2,6 +2,9 @@
>
> test_description="emacs attachment warnings"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
> +
> +test_require_emacs
>
> test_begin_subtest "notmuch-test-attachment-warning part 1"
> test_emacs_expect_t '(notmuch-test-attachment-warning-1)'
> diff --git a/test/T730-emacs-forwarding.sh b/test/T730-emacs-forwarding.sh
> index 5d6ac9f0..378067ed 100755
> --- a/test/T730-emacs-forwarding.sh
> +++ b/test/T730-emacs-forwarding.sh
> @@ -2,6 +2,7 @@
>
> test_description="emacs forwarding"
> . $(dirname "$0")/test-lib.sh || exit 1
> +. $(dirname "$0")/test-lib-emacs.sh || exit 1
>
> test_require_emacs
>
> diff --git a/test/test-lib-emacs.sh b/test/test-lib-emacs.sh
> new file mode 100644
> index 00000000..ecad501a
> --- /dev/null
> +++ b/test/test-lib-emacs.sh
> @@ -0,0 +1,213 @@
> +#
> +# Copyright (c) 2010-2020 Notmuch Developers
> +#
> +# This program is free software: you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation, either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program. If not, see https://www.gnu.org/licenses/ .
> +
> +test_require_emacs () {
> + test_require_external_prereq emacs
> + test_require_external_prereq ${TEST_EMACSCLIENT}
> + test_require_external_prereq dtach
> +}
> +
> +# Deliver a message with emacs and add it to the database
> +#
> +# Uses emacs to generate and deliver a message to the mail store.
> +# Accepts arbitrary extra emacs/elisp functions to modify the message
> +# before sending, which is useful to doing things like attaching files
> +# to the message and encrypting/signing.
> +emacs_deliver_message ()
> +{
> + local subject body smtp_dummy_pid smtp_dummy_port
> + subject="$1"
> + body="$2"
> + shift 2
> + # before we can send a message, we have to prepare the FCC maildir
> + mkdir -p "$MAIL_DIR"/sent/{cur,new,tmp}
> + # eval'ing smtp-dummy --background will set smtp_dummy_pid and -_port
> + smtp_dummy_pid= smtp_dummy_port=
> + eval `$TEST_DIRECTORY/smtp-dummy --background sent_message`
> + test -n "$smtp_dummy_pid" || return 1
> + test -n "$smtp_dummy_port" || return 1
> +
> + test_emacs \
> + "(let ((message-send-mail-function 'message-smtpmail-send-it)
> + (mail-host-address \"example.com\")
> + (smtpmail-smtp-server \"localhost\")
> + (smtpmail-smtp-service \"${smtp_dummy_port}\"))
> + (notmuch-mua-mail)
> + (message-goto-to)
> + (insert \"test_suite@notmuchmail.org\nDate: 01 Jan 2000 12:00:00 -0000\")
> + (message-goto-subject)
> + (insert \"${subject}\")
> + (message-goto-body)
> + (insert \"${body}\")
> + $*
> + (notmuch-mua-send-and-exit))"
> +
> + # In case message was sent properly, client waits for confirmation
> + # before exiting and resuming control here; therefore making sure
> + # that server exits by sending (KILL) signal to it is safe.
> + kill -9 $smtp_dummy_pid
> + notmuch new >/dev/null
> +}
> +
> +# Pretend to deliver a message with emacs. Really save it to a file
> +# and add it to the database
> +#
> +# Uses emacs to generate and deliver a message to the mail store.
> +# Accepts arbitrary extra emacs/elisp functions to modify the message
> +# before sending, which is useful to doing things like attaching files
> +# to the message and encrypting/signing.
> +#
> +# If any GNU-style long-arguments (like --quiet or --decrypt=true) are
> +# at the head of the argument list, they are sent directly to "notmuch
> +# new" after message delivery
> +emacs_fcc_message ()
> +{
> + local nmn_args subject body
> + nmn_args=''
> + while [[ "$1" =~ ^-- ]]; do
> + nmn_args="$nmn_args $1"
> + shift
> + done
> + subject="$1"
> + body="$2"
> + shift 2
> + # before we can send a message, we have to prepare the FCC maildir
> + mkdir -p "$MAIL_DIR"/sent/{cur,new,tmp}
> +
> + test_emacs \
> + "(let ((message-send-mail-function (lambda () t))
> + (mail-host-address \"example.com\"))
> + (notmuch-mua-mail)
> + (message-goto-to)
> + (insert \"test_suite@notmuchmail.org\nDate: 01 Jan 2000 12:00:00 -0000\")
> + (message-goto-subject)
> + (insert \"${subject}\")
> + (message-goto-body)
> + (insert \"${body}\")
> + $*
> + (let ((mml-secure-smime-sign-with-sender t)
> + (mml-secure-openpgp-sign-with-sender t))
> + (notmuch-mua-send-and-exit)))" || return 1
> + notmuch new $nmn_args >/dev/null
> +}
> +
> +test_emacs_expect_t () {
> + local result
> + test "$#" = 1 ||
> + error "bug in the test script: not 1 parameter to test_emacs_expect_t"
> + if [ -z "$inside_subtest" ]; then
> + error "bug in the test script: test_emacs_expect_t without test_begin_subtest"
> + fi
> +
> + # Run the test.
> + if ! test_skip "$test_subtest_name"
> + then
> + test_emacs "(notmuch-test-run $1)" >/dev/null
> +
> + # Restore state after the test.
> + exec 1>&6 2>&7 # Restore stdout and stderr
> + inside_subtest=
> +
> + # test_emacs may update missing external prerequisites
> + test_check_missing_external_prereqs_ "$test_subtest_name" && return
> +
> + # Report success/failure.
> + result=$(cat OUTPUT)
> + if [ "$result" = t ]
> + then
> + test_ok_
> + else
> + test_failure_ "${result}"
> + fi
> + else
> + # Restore state after the (non) test.
> + exec 1>&6 2>&7 # Restore stdout and stderr
> + inside_subtest=
> + fi
> +}
> +
> +emacs_generate_script () {
> + # Construct a little test script here for the benefit of the user,
> + # (who can easily run "run_emacs" to get the same emacs environment
> + # for investigating any failures).
> + cat <<EOF >"$TMP_DIRECTORY/run_emacs"
> +#!/bin/sh
> +export PATH=$PATH
> +export NOTMUCH_CONFIG=$NOTMUCH_CONFIG
> +
> +# Here's what we are using here:
> +#
> +# --quick Use minimal customization. This implies --no-init-file,
> +# --no-site-file and (emacs 24) --no-site-lisp
> +#
> +# --directory Ensure that the local elisp sources are found
> +#
> +# --load Force loading of notmuch.el and test-lib.el
> +
> +exec ${TEST_EMACS} --quick \
> + --directory "$NOTMUCH_BUILDDIR/emacs" --load notmuch.el \
> + --directory "$NOTMUCH_SRCDIR/test" --load test-lib.el \
> + "\$@"
> +EOF
> + chmod a+x "$TMP_DIRECTORY/run_emacs"
> +}
> +
> +test_emacs () {
> + # test dependencies beforehand to avoid the waiting loop below
> + missing_dependencies=
> + test_require_external_prereq dtach || missing_dependencies=1
> + test_require_external_prereq emacs || missing_dependencies=1
> + test_require_external_prereq ${TEST_EMACSCLIENT} || missing_dependencies=1
> + test -z "$missing_dependencies" || return
> +
> + if [ -z "$EMACS_SERVER" ]; then
> + emacs_tests="$NOTMUCH_SRCDIR/test/${this_test_bare}.el"
> + if [ -f "$emacs_tests" ]; then
> + load_emacs_tests="--eval '(load \"$emacs_tests\")'"
> + else
> + load_emacs_tests=
> + fi
> + server_name="notmuch-test-suite-$$"
> + # start a detached session with an emacs server
> + # user's TERM (or 'vt100' in case user's TERM is known dumb
> + # or unknown) is given to dtach which assumes a minimally
> + # VT100-compatible terminal -- and emacs inherits that
> + TERM=$SMART_TERM dtach -n "$TEST_TMPDIR/emacs-dtach-socket.$$" \
> + sh -c "stty rows 24 cols 80; exec '$TMP_DIRECTORY/run_emacs' \
> + --no-window-system \
> + $load_emacs_tests \
> + --eval '(setq server-name \"$server_name\")' \
> + --eval '(server-start)' \
> + --eval '(orphan-watchdog $$)'" || return
> + EMACS_SERVER="$server_name"
> + # wait until the emacs server is up
> + until test_emacs '()' >/dev/null 2>/dev/null; do
> + sleep 1
> + done
> + fi
> +
> + # Clear test-output output file. Most Emacs tests end with a
> + # call to (test-output). If the test code fails with an
> + # exception before this call, the output file won't get
> + # updated. Since we don't want to compare against an output
> + # file from another test, so start out with an empty file.
> + rm -f OUTPUT
> + touch OUTPUT
> +
> + ${TEST_EMACSCLIENT} --socket-name="$EMACS_SERVER" --eval "(notmuch-test-progn $*)"
> +}
> +
> +emacs_generate_script
> diff --git a/test/test-lib.sh b/test/test-lib.sh
> index 88e2a82f..7fdc0007 100644
> --- a/test/test-lib.sh
> +++ b/test/test-lib.sh
> @@ -114,12 +114,6 @@ unset ALTERNATE_EDITOR
> unset EMAIL
> unset NAME
>
> -test_require_emacs () {
> - test_require_external_prereq emacs
> - test_require_external_prereq ${TEST_EMACSCLIENT}
> - test_require_external_prereq dtach
> -}
> -
> add_gnupg_home ()
> {
> [ -e "${GNUPGHOME}/gpg.conf" ] && return
> @@ -349,90 +343,6 @@ export GNUPGHOME="${TEST_TMPDIR}/gnupg"
> trap 'trap_exit' EXIT
> trap 'trap_signal' HUP INT TERM
>
> -# Deliver a message with emacs and add it to the database
> -#
> -# Uses emacs to generate and deliver a message to the mail store.
> -# Accepts arbitrary extra emacs/elisp functions to modify the message
> -# before sending, which is useful to doing things like attaching files
> -# to the message and encrypting/signing.
> -emacs_deliver_message ()
> -{
> - local subject body smtp_dummy_pid smtp_dummy_port
> - subject="$1"
> - body="$2"
> - shift 2
> - # before we can send a message, we have to prepare the FCC maildir
> - mkdir -p "$MAIL_DIR"/sent/{cur,new,tmp}
> - # eval'ing smtp-dummy --background will set smtp_dummy_pid and -_port
> - smtp_dummy_pid= smtp_dummy_port=
> - eval `$TEST_DIRECTORY/smtp-dummy --background sent_message`
> - test -n "$smtp_dummy_pid" || return 1
> - test -n "$smtp_dummy_port" || return 1
> -
> - test_emacs \
> - "(let ((message-send-mail-function 'message-smtpmail-send-it)
> - (mail-host-address \"example.com\")
> - (smtpmail-smtp-server \"localhost\")
> - (smtpmail-smtp-service \"${smtp_dummy_port}\"))
> - (notmuch-mua-mail)
> - (message-goto-to)
> - (insert \"test_suite@notmuchmail.org\nDate: 01 Jan 2000 12:00:00 -0000\")
> - (message-goto-subject)
> - (insert \"${subject}\")
> - (message-goto-body)
> - (insert \"${body}\")
> - $*
> - (notmuch-mua-send-and-exit))"
> -
> - # In case message was sent properly, client waits for confirmation
> - # before exiting and resuming control here; therefore making sure
> - # that server exits by sending (KILL) signal to it is safe.
> - kill -9 $smtp_dummy_pid
> - notmuch new >/dev/null
> -}
> -
> -# Pretend to deliver a message with emacs. Really save it to a file
> -# and add it to the database
> -#
> -# Uses emacs to generate and deliver a message to the mail store.
> -# Accepts arbitrary extra emacs/elisp functions to modify the message
> -# before sending, which is useful to doing things like attaching files
> -# to the message and encrypting/signing.
> -#
> -# If any GNU-style long-arguments (like --quiet or --decrypt=true) are
> -# at the head of the argument list, they are sent directly to "notmuch
> -# new" after message delivery
> -emacs_fcc_message ()
> -{
> - local nmn_args subject body
> - nmn_args=''
> - while [[ "$1" =~ ^-- ]]; do
> - nmn_args="$nmn_args $1"
> - shift
> - done
> - subject="$1"
> - body="$2"
> - shift 2
> - # before we can send a message, we have to prepare the FCC maildir
> - mkdir -p "$MAIL_DIR"/sent/{cur,new,tmp}
> -
> - test_emacs \
> - "(let ((message-send-mail-function (lambda () t))
> - (mail-host-address \"example.com\"))
> - (notmuch-mua-mail)
> - (message-goto-to)
> - (insert \"test_suite@notmuchmail.org\nDate: 01 Jan 2000 12:00:00 -0000\")
> - (message-goto-subject)
> - (insert \"${subject}\")
> - (message-goto-body)
> - (insert \"${body}\")
> - $*
> - (let ((mml-secure-smime-sign-with-sender t)
> - (mml-secure-openpgp-sign-with-sender t))
> - (notmuch-mua-send-and-exit)))" || return 1
> - notmuch new $nmn_args >/dev/null
> -}
> -
> # Add an existing, fixed corpus of email to the database.
> #
> # $1 is the corpus dir under corpora to add, using "default" if unset.
> @@ -581,41 +491,6 @@ test_json_nodes () {
> fi
> }
>
> -test_emacs_expect_t () {
> - local result
> - test "$#" = 1 ||
> - error "bug in the test script: not 1 parameter to test_emacs_expect_t"
> - if [ -z "$inside_subtest" ]; then
> - error "bug in the test script: test_emacs_expect_t without test_begin_subtest"
> - fi
> -
> - # Run the test.
> - if ! test_skip "$test_subtest_name"
> - then
> - test_emacs "(notmuch-test-run $1)" >/dev/null
> -
> - # Restore state after the test.
> - exec 1>&6 2>&7 # Restore stdout and stderr
> - inside_subtest=
> -
> - # test_emacs may update missing external prerequisites
> - test_check_missing_external_prereqs_ "$test_subtest_name" && return
> -
> - # Report success/failure.
> - result=$(cat OUTPUT)
> - if [ "$result" = t ]
> - then
> - test_ok_
> - else
> - test_failure_ "${result}"
> - fi
> - else
> - # Restore state after the (non) test.
> - exec 1>&6 2>&7 # Restore stdout and stderr
> - inside_subtest=
> - fi
> -}
> -
> NOTMUCH_NEW ()
> {
> notmuch new "${@}" | grep -v -E -e '^Processed [0-9]*( total)? file|Found [0-9]* total file'
> @@ -1046,77 +921,6 @@ test_done () {
> fi
> }
>
> -emacs_generate_script () {
> - # Construct a little test script here for the benefit of the user,
> - # (who can easily run "run_emacs" to get the same emacs environment
> - # for investigating any failures).
> - cat <<EOF >"$TMP_DIRECTORY/run_emacs"
> -#!/bin/sh
> -export PATH=$PATH
> -export NOTMUCH_CONFIG=$NOTMUCH_CONFIG
> -
> -# Here's what we are using here:
> -#
> -# --quick Use minimal customization. This implies --no-init-file,
> -# --no-site-file and (emacs 24) --no-site-lisp
> -#
> -# --directory Ensure that the local elisp sources are found
> -#
> -# --load Force loading of notmuch.el and test-lib.el
> -
> -exec ${TEST_EMACS} --quick \
> - --directory "$NOTMUCH_BUILDDIR/emacs" --load notmuch.el \
> - --directory "$NOTMUCH_SRCDIR/test" --load test-lib.el \
> - "\$@"
> -EOF
> - chmod a+x "$TMP_DIRECTORY/run_emacs"
> -}
> -
> -test_emacs () {
> - # test dependencies beforehand to avoid the waiting loop below
> - missing_dependencies=
> - test_require_external_prereq dtach || missing_dependencies=1
> - test_require_external_prereq emacs || missing_dependencies=1
> - test_require_external_prereq ${TEST_EMACSCLIENT} || missing_dependencies=1
> - test -z "$missing_dependencies" || return
> -
> - if [ -z "$EMACS_SERVER" ]; then
> - emacs_tests="$NOTMUCH_SRCDIR/test/${this_test_bare}.el"
> - if [ -f "$emacs_tests" ]; then
> - load_emacs_tests="--eval '(load \"$emacs_tests\")'"
> - else
> - load_emacs_tests=
> - fi
> - server_name="notmuch-test-suite-$$"
> - # start a detached session with an emacs server
> - # user's TERM (or 'vt100' in case user's TERM is known dumb
> - # or unknown) is given to dtach which assumes a minimally
> - # VT100-compatible terminal -- and emacs inherits that
> - TERM=$SMART_TERM dtach -n "$TEST_TMPDIR/emacs-dtach-socket.$$" \
> - sh -c "stty rows 24 cols 80; exec '$TMP_DIRECTORY/run_emacs' \
> - --no-window-system \
> - $load_emacs_tests \
> - --eval '(setq server-name \"$server_name\")' \
> - --eval '(server-start)' \
> - --eval '(orphan-watchdog $$)'" || return
> - EMACS_SERVER="$server_name"
> - # wait until the emacs server is up
> - until test_emacs '()' >/dev/null 2>/dev/null; do
> - sleep 1
> - done
> - fi
> -
> - # Clear test-output output file. Most Emacs tests end with a
> - # call to (test-output). If the test code fails with an
> - # exception before this call, the output file won't get
> - # updated. Since we don't want to compare against an output
> - # file from another test, so start out with an empty file.
> - rm -f OUTPUT
> - touch OUTPUT
> -
> - ${TEST_EMACSCLIENT} --socket-name="$EMACS_SERVER" --eval "(notmuch-test-progn $*)"
> -}
> -
> test_python() {
> # Note: if there is need to print debug information from python program,
> # use stdout = os.fdopen(6, 'w') or stderr = os.fdopen(7, 'w')
> @@ -1210,9 +1014,6 @@ TEST_DIRECTORY=$NOTMUCH_BUILDDIR/test
>
> . "$NOTMUCH_SRCDIR/test/test-lib-common.sh" || exit 1
>
> -emacs_generate_script
> -
> -
> # Use -P to resolve symlinks in our working directory so that the cwd
> # in subprocesses like git equals our $PWD (for pathname comparisons).
> cd -P "$TMP_DIRECTORY" || error "Cannot set up test environment"
> --
> 2.31.0
> _______________________________________________
> notmuch mailing list -- notmuch@notmuchmail.org
> To unsubscribe send an email to notmuch-leave@notmuchmail.org
next prev parent reply other threads:[~2021-05-01 20:28 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-01 11:54 [PATCH 00/13] test: several fixes and improvements Felipe Contreras
2021-05-01 11:54 ` [PATCH 01/13] test: fix passwd_sanitize() Felipe Contreras
2021-05-01 20:01 ` Tomi Ollila
2021-05-01 11:54 ` [PATCH 02/13] test: unset NAME environment variable Felipe Contreras
2021-05-01 20:01 ` Tomi Ollila
2021-05-01 11:54 ` [PATCH 03/13] test: remove USER_FULL_NAME when not present Felipe Contreras
2021-05-01 20:13 ` Tomi Ollila
2021-05-01 11:54 ` [PATCH 04/13] test: use correct fqdn in passwd_sanitize() Felipe Contreras
2021-05-01 20:14 ` Tomi Ollila
2021-05-01 11:54 ` [PATCH 05/13] test: fix wrong SKIP messages Felipe Contreras
2021-05-01 20:18 ` Tomi Ollila
2021-05-01 11:54 ` [PATCH 06/13] test: add prereqs check in test_emacs_expect_t Felipe Contreras
2021-05-01 20:18 ` Tomi Ollila
2021-05-01 11:54 ` [PATCH 07/13] test: add external prereqs to many emacs tests Felipe Contreras
2021-05-01 20:19 ` Tomi Ollila
2021-05-01 11:54 ` [PATCH 08/13] test: split emacs functionality to its own file Felipe Contreras
2021-05-01 20:28 ` Tomi Ollila [this message]
2021-05-01 11:54 ` [PATCH 09/13] test: emacs: simplify missing dependencies check Felipe Contreras
2021-05-01 20:20 ` Tomi Ollila
2021-05-01 11:54 ` [PATCH 10/13] test: emacs: check for configured emacs Felipe Contreras
2021-05-01 20:20 ` Tomi Ollila
2021-05-01 11:54 ` [PATCH 11/13] test: emacs: fix a couple of shellcheck complaints Felipe Contreras
2021-05-01 20:21 ` Tomi Ollila
2021-05-01 11:54 ` [PATCH 12/13] test: trivial style cleanups Felipe Contreras
2021-05-01 20:28 ` Tomi Ollila
2021-05-01 11:54 ` [PATCH 13/13] test: more style fixes Felipe Contreras
2021-05-01 20:29 ` Tomi Ollila
2021-05-02 0:36 ` [PATCH 00/13] test: several fixes and improvements David Bremner
2021-05-02 5:08 ` Tomi Ollila
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m2tunm2o82.fsf@guru.guru-group.fi \
--to=tomi.ollila@iki.fi \
--cc=dkg@fifthhorseman.net \
--cc=felipe.contreras@gmail.com \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).