From mboxrd@z Thu Jan 1 00:00:00 1970 From: Litvinov Sergey Subject: [BABEL,PATCH] call awk with no input Date: Sun, 24 Jul 2011 12:39:37 +0200 Message-ID: <87livo9d3q.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([140.186.70.92]:41483) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qkw6G-00030j-OD for emacs-orgmode@gnu.org; Sun, 24 Jul 2011 06:39:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qkw6F-0001Ec-7n for emacs-orgmode@gnu.org; Sun, 24 Jul 2011 06:39:56 -0400 Received: from lo.gmane.org ([80.91.229.12]:49428) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qkw6E-0001EW-U1 for emacs-orgmode@gnu.org; Sun, 24 Jul 2011 06:39:55 -0400 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1Qkw6B-0007vk-2M for emacs-orgmode@gnu.org; Sun, 24 Jul 2011 12:39:51 +0200 Received: from e181020011.adsl.alicedsl.de ([85.181.20.11]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 24 Jul 2011 12:39:51 +0200 Received: from slitvinov by e181020011.adsl.alicedsl.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 24 Jul 2011 12:39:51 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org --=-=-= Content-Type: text/plain Please consider this tiny fix to execute awk program with no input. Example with gawk: gawk --posix 'BEGIN {print 42}' I also added some tests for ob-awk. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Awk-can-be-called-with-no-in-file-and-no-stdin.patch Content-Description: awk-ob-patch >From 868fa910254c48752801cdc7849c3eb4db63f811 Mon Sep 17 00:00:00 2001 From: Litvinov Sergey Date: Sun, 24 Jul 2011 12:28:35 +0200 Subject: [PATCH] Awk can be called with no in-file: and no :stdin --- lisp/ob-awk.el | 6 +--- testing/README.org | 1 + testing/examples/ob-awk-test.in | 2 + testing/examples/ob-awk-test.org | 39 ++++++++++++++++++++++++++++++++++++++ testing/lisp/test-ob-awk.el | 19 ++++++++++++++++++ 5 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 testing/examples/ob-awk-test.in create mode 100644 testing/examples/ob-awk-test.org create mode 100644 testing/lisp/test-ob-awk.el diff --git a/lisp/ob-awk.el b/lisp/ob-awk.el index d5098bc..cfed04a 100644 --- a/lisp/ob-awk.el +++ b/lisp/ob-awk.el @@ -26,8 +26,7 @@ ;;; Commentary: -;; Babel's awk support relies on two special header argument one of -;; which is required to pass data to the awk process. +;; Babel's awk can use special header argument: ;; ;; - :in-file takes a path to a file of data to be processed by awk ;; @@ -89,11 +88,10 @@ called by `org-babel-execute-src-block'" (with-temp-file tmp (insert results)) (org-babel-import-elisp-from-file tmp))))) (cond - (in-file (org-babel-eval cmd "")) (stdin (with-temp-buffer (call-process-shell-command cmd stdin (current-buffer)) (buffer-string))) - (t (error "ob-awk: must specify either :in-file or :stdin")))) + (t (org-babel-eval cmd "")))) (org-babel-pick-name (cdr (assoc :colname-names params)) (cdr (assoc :colnames params))) (org-babel-pick-name diff --git a/testing/README.org b/testing/README.org index 3cc0487..2f16a55 100644 --- a/testing/README.org +++ b/testing/README.org @@ -78,6 +78,7 @@ First tangle this file out to your desktop. (org-id-update-id-locations (list (concat org-dir "/testing/examples/babel.org") (concat org-dir "/testing/examples/normal.org") + (concat org-dir "/testing/examples/ob-awk-test.org") (concat org-dir "/testing/examples/ob-fortran-test.org") (concat org-dir "/testing/examples/link-in-heading.org") (concat org-dir "/testing/examples/links.org"))) diff --git a/testing/examples/ob-awk-test.in b/testing/examples/ob-awk-test.in new file mode 100644 index 0000000..c38382d --- /dev/null +++ b/testing/examples/ob-awk-test.in @@ -0,0 +1,2 @@ + # an input file for awk test +15 \ No newline at end of file diff --git a/testing/examples/ob-awk-test.org b/testing/examples/ob-awk-test.org new file mode 100644 index 0000000..7f51772 --- /dev/null +++ b/testing/examples/ob-awk-test.org @@ -0,0 +1,39 @@ +#+Title: a collection of examples for ob-awk tests +#+OPTIONS: ^:nil + +* Simple tests + :PROPERTIES: + :ID: 9e998b2a-3581-43fe-b26d-07d3c507b86a + :END: +Run without input stream +#+begin_src awk :ouput silent :results silent + BEGIN { + print 42 + } +#+end_src + +Use a code block ouput as an input +#+begin_src awk :stdin genseq :results silent + { + print 42+$1 + } +#+end_src + +Use input file +#+srcname: genfile +#+begin_src awk :in-file ob-awk-test.in :results silent + $0~/[\t]*#/{ + # skip comments + next + } + { + print $1*10 + } +#+end_src + +* Input data generators +A code block to generate input stream +#+srcname: genseq +#+begin_src emacs-lisp :results silent +(print "1") +#+end_src diff --git a/testing/lisp/test-ob-awk.el b/testing/lisp/test-ob-awk.el new file mode 100644 index 0000000..018dec4 --- /dev/null +++ b/testing/lisp/test-ob-awk.el @@ -0,0 +1,19 @@ +(require 'ob-awk) + +(ert-deftest ob-awk/input-none () + "Test with no input file" + (org-test-at-id "9e998b2a-3581-43fe-b26d-07d3c507b86a" + (org-babel-next-src-block) + (should (= 42 (org-babel-execute-src-block))))) + +(ert-deftest ob-awk/input-src-block () + "Test a code block as an input" + (org-test-at-id "9e998b2a-3581-43fe-b26d-07d3c507b86a" + (org-babel-next-src-block 2) + (should (= 43 (org-babel-execute-src-block))))) + +(ert-deftest ob-awk/input-src-block () + "Test a code block as an input" + (org-test-at-id "9e998b2a-3581-43fe-b26d-07d3c507b86a" + (org-babel-next-src-block 3) + (should (= 150 (org-babel-execute-src-block))))) -- 1.7.4.1 --=-=-=--