#unit-testing #matlab #emacs
#модульное тестирование #matlab #emacs
Вопрос:
Я использую Emacs matlab-mode в качестве среды разработки Matlab. У меня также установлен MTEST вместе с Matlab для запуска моих модульных тестов — что я хочу сделать сейчас, так это иметь привязку ключа, которая запускает тесты из текущего файла в оболочке matlab, которую я постоянно открываю вокруг ( M-x matlab-shell
) .
До сих пор у меня было:
; Runs the unit tests available in the current buffer
(defun run-matlab-test ()
(interactive)
(matlab-shell-run-command (concat "runtests "
(car (split-string (buffer-name) "\.")))))
; Bind "C-c l" to running unit tests in matlab-mode
(defun map-run-matlab-test-keys ()
(local-set-key (kbd "C-c l") 'run-matlab-test))
(add-hook 'matlab-mode-hook 'map-run-matlab-test-keys)
Что мне нужно сделать, так это в run-matlab-test
функции иметь способ вызова runtests
команды с параметром, предоставленным (buffer-name)
командой, и все это должно происходить в оболочке matlab, о которой я упоминал выше. Какие-либо подсказки?
Редактировать: мне удалось заставить его работать, позвонив matlab-shell-run-command
. Предостережение здесь заключается в том, что оно работает только в том случае, если начальная последовательность такова: откройте свой unit-test.m
файл, запустите этот файл M-x matlab-shell
(таким образом, matlab запускается с текущего рабочего каталога в каталоге тестов), а затем вы можете использовать вышеуказанную привязку.
Ответ №1:
Чтобы избежать вашего предостережения выше, вы, вероятно, могли бы отправить компакт-диск в matlab перед вызовом runtest, выполнив что-то вроде следующего (непроверенного):
(defun run-matlab-test ()
(interactive)
(matlab-shell-run-command (concat "cd " (file-name-directory (buffer-file-name))))
(matlab-shell-run-command (concat "runtests "
(car (split-string (buffer-name) "\.")))))