From: "Rudolf Adamkovič" <salutis@me.com>
To: Ihor Radchenko <yantar92@posteo.net>
Cc: Ihor Radchenko <yantar92@gmail.com>, emacs-orgmode@gnu.org
Subject: Re: Org 9.6-pre and Bash sessions
Date: Wed, 26 Oct 2022 13:56:37 +0200 [thread overview]
Message-ID: <m21qqux0ga.fsf@me.com> (raw)
In-Reply-To: <87fsffqi49.fsf@localhost>
[-- Attachment #1: Type: text/plain, Size: 949 bytes --]
Ihor,
Thank you for investigating, explaining, and also fixing the problem! I
pulled the latest 'main' and everything works a bit, it seems.
Then, to avoid walking in circles, I decided to write some tests, for I
think shell blocks should never, never, never break in such basic ways,
let alone in production Emacs.
Please, see the WIP patch attached to this message.
I noticed that the following tests do not pass:
1. ob-shell/error-output-after-success
We seem to trash error output, such as warnings, on success. I think
we should not do this. Now, on the execution of "echo X &>2", Org
says "Code block produced no output." But that does hold true. The
block did produce output, just on the other output stream, namely
error output.
2. ob-shell/error-output-after-failure
We seem not to show the exit code in this case. Why?
3. ob-shell/exit-codes
Should we add a newline after the exit code message?
Rudy
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-WIP-test-ob-shell-Add-tests-for-some-recent-changes.patch --]
[-- Type: text/x-patch, Size: 3021 bytes --]
From 90432170552a6e922d48d51138b2062aa11e5575 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis@me.com>
Date: Wed, 26 Oct 2022 13:35:26 +0200
Subject: [PATCH] WIP test-ob-shell: Add tests for some recent changes
---
testing/lisp/test-ob-shell.el | 60 +++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git a/testing/lisp/test-ob-shell.el b/testing/lisp/test-ob-shell.el
index 4c00faa49..8cd967343 100644
--- a/testing/lisp/test-ob-shell.el
+++ b/testing/lisp/test-ob-shell.el
@@ -170,6 +170,66 @@ ob-comint.el, which was not previously tested."
"#+BEGIN_SRC sh :results table\necho 'I \"want\" it all'\n#+END_SRC"
(org-babel-execute-src-block)))))
+;;; Standard output
+
+(ert-deftest ob-shell/standard-output-after-failure ()
+ "Test standard output after exiting with a non-zero code."
+ (should (= 1
+ (org-babel-execute:sh
+ "echo 1; exit 2" nil))))
+
+;;; Error output
+
+(ert-deftest ob-shell/error-output-after-success ()
+ "Test that error output shows in the error buffer after exiting
+with a zero code."
+ (should
+ (string= "1
+[ Babel evaluation exited with code 2 ]"
+ (progn (org-babel-eval-wipe-error-buffer)
+ (org-babel-execute:sh
+ "echo 1 >&2" nil)
+ (with-current-buffer org-babel-error-buffer-name
+ (buffer-string))))))
+
+(ert-deftest ob-shell/error-output-after-failure ()
+ "Test that error output shows in the error buffer, alongside the
+exit code, after exiting with a non-zero code."
+ (should
+ (string= "1
+[ Babel evaluation exited with code 2 ]"
+ (progn (org-babel-eval-wipe-error-buffer)
+ (org-babel-execute:sh
+ "echo 1 >&2; exit 2" nil)
+ (with-current-buffer org-babel-error-buffer-name
+ (buffer-string))))))
+
+;;; Exit codes
+
+(ert-deftest ob-shell/exit-code ()
+ "Test that the exit code shows in the error buffer after exiting
+with a non-zero return code."
+ (should
+ (string= "[ Babel evaluation exited with code 1 ]"
+ (progn (org-babel-eval-wipe-error-buffer)
+ (org-babel-execute:sh
+ "exit 1" nil)
+ (with-current-buffer org-babel-error-buffer-name
+ (buffer-string))))))
+
+(ert-deftest ob-shell/exit-codes ()
+ "Test that multiple exit codes show in the error buffer after
+exiting with a non-zero return code more than once."
+ (should
+ (string= "[ Babel evaluation exited with code 1 ]
+[ Babel evaluation exited with code 2 ]"
+ (progn (org-babel-eval-wipe-error-buffer)
+ (org-babel-execute:sh
+ "exit 1" nil)
+ (org-babel-execute:sh
+ "exit 2" nil)
+ (with-current-buffer org-babel-error-buffer-name
+ (buffer-string))))))
(provide 'test-ob-shell)
--
2.38.1
[-- Attachment #3: Type: text/plain, Size: 246 bytes --]
--
"One can begin to reason only when a clear picture has been formed in
the imagination."
-- Walter Warwick Sawyer, Mathematician's Delight, 1943
Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia
next prev parent reply other threads:[~2022-10-26 12:03 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-13 15:14 Org 9.6-pre and Bash sessions Rudolf Adamkovič
2022-10-13 17:07 ` Michael Welle
2022-10-14 3:44 ` Ihor Radchenko
2022-10-15 20:56 ` Rudolf Adamkovič
2022-10-17 8:34 ` Ihor Radchenko
2022-10-21 5:29 ` Ihor Radchenko
2022-10-21 13:38 ` Rudolf Adamkovič
2022-10-22 4:22 ` Ihor Radchenko
2022-10-22 9:44 ` Rudolf Adamkovič
2022-10-22 10:59 ` Ihor Radchenko
2022-10-23 4:27 ` Ihor Radchenko
2022-10-26 11:56 ` Rudolf Adamkovič [this message]
2022-10-26 13:21 ` Rudolf Adamkovič
2022-10-27 3:53 ` Ihor Radchenko
2022-10-28 13:12 ` Rudolf Adamkovič
2022-10-28 13:29 ` Ihor Radchenko
2022-10-28 21:52 ` Rudolf Adamkovič
2022-10-29 4:05 ` [FR] Display stderr contents after executing shell blocks (even when stdout :results output is requested) (was: Org 9.6-pre and Bash sessions) Ihor Radchenko
2022-10-29 6:14 ` tomas
2022-10-29 6:43 ` Samuel Wales
2022-10-29 9:00 ` tomas
2022-10-29 9:09 ` Ihor Radchenko
2022-10-29 9:18 ` tomas
2022-10-30 3:31 ` Ihor Radchenko
2022-10-30 6:11 ` tomas
2022-10-30 7:09 ` Ihor Radchenko
2022-10-30 8:18 ` tomas
2022-10-29 11:58 ` Max Nikulin
2022-10-30 3:37 ` Ihor Radchenko
2022-10-30 20:28 ` Tim Cross
2022-10-31 1:13 ` Org babel API (was: [FR] Display stderr contents after executing shell blocks (even when stdout :results output is requested) (was: Org 9.6-pre and Bash sessions)) Ihor Radchenko
2022-10-31 2:03 ` Tim Cross
2022-10-31 3:12 ` Ihor Radchenko
2022-10-29 4:05 ` Org 9.6-pre and Bash sessions Ihor Radchenko
2022-11-03 16:30 ` Rudolf Adamkovič
2022-11-04 2:52 ` Ihor Radchenko
2022-11-05 1:12 ` Rudolf Adamkovič
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://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m21qqux0ga.fsf@me.com \
--to=salutis@me.com \
--cc=emacs-orgmode@gnu.org \
--cc=yantar92@gmail.com \
--cc=yantar92@posteo.net \
/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://git.savannah.gnu.org/cgit/emacs/org-mode.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).