0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-09-05 14:42:58 +00:00
org-mode/testing/lisp/test-property-inheritance.el
Eric Schulte 3af89e696a property names ending in plus accumulate
This results in the following behavior.

  #+property: var  foo=1
  #+property: var+ bar=2

  #+begin_src emacs-lisp
    (+ foo bar)
  #+end_src

  #+results:
  : 3

  #+begin_src emacs-lisp
    (org-entry-get (point) "var" t)
  #+end_src

  #+results:
  : foo=1 bar=2

  * overwriting a file-wide property
    :PROPERTIES:
    :var:      foo=7
    :END:

  #+begin_src emacs-lisp
    foo
  #+end_src

  #+results:
  : 7

  #+begin_src emacs-lisp
    (org-entry-get (point) "var" t)
  #+end_src

  #+results:
  : foo=7

  * appending to a file-wide property
    :PROPERTIES:
    :var+:      baz=3
    :END:

  #+begin_src emacs-lisp
    (+ foo bar baz)
  #+end_src

  #+results:
  : 6

  #+begin_src emacs-lisp
    (org-entry-get (point) "var" t)
  #+end_src

  #+results:
  : foo=1 bar=2 baz=3

* lisp/org.el (org-update-property-plist): Updates a given property
  list with a property name and a property value.
  (org-set-regexps-and-options): Use org-update-property-plist.
  (org-entry-get): Use org-update-property-plist.
* testing/examples/property-inheritance.org: Example file for testing
  appending property behavior.
* testing/lisp/test-property-inheritance.el: Tests of appending
  property behavior.
* lisp/ob.el (org-babel-balanced-split): Allow splitting on single
  characters as well as groups of two characters.
  (org-babel-parse-multiple-vars): Split variables on single spaces.
2011-11-15 08:56:24 -07:00

62 lines
1.9 KiB
EmacsLisp

;;; test-ob-R.el --- tests for ob-R.el
;; Copyright (c) 2011 Eric Schulte
;; Authors: Eric Schulte
;; Released under the GNU General Public License version 3
;; see: http://www.gnu.org/licenses/gpl-3.0.html
(let ((load-path (cons (expand-file-name
".." (file-name-directory
(or load-file-name buffer-file-name)))
load-path)))
(require 'org-test)
(require 'org-test-ob-consts))
(defmacro test-org-in-property-buffer (&rest body)
`(with-temp-buffer
(insert-file-contents (expand-file-name "property-inheritance.org"
org-test-example-dir))
(org-mode)
,@body))
(ert-deftest test-org-property-accumulation-top-use ()
(test-org-in-property-buffer
(goto-char (point-min))
(org-babel-next-src-block 1)
(should (equal 3 (org-babel-execute-src-block)))))
(ert-deftest test-org-property-accumulation-top-val ()
(test-org-in-property-buffer
(goto-char (point-min))
(org-babel-next-src-block 2)
(should (string= "foo=1 bar=2" (org-babel-execute-src-block)))))
(ert-deftest test-org-property-accumulation-overwrite-use ()
(test-org-in-property-buffer
(goto-char (point-min))
(org-babel-next-src-block 3)
(should (= 7 (org-babel-execute-src-block)))))
(ert-deftest test-org-property-accumulation-overwrite-val ()
(test-org-in-property-buffer
(goto-char (point-min))
(org-babel-next-src-block 4)
(should (string= "foo=7" (org-babel-execute-src-block)))))
(ert-deftest test-org-property-accumulation-append-use ()
(test-org-in-property-buffer
(goto-char (point-min))
(org-babel-next-src-block 5)
(should (= 6 (org-babel-execute-src-block)))))
(ert-deftest test-org-property-accumulation-append-val ()
(test-org-in-property-buffer
(goto-char (point-min))
(org-babel-next-src-block 6)
(should (string= "foo=1 bar=2 baz=3" (org-babel-execute-src-block)))))
(provide 'test-ob-R)
;;; test-ob-R.el ends here