123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485 |
- (require 'org-test)
- (ert-deftest test-org-src/basic ()
- "Editing regular block works, with point on source block."
- (org-test-with-temp-text
- "
- <point>#+begin_src emacs-lisp
- (message hello)
- #+end_src
- "
- (let ((org-edit-src-content-indentation 2)
- (org-src-preserve-indentation nil))
- (org-edit-special)
- (insert "blah")
- (org-edit-src-exit)
- (should (equal (buffer-string) "
- #+begin_src emacs-lisp
- blah(message hello)
- #+end_src
- "))
- (should (looking-at-p "(message hello)")))))
- (ert-deftest test-org-src/point-outside-block ()
- "Editing with point before/after block signals expected error."
- (org-test-with-temp-text
- "
- #+begin_src emacs-lisp
- (message hello)
- #+end_src
- "
- (goto-line 1)
- (should-error (org-edit-special))
- (goto-char (point-max))
- (should-error (org-edit-special))))
- (ert-deftest test-org-src/empty-block ()
- "Editing empty block."
- (org-test-with-temp-text
- "
- <point>#+begin_src emacs-lisp
- #+end_src
- "
- (let ((org-edit-src-content-indentation 0)
- (org-src-preserve-indentation nil))
- (org-edit-special)
- (insert "blah")
- (org-edit-src-exit)
- (should (equal (buffer-string) "
- #+begin_src emacs-lisp
- blah
- #+end_src
- "))
- (should
- (equal (buffer-substring (line-beginning-position) (point)) "blah")))))
- (ert-deftest test-org-src/blank-line-block ()
- "Editing block with just a blank line."
- (org-test-with-temp-text-in-file
- "
- #+begin_src emacs-lisp
- #+end_src
- "
- (let ((org-edit-src-content-indentation 2)
- (org-src-preserve-indentation nil))
- (goto-line 2)
- (org-edit-special)
- (insert "blah")
- (org-edit-src-exit)
- (should (equal (buffer-string) "
- #+begin_src emacs-lisp
- blah
- #+end_src
- ")))))
- (ert-deftest test-org-src/preserve-tabs ()
- "Editing block preserve tab characters."
-
- (should
- (equal "
- #+begin_src emacs-lisp
- This is a tab:\t.
- #+end_src"
- (org-test-with-temp-text
- "
- #+begin_src emacs-lisp
- <point>This is a tab:\t.
- #+end_src"
- (let ((org-edit-src-content-indentation 2)
- (org-src-preserve-indentation nil))
- (org-edit-special)
- (org-edit-src-exit)
- (buffer-string)))))
-
- (should
- (equal "
- #+begin_src emacs-lisp
- This is a tab:\t.
- #+end_src"
- (org-test-with-temp-text
- "
- #+begin_src emacs-lisp
- <point>This is a tab:\t.
- #+end_src"
- (let ((org-edit-src-content-indentation 2)
- (org-src-preserve-indentation t))
- (org-edit-special)
- (org-edit-src-exit)
- (buffer-string))))))
- (ert-deftest test-org-src/coderef-format ()
- "Test `org-src-coderef-format' specifications."
-
-
- (should
- (equal "foo"
- (let ((org-coderef-label-format "foo"))
- (org-test-with-temp-text "#+BEGIN_SRC emacs-lisp\n0\n#+END_SRC"
- (org-src-coderef-format)))))
- (should
- (equal "foo"
- (let ((org-coderef-label-format "foo"))
- (org-test-with-temp-text "#+BEGIN_EXAMPLE\n0\n#+END_EXAMPLE"
- (org-src-coderef-format)))))
- (should
- (equal "foo"
- (let ((org-coderef-label-format "foo") result)
- (org-test-with-temp-text "#+BEGIN_SRC emacs-lisp\n0\n#+END_SRC"
- (org-edit-special)
- (setq result (org-src-coderef-format))
- (org-edit-src-exit)
- result))))
-
- (should
- (equal "bar"
- (let ((org-coderef-label-format "foo"))
- (org-test-with-temp-text "#+BEGIN_SRC emacs-lisp\n0\n#+END_SRC"
- (setq-local org-coderef-label-format "bar")
- (org-src-coderef-format)))))
- (should
- (equal "bar"
- (let ((org-coderef-label-format "foo") result)
- (org-test-with-temp-text "#+BEGIN_SRC emacs-lisp\n0\n#+END_SRC"
- (setq-local org-coderef-label-format "bar")
- (org-edit-special)
- (setq result (org-src-coderef-format))
- (org-edit-src-exit)
- result))))
-
- (should
- (equal "bar"
- (let ((org-coderef-label-format "foo"))
- (org-test-with-temp-text
- "#+BEGIN_SRC emacs-lisp -l \"bar\"\n0\n#+END_SRC"
- (org-src-coderef-format)))))
- (should
- (equal "bar"
- (let ((org-coderef-label-format "foo") result)
- (org-test-with-temp-text
- "#+BEGIN_SRC emacs-lisp -l \"bar\"\n0\n#+END_SRC"
- (org-edit-special)
- (setq result (org-src-coderef-format))
- (org-edit-src-exit)
- result))))
-
- (should
- (equal "bar"
- (let ((org-coderef-label-format "foo"))
- (org-test-with-temp-text
- "#+BEGIN_SRC emacs-lisp -l \"bar\"\n0\n#+END_SRC"
- (setq-local org-coderef-label-format "foo")
- (org-src-coderef-format)))))
- (should
- (equal "bar"
- (let ((org-coderef-label-format "foo") result)
- (org-test-with-temp-text
- "#+BEGIN_SRC emacs-lisp -l \"bar\"\n0\n#+END_SRC"
- (setq-local org-coderef-label-format "foo")
- (org-edit-special)
- (setq result (org-src-coderef-format))
- (org-edit-src-exit)
- result))))
-
- (should
- (equal "bar"
- (let ((org-coderef-label-format "foo")
- (element (org-element-create 'src-block '(:label-fmt "bar"))))
- (org-test-with-temp-text "#+BEGIN_SRC emacs-lisp\n0\n#+END_SRC"
- (org-src-coderef-format element)))))
- (should
- (equal "baz"
- (let ((org-coderef-label-format "foo")
- (element (org-element-create 'src-block '(:label-fmt "baz"))))
- (org-test-with-temp-text
- "#+BEGIN_SRC emacs-lisp -l \"bar\"\n0\n#+END_SRC"
- (setq-local org-coderef-label-format "foo")
- (org-src-coderef-format element)))))
-
-
- (should
- (equal "foo"
- (let ((org-coderef-label-format "foo")
- (element (org-element-create 'src-block)))
- (org-test-with-temp-text "#+BEGIN_SRC emacs-lisp\n0\n#+END_SRC"
- (org-src-coderef-format element)))))
- (should
- (equal "bar"
- (let ((org-coderef-label-format "foo")
- (element (org-element-create 'src-block)))
- (org-test-with-temp-text
- "#+BEGIN_SRC emacs-lisp -l \"bar\"\n0\n#+END_SRC"
- (setq-local org-coderef-label-format "foo")
- (org-src-coderef-format element))))))
- (ert-deftest test-org-src/coderef-regexp ()
- "Test `org-src-coderef-regexp' specifications."
-
- (should
- (string-match-p (org-src-coderef-regexp "; ref:%s")
- "#+BEGIN_SRC emacs-lisp\n0; ref:label\n#+END_SRC"))
-
- (should
- (string-match-p (org-src-coderef-regexp "; ref:%s")
- "#+BEGIN_SRC emacs-lisp\n0 ; ref:label\n#+END_SRC"))
- (should
- (string-match-p (org-src-coderef-regexp "; ref:%s")
- "#+BEGIN_SRC emacs-lisp\n0 ; ref:label \n#+END_SRC"))
-
- (should-not
- (string-match-p (org-src-coderef-regexp "; ref:%s")
- "#+BEGIN_SRC emacs-lisp\n0; ref:label (+ 1 2)\n#+END_SRC"))
-
- (should-not
- (string-match-p (org-src-coderef-regexp "; ref:%s")
- "#+BEGIN_SRC emacs-lisp\n0; ref:\n#+END_SRC"))
-
- (should
- (string-match-p (org-src-coderef-regexp "; ref:%s" "label")
- "#+BEGIN_SRC emacs-lisp\n0; ref:label\n#+END_SRC"))
- (should-not
- (string-match-p (org-src-coderef-regexp "; ref:%s" "label2")
- "#+BEGIN_SRC emacs-lisp\n0; ref:label\n#+END_SRC")))
- (ert-deftest test-org-src/indented-blocks ()
- "Test editing indented blocks."
-
-
- (should
- (equal
- "- Item\n #+BEGIN_SRC emacs-lisp\n Foo\n #+END_SRC"
- (org-test-with-temp-text
- "- Item\n<point> #+BEGIN_SRC emacs-lisp\n (+ 1 1)\n #+END_SRC"
- (let ((org-edit-src-content-indentation 2)
- (org-src-preserve-indentation nil))
- (org-edit-special)
- (erase-buffer)
- (insert "Foo")
- (org-edit-src-exit)
- (buffer-string)))))
- (should
- (equal
- "- Item\n #+BEGIN_SRC emacs-lisp\n Foo\n #+END_SRC"
- (org-test-with-temp-text
- "- Item\n<point> #+BEGIN_SRC emacs-lisp\n (+ 1 1)\n #+END_SRC"
- (let ((org-src-preserve-indentation t))
- (org-edit-special)
- (erase-buffer)
- (insert " Foo")
- (org-edit-src-exit)
- (buffer-string)))))
-
-
- (should
- (string-match-p
- "^\t+\s*argument2"
- (org-test-with-temp-text
- "
- - Item
- #+BEGIN_SRC emacs-lisp<point>
- (progn
- (function argument1
- argument2))
- #+END_SRC"
- (setq-local indent-tabs-mode t)
- (let ((org-edit-src-content-indentation 2)
- (org-src-preserve-indentation nil))
- (org-edit-special)
- (org-edit-src-exit)
- (buffer-string)))))
- (should
- (string-match-p
- "^\s+argument2"
- (org-test-with-temp-text
- "
- - Item
- #+BEGIN_SRC emacs-lisp<point>
- (progn\n (function argument1\n\t\targument2))
- #+END_SRC"
- (setq-local indent-tabs-mode nil)
- (let ((org-edit-src-content-indentation 2)
- (org-src-preserve-indentation nil))
- (org-edit-special)
- (org-edit-src-exit)
- (buffer-string)))))
-
- (should
- (string-match-p
- "^\t\\{3\\}\s\\{2\\}argument2"
- (org-test-with-temp-text
- "
- - Item
- #+BEGIN_SRC emacs-lisp<point>
- (progn
- (function argument1
- argument2))
- #+END_SRC"
- (setq-local indent-tabs-mode t)
- (setq-local tab-width 4)
- (let ((org-edit-src-content-indentation 0)
- (org-src-preserve-indentation nil))
- (org-edit-special)
- (org-edit-src-exit)
- (buffer-string)))))
- (should
- (string-match-p
- "^\t\s\\{6\\}argument2"
- (org-test-with-temp-text
- "
- - Item
- #+BEGIN_SRC emacs-lisp<point>
- (progn
- (function argument1
- argument2))
- #+END_SRC"
- (setq-local indent-tabs-mode t)
- (setq-local tab-width 8)
- (let ((org-edit-src-content-indentation 0)
- (org-src-preserve-indentation nil))
- (org-edit-special)
- (org-edit-src-exit)
- (buffer-string))))))
- (ert-deftest test-org-src/footnote-references ()
- "Test editing footnote references."
-
- (should-error
- (org-test-with-temp-text "A footnote<point>[fn:1]"
- (org-edit-special)))
-
- (should-error
- (org-test-with-temp-text "A footnote[fn::<point>edit me!]"
- (org-edit-special)))
-
- (should
- (equal "[fn:1] Definition"
- (org-test-with-temp-text "A footnote<point>[fn:1]\n[fn:1] Definition"
- (org-edit-special)
- (prog1 (buffer-string) (org-edit-src-exit)))))
-
- (should
- (org-test-with-temp-text "A footnote<point>[fn:1]\n[fn:1] Definition"
- (org-edit-special)
- (prog1 (get-text-property 0 'read-only (buffer-string))
- (org-edit-src-exit))))
- (should
- (org-test-with-temp-text "A footnote<point>[fn:1]\n[fn:1] Definition"
- (org-edit-special)
- (prog1 (get-text-property 5 'read-only (buffer-string))
- (org-edit-src-exit))))
-
- (should
- (equal
- "A footnote[fn:1][fn:2]\n[fn:1] D1\n\n[fn:2] D2"
- (org-test-with-temp-text
- "A footnote<point>[fn:1][fn:2]\n[fn:1] D1\n\n[fn:2] D2"
- (org-edit-special)
- (org-edit-src-exit)
- (buffer-string))))
-
- (should
- (equal
- "[fn:1:definition]"
- (org-test-with-temp-text
- "An inline<point>[fn:1] footnote[fn:1:definition]"
- (org-edit-special)
- (prog1 (buffer-string) (org-edit-src-exit)))))
-
-
- (should
- (org-test-with-temp-text "An inline<point>[fn:1] footnote[fn:1:definition]"
- (org-edit-special)
- (prog1 (get-text-property 0 'read-only (buffer-string))
- (org-edit-src-exit))))
- (should
- (org-test-with-temp-text "An inline<point>[fn:1] footnote[fn:1:definition]"
- (org-edit-special)
- (prog1 (get-text-property 5 'read-only (buffer-string))
- (org-edit-src-exit))))
- (should
- (org-test-with-temp-text "An inline<point>[fn:1] footnote[fn:1:definition]"
- (org-edit-special)
- (prog1 (get-text-property 16 'read-only (buffer-string))
- (org-edit-src-exit))))
-
-
- (should
- (equal
- "[fn:1:definition]"
- (org-test-with-temp-text
- "An inline<point>[fn:1] footnote[fn:1:definition] and some text"
- (org-edit-special)
- (prog1 (buffer-string) (org-edit-src-exit)))))
-
- (should
- (eq 'bar
- (org-test-with-temp-text "A footnote<point>[fn:1]\n[fn:1] Definition"
- (setq-local foo 'bar)
- (org-edit-special)
- (prog1 foo (org-edit-src-exit))))))
- (ert-deftest test-org-src/escape-code-in-string ()
- "Test `org-escape-code-in-string' specifications."
-
- (should (equal ",*" (org-escape-code-in-string "*")))
- (should (equal ",#+" (org-escape-code-in-string "#+")))
-
-
- (should (equal ",,*" (org-escape-code-in-string ",*")))
- (should (equal ",,#+" (org-escape-code-in-string ",#+")))
- (should (equal ",,,*" (org-escape-code-in-string ",,*")))
- (should (equal ",,,#+" (org-escape-code-in-string ",,#+")))
-
- (should (equal " ,*" (org-escape-code-in-string " *")))
- (should (equal " ,#+" (org-escape-code-in-string " #+")))
-
- (should (equal "a" (org-escape-code-in-string "a")))
- (should (equal "#" (org-escape-code-in-string "#")))
- (should (equal "," (org-escape-code-in-string ","))))
- (ert-deftest test-org-src/unescape-code-in-string ()
- "Test `org-unescape-code-in-string' specifications."
-
-
- (should (equal "*" (org-unescape-code-in-string ",*")))
- (should (equal "#+" (org-unescape-code-in-string ",#+")))
- (should (equal ",*" (org-unescape-code-in-string ",,*")))
- (should (equal ",#+" (org-unescape-code-in-string ",,#+")))
-
- (should (equal " *" (org-unescape-code-in-string " ,*")))
- (should (equal " #+" (org-unescape-code-in-string " ,#+")))
-
- (should (equal "a" (org-unescape-code-in-string "a")))
- (should (equal "#" (org-unescape-code-in-string "#")))
- (should (equal "," (org-unescape-code-in-string ","))))
- (provide 'test-org-src)
|