Важной особенностью Python doctest является то, как его ввод выглядит как интерактивный сеанс REPL Python, как описано в документации doctest :
Модуль doctest ищет фрагментытекст, который выглядит как интерактивные сеансы Python, а затем выполняет эти сеансы, чтобы убедиться, что они работают точно так, как показано.
Я не знаю ни о каких средствах elisp, подобных этому, но я думаю, что вы можете достичьчто вы хотите, используя среду регрессионного тестирования Emacs Lisp (ERT) , которая поддерживает как интерактивное, так и пакетное выполнение теста.
Чтобы протестировать функцию org-get-timestamps
, вы можете определить тест следующим образом:
(require 'ert)
(ert-deftest org-timestamp-test ()
(should (equal
(org-get-timestamps "CLOCK: [2019-09-26 Thu 00:29]--[2019-09-26 Thu 01:11] => 0:42")
'("2019-09-26 Thu 00:29" "2019-09-26 Thu 01:11"))))
Чтобы запустить тест в интерактивном режиме, вы можете набрать Mx ert , нажать клавишу ввода, а затем либо снова нажать клавишу ввода, чтобы выбрать все тесты с использованием аргумента t
по умолчанию, либо ввестиимя теста для запуска и нажмите клавишу ввода, и результаты теста будут показаны в буфере *ert*
:
Selector: org-timestamp-test
Passed: 1
Failed: 0
Skipped: 0
Total: 1/1
Started at: 2019-09-27 08:44:57-0400
Finished.
Finished at: 2019-09-27 08:44:57-0400
.
Точка в точкесамый конец выше представляет тест, который был выполнен.Если было выполнено несколько тестов, было бы несколько точек.
Чтобы запустить тест в пакетном режиме, сохраните его в файл org-timestamp-test.el
и, предполагая, что функция org-get-timestamps
находится в файле org-timestamps.el
, запустите его какэто из командной строки вашей оболочки:
emacs -batch -l ert -l org-timestamps.el -l org-timestamp-test.el -f ert-run-tests-batch-and-exit
Результаты теста будут представлены в выводе оболочки:
Выполнение 1 теста (2019-09-27 06:03:09-0700) прошел 1/1 орг-тест отметки времени
Выполнен 1 тест, 1 ожидаемый результат (2019-09-27 06: 03: 09-0700)