0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-08-22 12:48:42 +00:00
org-mode/testing/lisp/test-ob-lilypond.el
Bastien Guerry ecd0562c5f Fix the master branch.
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.
2012-03-19 22:01:29 +01:00

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