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