Subject: bug#65590: 29.0.50; esh-var-test/interp-concat-cmd fails on macOS

From: Stefan Kangas <[email-masked]>
Date: Tue, 29 Aug 2023 21:15:11 +0200

Den tis 29 aug. 2023 kl 20:59 skrev Stefan Kangas <[email-masked]>:
>
> Jim Porter <[email-masked]> writes:
>
> > This looks like a race condition when executing this command:
> >
> >    echo ${*echo "foo\nbar"}-baz
> >
> > That *should* print "foo\nbar-baz", but it tries to print "-baz" (and
> > fails). That appears to be because the subcommand (*echo "foo\nbar")
> > produces no output.
>
> I can confirm that the error is intermittent, as I'm not seeing it on a re-run.

(I put "29.0.50" in the subject, but that should be "30.0.50".  Sorry
about the typo.)

And on yet another re-run, this one cropped up in the same file:

Test esh-var-test/quote-interp-var-indices-subcommand backtrace:
  signal(ert-test-failed (((should (eshell-command-result--equal comma
  ert-fail(((should (eshell-command-result--equal command (eshell-test
  eshell-command-result-equal("echo \"$eshell-test-value[${*echo 0}]\"
  #f(compiled-function () #<bytecode -0x3e28235b46afdbe>)()
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name esh-var-test/quote-interp-var-indices
  ert-run-or-rerun-test(#s(ert--stats :selector ... :tests ... :test-m
  ert-run-tests((not (or (tag :expensive-test) (tag :unstable) (tag :n
  ert-run-tests-batch((not (or (tag :expensive-test) (tag :unstable) (
  ert-run-tests-batch-and-exit((not (or (tag :expensive-test) (tag :un
  eval((ert-run-tests-batch-and-exit '(not (or (tag :expensive-test) (
  command-line-1(("-L" ":." "-l" "ert" "-l" "lisp/eshell/esh-var-tests
  command-line()
  normal-top-level()
Test esh-var-test/quote-interp-var-indices-subcommand condition:
    (ert-test-failed
     ((should
       (eshell-command-result--equal command
                     (eshell-test-command-result command)
                     result))
      :form
      (eshell-command-result--equal
       "echo \"$eshell-test-value[${*echo 0}]\"" #("nil" 0 3 (escaped t))
       "zero")
      :value nil :explanation
      (nonequal-result (command "echo \"$eshell-test-value[${*echo 0}]\"")
               (result #("nil" 0 3 ...)) (expected "zero"))))
   FAILED   76/110  esh-var-test/quote-interp-var-indices-subcommand
(0.625851 sec) at lisp/eshell/esh-var-tests.el:341
[...]

Ran 110 tests, 108 results as expected, 2 unexpected (2023-08-29
21:10:03+0200, 10.074424 sec)

2 unexpected results:
   FAILED  esh-var-test/interp-cmd-external
   FAILED  esh-var-test/quote-interp-var-indices-subcommand

make[3]: *** [lisp/eshell/esh-var-tests.log] Error 1