mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-08-22 12:48:42 +00:00
I started from the 78ec8e commit then cherry-picked and squashed commits that have been done in master since then, except the bad commits that overwrote the tree (in master) with the tree in maint. This commit also bumps the version number to 7.8.06. The only "fix" that was made between 78ec8e and the previous commit is e0072f which has been reported to break stuff.
391 lines
13 KiB
EmacsLisp
391 lines
13 KiB
EmacsLisp
;;; test-ob-lilypond.el --- tests for ob-lilypond.el
|
|
|
|
;; Copyright (c) 2010-2012 Martyn Jago
|
|
;; Authors: Martyn Jago
|
|
|
|
;; Released under the GNU General Public License version 3
|
|
;; see: http://www.gnu.org/licenses/gpl-3.0.html
|
|
|
|
;;; Code:
|
|
(unless (featurep 'ob-lilypond)
|
|
(signal 'missing-test-dependency "Support for Lilypond code blocks"))
|
|
|
|
(save-excursion
|
|
(set-buffer (get-buffer-create "test-ob-lilypond.el"))
|
|
(setq ly-here
|
|
(file-name-directory
|
|
(or load-file-name (buffer-file-name)))))
|
|
|
|
(ert-deftest ob-lilypond/assert ()
|
|
(should t))
|
|
|
|
(ert-deftest ob-lilypond/feature-provision ()
|
|
(should (featurep 'ob-lilypond)))
|
|
|
|
(ert-deftest ob-lilypond/check-lilypond-alias ()
|
|
(should (fboundp 'lilypond-mode)))
|
|
|
|
(ert-deftest ob-lilypond/org-babel-tangle-lang-exts ()
|
|
(let ((found nil)
|
|
(list org-babel-tangle-lang-exts))
|
|
(while list
|
|
(when (equal (car list) '("LilyPond" . "ly"))
|
|
(setq found t))
|
|
(setq list (cdr list)))
|
|
(should found)))
|
|
|
|
(ert-deftest ob-lilypond/org-babel-prep-session:lilypond ()
|
|
(should-error (org-babel-prep-session:lilypond nil nil))
|
|
:type 'error)
|
|
|
|
(ert-deftest ob-lilypond/ly-version-const ()
|
|
(should (boundp 'ly-version)))
|
|
|
|
(ert-deftest ob-lilypond/ly-version-command ()
|
|
(should (equal "ob-lilypond version 7.6" (ly-version)))
|
|
(with-temp-buffer
|
|
(ly-version t)
|
|
(should (equal "ob-lilypond version 7.6"
|
|
(buffer-substring (point-min) (point-max))))))
|
|
|
|
(ert-deftest ob-lilypond/ly-compile-lilyfile ()
|
|
(should (equal
|
|
`(,(ly-determine-ly-path) ;program
|
|
nil ;infile
|
|
"*lilypond*" ;buffer
|
|
t ;display
|
|
,(if ly-gen-png "--png" "") ;&rest...
|
|
,(if ly-gen-html "--html" "")
|
|
,(if ly-gen-pdf "--pdf" "")
|
|
,(if ly-use-eps "-dbackend=eps" "")
|
|
,(if ly-gen-svg "-dbackend=svg" "")
|
|
"--output=test-file"
|
|
"test-file.ly")
|
|
(ly-compile-lilyfile "test-file.ly" t))))
|
|
|
|
(ert-deftest ob-lilypond/ly-compile-post-tangle ()
|
|
(should (boundp 'ly-compile-post-tangle)))
|
|
|
|
(ert-deftest ob-lilypond/ly-display-pdf-post-tangle ()
|
|
(should (boundp 'ly-display-pdf-post-tangle)))
|
|
|
|
(ert-deftest ob-lilypond/ly-play-midi-post-tangle ()
|
|
(should (boundp 'ly-play-midi-post-tangle)))
|
|
|
|
(ert-deftest ob-lilypond/ly-OSX-ly-path ()
|
|
(should (boundp 'ly-OSX-ly-path))
|
|
(should (stringp ly-OSX-ly-path)))
|
|
|
|
(ert-deftest ob-lilypond/ly-OSX-pdf-path ()
|
|
(should (boundp 'ly-OSX-pdf-path))
|
|
(should (stringp ly-OSX-pdf-path)))
|
|
|
|
(ert-deftest ob-lilypond/ly-OSX-midi-path ()
|
|
(should (boundp 'ly-OSX-midi-path))
|
|
(should (stringp ly-OSX-midi-path)))
|
|
|
|
(ert-deftest ob-lilypond/ly-nix-ly-path ()
|
|
(should (boundp 'ly-nix-ly-path))
|
|
(should (stringp ly-nix-ly-path)))
|
|
|
|
(ert-deftest ob-lilypond/ly-nix-pdf-path ()
|
|
(should (boundp 'ly-nix-pdf-path))
|
|
(should (stringp ly-nix-pdf-path)))
|
|
|
|
(ert-deftest ob-lilypond/ly-nix-midi-path ()
|
|
(should (boundp 'ly-nix-midi-path))
|
|
(should (stringp ly-nix-midi-path)))
|
|
|
|
(ert-deftest ob-lilypond/ly-win32-ly-path ()
|
|
(should (boundp 'ly-win32-ly-path))
|
|
(should (stringp ly-win32-ly-path)))
|
|
|
|
(ert-deftest ob-lilypond/ly-win32-pdf-path ()
|
|
(should (boundp 'ly-win32-pdf-path))
|
|
(should (stringp ly-win32-pdf-path)))
|
|
|
|
(ert-deftest ob-lilypond/ly-win32-midi-path ()
|
|
(should (boundp 'ly-win32-midi-path))
|
|
(should (stringp ly-win32-midi-path)))
|
|
|
|
(ert-deftest ob-lilypond/ly-gen-png ()
|
|
(should (boundp 'ly-gen-png)))
|
|
|
|
(ert-deftest ob-lilypond/ly-gen-svg ()
|
|
(should (boundp 'ly-gen-svg)))
|
|
|
|
(ert-deftest ob-lilypond/ly-gen-html ()
|
|
(should (boundp 'ly-gen-html)))
|
|
|
|
(ert-deftest ob-lilypond/ly-gen-html ()
|
|
(should (boundp 'ly-gen-pdf)))
|
|
|
|
(ert-deftest ob-lilypond/use-eps ()
|
|
(should (boundp 'ly-use-eps)))
|
|
|
|
(ert-deftest ob-lilypond/ly-arrange-mode ()
|
|
(should (boundp 'ly-arrange-mode)))
|
|
|
|
;; (ert-deftest ob-lilypond/org-babel-default-header-args:lilypond ()
|
|
;; (should (equal '((:tangle . "yes")
|
|
;; (:noweb . "yes")
|
|
;; (:results . "silent")
|
|
;; (:comments . "yes"))
|
|
;; org-babel-default-header-args:lilypond)))
|
|
|
|
;;TODO finish...
|
|
(ert-deftest ob-lilypond/org-babel-expand-body:lilypond ()
|
|
(should (equal "This is a test"
|
|
(org-babel-expand-body:lilypond "This is a test" ()))))
|
|
|
|
;;TODO (ert-deftest ly-test-org-babel-execute:lilypond ())
|
|
(ert-deftest ob-lilypond/ly-check-for-compile-error ()
|
|
(set-buffer (get-buffer-create "*lilypond*"))
|
|
(erase-buffer)
|
|
(should (not (ly-check-for-compile-error nil t)))
|
|
(insert-file-contents (concat ly-here
|
|
"../examples/ob-lilypond-test.error")
|
|
nil nil nil t)
|
|
(goto-char (point-min))
|
|
(should (ly-check-for-compile-error nil t))
|
|
(kill-buffer "*lilypond*"))
|
|
|
|
(ert-deftest ob-lilypond/ly-process-compile-error ()
|
|
(find-file-other-window (concat
|
|
ly-here
|
|
"../examples/ob-lilypond-broken.org"))
|
|
(set-buffer (get-buffer-create "*lilypond*"))
|
|
(insert-file-contents (concat
|
|
ly-here
|
|
"../examples/ob-lilypond-test.error")
|
|
nil nil nil t)
|
|
(goto-char (point-min))
|
|
(search-forward "error:" nil t)
|
|
(should-error
|
|
(ly-process-compile-error (concat
|
|
ly-here
|
|
"../examples/ob-lilypond-broken.ly"))
|
|
:type 'error)
|
|
(set-buffer "ob-lilypond-broken.org")
|
|
(should (equal 238 (point)))
|
|
(exchange-point-and-mark)
|
|
(should (equal (+ 238 (length "line 25")) (point)))
|
|
(kill-buffer "*lilypond*")
|
|
(kill-buffer "ob-lilypond-broken.org"))
|
|
|
|
(ert-deftest ob-lilypond/ly-mark-error-line ()
|
|
(let ((file-name (concat
|
|
ly-here
|
|
"../examples/ob-lilypond-broken.org"))
|
|
(expected-point-min 198)
|
|
(expected-point-max 205)
|
|
(line "line 20"))
|
|
(find-file-other-window file-name)
|
|
(ly-mark-error-line file-name line)
|
|
(should (equal expected-point-min (point)))
|
|
|
|
(exchange-point-and-mark)
|
|
(should (= expected-point-max (point)))
|
|
(kill-buffer (file-name-nondirectory file-name))))
|
|
|
|
(ert-deftest ob-lilypond/ly-parse-line-num ()
|
|
(with-temp-buffer
|
|
(insert-file-contents (concat
|
|
ly-here
|
|
"../examples/ob-lilypond-test.error")
|
|
nil nil nil t)
|
|
(goto-char (point-min))
|
|
(search-forward "error:")
|
|
(should (equal 25 (ly-parse-line-num (current-buffer))))))
|
|
|
|
(ert-deftest ob-lilypond/ly-parse-error-line ()
|
|
(let ((ly-file (concat
|
|
ly-here
|
|
"../examples/ob-lilypond-broken.ly")))
|
|
(should (equal "line 20"
|
|
(ly-parse-error-line ly-file 20)))
|
|
(should (not (ly-parse-error-line ly-file 0)))))
|
|
|
|
(ert-deftest ob-lilypond/ly-attempt-to-open-pdf ()
|
|
(let ((post-tangle ly-display-pdf-post-tangle)
|
|
(ly-file (concat
|
|
ly-here
|
|
"../examples/ob-lilypond-test.ly"))
|
|
(pdf-file (concat
|
|
ly-here
|
|
"../examples/ob-lilypond-test.pdf")))
|
|
(setq ly-display-pdf-post-tangle t)
|
|
(when (not (file-exists-p pdf-file))
|
|
(set-buffer (get-buffer-create (file-name-nondirectory pdf-file)))
|
|
(write-file pdf-file))
|
|
(should (equal
|
|
(concat
|
|
(ly-determine-pdf-path) " " pdf-file)
|
|
(ly-attempt-to-open-pdf ly-file t)))
|
|
(delete-file pdf-file)
|
|
(kill-buffer (file-name-nondirectory pdf-file))
|
|
(should (equal
|
|
"No pdf file generated so can't display!"
|
|
(ly-attempt-to-open-pdf pdf-file)))
|
|
(setq ly-display-pdf-post-tangle post-tangle)))
|
|
|
|
(ert-deftest ob-lilypond/ly-attempt-to-play-midi ()
|
|
(let ((post-tangle ly-play-midi-post-tangle)
|
|
(ly-file (concat
|
|
ly-here
|
|
"../examples/ob-lilypond-test.ly"))
|
|
(midi-file (concat
|
|
ly-here
|
|
"../examples/ob-lilypond-test.midi")))
|
|
(setq ly-play-midi-post-tangle t)
|
|
(when (not (file-exists-p midi-file))
|
|
(set-buffer (get-buffer-create (file-name-nondirectory midi-file)))
|
|
(write-file midi-file))
|
|
(should (equal
|
|
(concat
|
|
(ly-determine-midi-path) " " midi-file)
|
|
(ly-attempt-to-play-midi ly-file t)))
|
|
(delete-file midi-file)
|
|
(kill-buffer (file-name-nondirectory midi-file))
|
|
(should (equal
|
|
"No midi file generated so can't play!"
|
|
(ly-attempt-to-play-midi midi-file)))
|
|
(setq ly-play-midi-post-tangle post-tangle)))
|
|
|
|
(ert-deftest ob-lilypond/ly-determine-ly-path ()
|
|
(should (equal ly-OSX-ly-path
|
|
(ly-determine-ly-path "darwin")))
|
|
(should (equal ly-win32-ly-path
|
|
(ly-determine-ly-path "win32")))
|
|
(should (equal ly-nix-ly-path
|
|
(ly-determine-ly-path "nix"))))
|
|
|
|
(ert-deftest ob-lilypond/ly-determine-pdf-path ()
|
|
(should (equal ly-OSX-pdf-path
|
|
(ly-determine-pdf-path "darwin")))
|
|
(should (equal ly-win32-pdf-path
|
|
(ly-determine-pdf-path "win32")))
|
|
(should (equal ly-nix-pdf-path
|
|
(ly-determine-pdf-path "nix"))))
|
|
|
|
(ert-deftest ob-lilypond/ly-determine-midi-path ()
|
|
(should (equal ly-OSX-midi-path
|
|
(ly-determine-midi-path "darwin")))
|
|
(should (equal ly-win32-midi-path
|
|
(ly-determine-midi-path "win32")))
|
|
(should (equal ly-nix-midi-path
|
|
(ly-determine-midi-path "nix"))))
|
|
|
|
(ert-deftest ob-lilypond/ly-toggle-midi-play-toggles-flag ()
|
|
(if ly-play-midi-post-tangle
|
|
(progn
|
|
(ly-toggle-midi-play)
|
|
(should (not ly-play-midi-post-tangle))
|
|
(ly-toggle-midi-play)
|
|
(should ly-play-midi-post-tangle))
|
|
(ly-toggle-midi-play)
|
|
(should ly-play-midi-post-tangle)
|
|
(ly-toggle-midi-play)
|
|
(should (not ly-play-midi-post-tangle))))
|
|
|
|
(ert-deftest ob-lilypond/ly-toggle-pdf-display-toggles-flag ()
|
|
(if ly-display-pdf-post-tangle
|
|
(progn
|
|
(ly-toggle-pdf-display)
|
|
(should (not ly-display-pdf-post-tangle))
|
|
(ly-toggle-pdf-display)
|
|
(should ly-display-pdf-post-tangle))
|
|
(ly-toggle-pdf-display)
|
|
(should ly-display-pdf-post-tangle)
|
|
(ly-toggle-pdf-display)
|
|
(should (not ly-display-pdf-post-tangle))))
|
|
|
|
(ert-deftest ob-lilypond/ly-toggle-pdf-generation-toggles-flag ()
|
|
(if ly-gen-pdf
|
|
(progn
|
|
(ly-toggle-pdf-generation)
|
|
(should (not ly-gen-pdf))
|
|
(ly-toggle-pdf-generation)
|
|
(should ly-gen-pdf))
|
|
(ly-toggle-pdf-generation)
|
|
(should ly-gen-pdf)
|
|
(ly-toggle-pdf-generation)
|
|
(should (not ly-gen-pdf))))
|
|
|
|
(ert-deftest ob-lilypond/ly-toggle-arrange-mode ()
|
|
(if ly-arrange-mode
|
|
(progn
|
|
(ly-toggle-arrange-mode)
|
|
(should (not ly-arrange-mode))
|
|
(ly-toggle-arrange-mode)
|
|
(should ly-arrange-mode))
|
|
(ly-toggle-arrange-mode)
|
|
(should ly-arrange-mode)
|
|
(ly-toggle-arrange-mode)
|
|
(should (not ly-arrange-mode))))
|
|
|
|
(ert-deftest ob-lilypond/ly-toggle-png-generation-toggles-flag ()
|
|
(if ly-gen-png
|
|
(progn
|
|
(ly-toggle-png-generation)
|
|
(should (not ly-gen-png))
|
|
(ly-toggle-png-generation)
|
|
(should ly-gen-png))
|
|
(ly-toggle-png-generation)
|
|
(should ly-gen-png)
|
|
(ly-toggle-png-generation)
|
|
(should (not ly-gen-png))))
|
|
|
|
(ert-deftest ob-lilypond/ly-toggle-html-generation-toggles-flag ()
|
|
(if ly-gen-html
|
|
(progn
|
|
(ly-toggle-html-generation)
|
|
(should (not ly-gen-html))
|
|
(ly-toggle-html-generation)
|
|
(should ly-gen-html))
|
|
(ly-toggle-html-generation)
|
|
(should ly-gen-html)
|
|
(ly-toggle-html-generation)
|
|
(should (not ly-gen-html))))
|
|
|
|
(ert-deftest ob-lilypond/ly-switch-extension-with-extensions ()
|
|
(should (equal "test-name.xyz"
|
|
(ly-switch-extension "test-name" ".xyz")))
|
|
(should (equal "test-name.xyz"
|
|
(ly-switch-extension "test-name.abc" ".xyz")))
|
|
(should (equal "test-name"
|
|
(ly-switch-extension "test-name.abc" ""))))
|
|
|
|
(ert-deftest ob-lilypond/ly-switch-extension-with-paths ()
|
|
(should (equal "/some/path/to/test-name.xyz"
|
|
(ly-switch-extension "/some/path/to/test-name" ".xyz"))))
|
|
|
|
(ert-deftest ob-lilypond/ly-get-header-args ()
|
|
(should (equal '((:tangle . "yes")
|
|
(:noweb . "yes")
|
|
(:results . "silent")
|
|
(:cache . "yes")
|
|
(:comments . "yes"))
|
|
(ly-set-header-args t)))
|
|
(should (equal '((:results . "file")
|
|
(:exports . "results"))
|
|
(ly-set-header-args nil))))
|
|
|
|
(ert-deftest ob-lilypond/ly-set-header-args ()
|
|
(ly-set-header-args t)
|
|
(should (equal '((:tangle . "yes")
|
|
(:noweb . "yes")
|
|
(:results . "silent")
|
|
(:cache . "yes")
|
|
(:comments . "yes"))
|
|
org-babel-default-header-args:lilypond))
|
|
(ly-set-header-args nil)
|
|
(should (equal '((:results . "file")
|
|
(:exports . "results"))
|
|
org-babel-default-header-args:lilypond)))
|
|
|
|
(provide 'test-ob-lilypond)
|
|
|
|
;;; test-ob-lilypond.el ends here
|
|
|