0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-07-15 16:46:27 +00:00

was passing all test, but either found or created a new bug in R code evaluation

This commit is contained in:
Eric Schulte 2009-05-22 06:52:25 -07:00
parent 73163718ca
commit cc622b1383

173
rorg.org
View file

@ -18,38 +18,6 @@
argument, and the default behavior could be controlled through a
configuration variable.
** TODO results name
In order to do this we will need to start naming our results.
Since the source blocks are named with =#+srcname:= lines we can
name results with =#+resname:= lines (if the source block has no
name then no name is given to the =#+resname:= line on creation,
otherwise the name of the source block is used).
This will have the additional benefit of allowing results and
source blocks to be located in different places in a buffer (and
eventually in different buffers entirely).
#+srcname: developing-resnames
#+begin_src emacs-lisp :results silent
'schulte
#+end_src
Once source blocks are able to find their own =#+resname:= lines
we then need to...
#+srcname: sbe-w-new-results
#+begin_src emacs-lisp :results replace
(sbe "developing-resnames")
#+end_src
#+resname:
: schulte
*** TODO change the results insertion functions to use these lines
*** TODO teach references to resolve =#+resname= lines.
** TODO re-implement R evaluation using ess-command or ess-execute
I don't have any complaints with the current R evaluation code or
behaviour, but I think it would be good to use the ESS functions
@ -245,6 +213,37 @@ mean(mean(vec))
posterity. Same for a shell session either in a *shell* buffer, or
pasted from another terminal emulator. And python of course.
** DONE results name
In order to do this we will need to start naming our results.
Since the source blocks are named with =#+srcname:= lines we can
name results with =#+resname:= lines (if the source block has no
name then no name is given to the =#+resname:= line on creation,
otherwise the name of the source block is used).
This will have the additional benefit of allowing results and
source blocks to be located in different places in a buffer (and
eventually in different buffers entirely).
#+srcname: developing-resnames
#+begin_src emacs-lisp :results silent
'schulte
#+end_src
Once source blocks are able to find their own =#+resname:= lines
we then need to...
#+srcname: sbe-w-new-results
#+begin_src emacs-lisp :results replace
(sbe "developing-resnames")
#+end_src
#+resname:
: schulte
*** TODO change the results insertion functions to use these lines
*** TODO teach references to resolve =#+resname= lines.
** DONE litorgy tests litorgy [1/1]
since we are accumulating this nice collection of source-code blocks
in the sandbox section we should make use of them as unit tests.
@ -424,13 +423,40 @@ example in the [[* emacs lisp source reference][emacs lisp source reference]].
* Bugs [6/8]
* Bugs [7/9]
** TODO R code execution seems to choke on certain inputs
#+srcname: set-debug-on-error
#+begin_src emacs-lisp :results silent
(setq debug-on-error t)
#+end_src
#+srcname: bug-numerical-table
#+begin_src emacs-lisp :results silent
'(1 2 3)
#+end_src
#+srcname: bug-R-number-evaluation
#+begin_src R :var table=bug-numerical-table :results silent
mean(table)
#+end_src
** TODO cursor movement when evaluating source blocks
E.g. the pie chart example. Despite the save-window-excursion in
litorgy-execute:R. (I never learned how to do this properly: org-R
jumps all over the place...)
** TODO with :results replace, non-table output doesn't replace table output
** DEFERRED org bug/request: prevent certain org behaviour within code blocks
E.g. [[]] gets recognised as a link (when there's text inside the
brackets). This is bad for R code at least, and more generally
could be argued to be inappropriate. Is it difficult to get org to
ignore text in code blocks? [DED]
I believe Carsten addressed this recently on the mailing list with
the comment that it was indeed a difficult issue. I believe this
may be one area where we could wait for an upstream (org-mode) fix.
** DONE with :results replace, non-table output doesn't replace table output
And vice versa. E.g. Try this first with table and then with len(table) [DED]
#+begin_src python :var table=sandbox :results replace
table
@ -461,16 +487,6 @@ This would have a couple of benefits...
Thoughts? If no-one objects, I believe I will implement the labeling
of results.
** DEFERRED org bug/request: prevent certain org behaviour within code blocks
E.g. [[]] gets recognised as a link (when there's text inside the
brackets). This is bad for R code at least, and more generally
could be argued to be inappropriate. Is it difficult to get org to
ignore text in code blocks? [DED]
I believe Carsten addressed this recently on the mailing list with
the comment that it was indeed a difficult issue. I believe this
may be one area where we could wait for an upstream (org-mode) fix.
** DONE extra quotes for nested string
Well R appears to be reading the tables without issue...
@ -575,40 +591,41 @@ Evaluate all the cells in this table for a comprehensive test of the
litorgy functionality.
#+TBLNAME: litorgy-tests
| functionality | block | arg | expected | results | pass |
|-------------------------+------------------+-----+-------------+-------------+------|
| basic evaluation | | | | | pass |
|-------------------------+------------------+-----+-------------+-------------+------|
| emacs lisp | basic-elisp | | 5 | 5 | pass |
| shell | basic-shell | | 6 | 6 | pass |
| ruby | basic-ruby | | litorgy | litorgy | pass |
| python | basic-python | | hello world | hello world | pass |
| R | basic-R | | 13 | 13 | pass |
|-------------------------+------------------+-----+-------------+-------------+------|
| tables | | | | | pass |
|-------------------------+------------------+-----+-------------+-------------+------|
| emacs lisp | table-elisp | | 3 | 3 | pass |
| ruby | table-ruby | | 1-2-3 | 1-2-3 | pass |
| python | table-python | | 5 | 5 | pass |
| R | table-R | | 3.5 | 3.5 | pass |
|-------------------------+------------------+-----+-------------+-------------+------|
| source block references | | | | | pass |
|-------------------------+------------------+-----+-------------+-------------+------|
| all languages | chained-ref-last | | Array | Array | pass |
|-------------------------+------------------+-----+-------------+-------------+------|
| source block functions | | | | | pass |
|-------------------------+------------------+-----+-------------+-------------+------|
| emacs lisp | defun-fibb | | fibbd | fibbd | pass |
| run over | Fibonacci | 0 | 1 | 1 | pass |
| a | Fibonacci | 1 | 1 | 1 | pass |
| variety | Fibonacci | 2 | 2 | 2 | pass |
| of | Fibonacci | 3 | 3 | 3 | pass |
| different | Fibonacci | 4 | 5 | 5 | pass |
| arguments | Fibonacci | 5 | 8 | 8 | pass |
|-------------------------+------------------+-----+-------------+-------------+------|
| bug fixing | | | | | pass |
|-------------------------+------------------+-----+-------------+-------------+------|
| simple ruby arrays | ruby-array-test | | 3 | 3 | pass |
| functionality | block | arg | expected | results | pass |
|-------------------------+-------------------------+-----+-------------+-------------+-------------------------------|
| basic evaluation | | | | | pass |
|-------------------------+-------------------------+-----+-------------+-------------+-------------------------------|
| emacs lisp | basic-elisp | | 5 | 5 | pass |
| shell | basic-shell | | 6 | 6 | pass |
| ruby | basic-ruby | | litorgy | litorgy | pass |
| python | basic-python | | hello world | hello world | pass |
| R | basic-R | | 13 | 13 | pass |
|-------------------------+-------------------------+-----+-------------+-------------+-------------------------------|
| tables | | | | | pass |
|-------------------------+-------------------------+-----+-------------+-------------+-------------------------------|
| emacs lisp | table-elisp | | 3 | 3 | pass |
| ruby | table-ruby | | 1-2-3 | 1-2-3 | pass |
| python | table-python | | 5 | 5 | pass |
| R | table-R | | 3.5 | 3.5 | pass |
|-------------------------+-------------------------+-----+-------------+-------------+-------------------------------|
| source block references | | | | | pass |
|-------------------------+-------------------------+-----+-------------+-------------+-------------------------------|
| all languages | chained-ref-last | | Array | Array | pass |
|-------------------------+-------------------------+-----+-------------+-------------+-------------------------------|
| source block functions | | | | | pass |
|-------------------------+-------------------------+-----+-------------+-------------+-------------------------------|
| emacs lisp | defun-fibb | | fibbd | fibbd | pass |
| run over | Fibonacci | 0 | 1 | 1 | pass |
| a | Fibonacci | 1 | 1 | 1 | pass |
| variety | Fibonacci | 2 | 2 | 2 | pass |
| of | Fibonacci | 3 | 3 | 3 | pass |
| different | Fibonacci | 4 | 5 | 5 | pass |
| arguments | Fibonacci | 5 | 8 | 8 | pass |
|-------------------------+-------------------------+-----+-------------+-------------+-------------------------------|
| bug fixing | | | | | pass |
|-------------------------+-------------------------+-----+-------------+-------------+-------------------------------|
| simple ruby arrays | ruby-array-test | | 3 | 3 | pass |
| R number evaluation | bug-R-number-evaluation | | 2 | #ERROR | expected "2" but was "#ERROR" |
#+TBLFM: $5='(if (= (length $3) 1) (progn (message (format "running %S" '(sbe $2 (n $3)))) (sbe $2 (n $3))) (sbe $2))::$6='(if (string= $4 $5) "pass" (format "expected %S but was %S" $4 $5))
** basic tests