* [PATCH] test/T030-config: Separate stdout and stderr output
@ 2019-03-10 16:42 Luis Ressel
2019-03-10 20:42 ` Tomi Ollila
0 siblings, 1 reply; 3+ messages in thread
From: Luis Ressel @ 2019-03-10 16:42 UTC (permalink / raw)
To: notmuch
POSIX doesn't specify the flushing behaviour of the STDOUT stream, so
it's invalid to assume a particular order between the stdout and stderr
output. The current test breaks on musl due to this.
---
test/T030-config.sh | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/test/T030-config.sh b/test/T030-config.sh
index f36695c6..9404390b 100755
--- a/test/T030-config.sh
+++ b/test/T030-config.sh
@@ -43,7 +43,9 @@ notmuch config set foo.nonexistent
test_expect_equal "$(notmuch config get foo.nonexistent)" ""
test_begin_subtest "List all items"
-notmuch config list 2>&1 | notmuch_config_sanitize > OUTPUT
+notmuch config list 2>OUTPUT-ERR | notmuch_config_sanitize > OUTPUT
+echo "====" >> OUTPUT
+notmuch_config_sanitize < OUTPUT-ERR >> OUTPUT
if [ "${NOTMUCH_GMIME_MAJOR}" -lt 3 ]; then
config_gpg_path="crypto.gpg_path=gpg
@@ -51,7 +53,6 @@ if [ "${NOTMUCH_GMIME_MAJOR}" -lt 3 ]; then
fi
cat <<EOF > EXPECTED
-Error opening database at MAIL_DIR/.notmuch: No such file or directory
database.path=MAIL_DIR
user.name=Notmuch Test Suite
user.primary_email=test_suite@notmuchmail.org
@@ -65,6 +66,8 @@ foo.list=this;is another;list value;
built_with.compact=something
built_with.field_processor=something
built_with.retry_lock=something
+====
+Error opening database at MAIL_DIR/.notmuch: No such file or directory
EOF
test_expect_equal_file EXPECTED OUTPUT
--
2.19.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] test/T030-config: Separate stdout and stderr output
2019-03-10 16:42 [PATCH] test/T030-config: Separate stdout and stderr output Luis Ressel
@ 2019-03-10 20:42 ` Tomi Ollila
2019-03-11 0:11 ` Luis Ressel
0 siblings, 1 reply; 3+ messages in thread
From: Tomi Ollila @ 2019-03-10 20:42 UTC (permalink / raw)
To: Luis Ressel, notmuch
On Sun, Mar 10 2019, Luis Ressel wrote:
> POSIX doesn't specify the flushing behaviour of the STDOUT stream, so
> it's invalid to assume a particular order between the stdout and stderr
> output. The current test breaks on musl due to this.
> ---
> test/T030-config.sh | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/test/T030-config.sh b/test/T030-config.sh
> index f36695c6..9404390b 100755
> --- a/test/T030-config.sh
> +++ b/test/T030-config.sh
> @@ -43,7 +43,9 @@ notmuch config set foo.nonexistent
> test_expect_equal "$(notmuch config get foo.nonexistent)" ""
>
> test_begin_subtest "List all items"
> -notmuch config list 2>&1 | notmuch_config_sanitize > OUTPUT
> +notmuch config list 2>OUTPUT-ERR | notmuch_config_sanitize > OUTPUT
> +echo "====" >> OUTPUT
> +notmuch_config_sanitize < OUTPUT-ERR >> OUTPUT
IMO the above would be better (model/pattern for further use) as:
notmuch config list >STDOUT 2>STDERR
{ cat STDOUT; echo "===="; cat STDERR; } | notmuch_config_sanitize > OUTPUT
(I would like to put that cat-echo-cat into function but naming is hard...)
alternatives:
1) drop ====, then one cat STDOUT STDERR ... would be enough
2) printf '%s====\n%s' "$(< STDOUT)" "$(< STDERR)"
3) head -1000 STDOUT STDERR
-- in case of (3) are we sure that all head(1) implementations print the
filenames (and formats (possible) extra newlines) the same way.
-- ( (2) brings $(< ...) (faster replacement for $(cat ...) which we
haven't used in notmuch test suite so far -- but we could!)
Tomi
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] test/T030-config: Separate stdout and stderr output
2019-03-10 20:42 ` Tomi Ollila
@ 2019-03-11 0:11 ` Luis Ressel
0 siblings, 0 replies; 3+ messages in thread
From: Luis Ressel @ 2019-03-11 0:11 UTC (permalink / raw)
To: Tomi Ollila; +Cc: notmuch
On Sun, Mar 10, 2019 at 10:42:59PM +0200, Tomi Ollila wrote:
> On Sun, Mar 10 2019, Luis Ressel wrote:
>
> > test_begin_subtest "List all items"
> > -notmuch config list 2>&1 | notmuch_config_sanitize > OUTPUT
> > +notmuch config list 2>OUTPUT-ERR | notmuch_config_sanitize > OUTPUT
> > +echo "====" >> OUTPUT
> > +notmuch_config_sanitize < OUTPUT-ERR >> OUTPUT
>
> IMO the above would be better (model/pattern for further use) as:
>
> notmuch config list >STDOUT 2>STDERR
> { cat STDOUT; echo "===="; cat STDERR; } | notmuch_config_sanitize > OUTPUT
Yes, that'd certainly look better.
> (I would like to put that cat-echo-cat into function but naming is hard...)
"concat" perhaps? Or "concat_separator"/"concat_with_separator"?
> alternatives:
>
> 1) drop ====, then one cat STDOUT STDERR ... would be enough
>
> 2) printf '%s====\n%s' "$(< STDOUT)" "$(< STDERR)"
>
> 3) head -1000 STDOUT STDERR
>
> -- in case of (3) are we sure that all head(1) implementations print the
> filenames (and formats (possible) extra newlines) the same way.
>
> -- ( (2) brings $(< ...) (faster replacement for $(cat ...) which we
> haven't used in notmuch test suite so far -- but we could!)
Any of those options would be fine with me, with a preference for 2).
As for 3), POSIX specifies the exact header format head should use:
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/head.html
(There may be nonconformant implementations anyway, of course.)
Regards,
Luis Ressel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-03-11 0:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-10 16:42 [PATCH] test/T030-config: Separate stdout and stderr output Luis Ressel
2019-03-10 20:42 ` Tomi Ollila
2019-03-11 0:11 ` Luis Ressel
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).