jeudi 26 septembre 2019

Can I doc-test ELisp functions?

I like the Python feature of doc-tests for testing functions independently. Does Emacs Lisp have something similar, or could I emulate it in some way?

For example, this function gets timestamps from an Org-mode clock segment:

(defun org-get-timestamps (line)
  "Parses a clock segment line and returns the first and last timestamps in a list."
  (let* ((org-clock-regexp (concat "CLOCK: " org-ts-regexp3 "--" org-ts-regexp3))
     (t1 (if (string-match org-clock-regexp line)
         (match-string 1 line)
           (user-error "The argument must have a valid CLOCK range")))
     (t2 (match-string 9 line)))
    (cons t1 (cons t2 '()))))

I would like a doc-test such as:

(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")

A test of the user-error would also be nice.

I also would like to ensure that any refactoring passes the doc-test, so it's also a regression test.

Does that exist?

Aucun commentaire:

Enregistrer un commentaire