forked from rswgnu/hyperbole
-
Notifications
You must be signed in to change notification settings - Fork 0
/
hypb-ert.el
67 lines (55 loc) · 1.86 KB
/
hypb-ert.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
;;; hypb-ert.el --- Hyperbole test runner action button types -*- lexical-binding: t; -*-
;; Author: Mats Lidell <[email protected]> and Bob Weiner <[email protected]>
;;
;; Orig-Date: 31-Mar-21 at 21:11:00
;; Last-Mod: 11-May-22 at 00:00:42 by Bob Weiner
;;
;; Copyright (C) 2021 Free Software Foundation, Inc.
;; See the "HY-COPY" file for license information.
;;
;; This file is part of GNU Hyperbole.
;;; Commentary:
;; Creates two action link implicit button types for running any Hyperbole test
;; defined in "${hyperb:dir}/test/".
;;
;; Examples:
;; Run the test named hbut-defal-url:
;; <hyperbole-run-test hbut-defal-url>
;;
;; Run the tests that start with the string, "hbut-defal":
;; <hyperbole-run-tests hbut-defal>
;;
;; Run all Hyperbole tests:
;; <hyperbole-run-tests t>
;;; Code:
(require 'hload-path)
(require 'ert)
(require 'hbut)
(require 'hargs)
(defun hypb-ert-run-test (test-name)
"Run the specified TEST-NAME ert test."
(hypb-ert-require-libraries)
(let ((test-sym (intern-soft test-name)))
(if test-sym
(ert test-sym)
(user-error "Invalid test name: %s" test-name))))
(defun hypb-ert-run-tests (test-selector)
"Run the specified TEST-SELECTOR defined ert test."
(hypb-ert-require-libraries)
(ert (regexp-quote test-selector)))
(defun hypb-ert-get-require-symbols ()
"Return the list of test Lisp library symbols to require."
(mapcar (lambda (file)
(intern (substring file 0 -3)))
(directory-files (expand-file-name "test" hyperb:dir) nil "^[a-zA-Z].*\\.el$")))
(defun hypb-ert-require-libraries ()
(mapc #'require (hypb-ert-get-require-symbols)))
(defal hyperbole-run-test "hypb-ert-run-test")
(defal hyperbole-run-tests "hypb-ert-run-tests")
(defun hypb-ert-run-all-tests ()
"Run every ert test."
(interactive)
(hypb-ert-require-libraries)
(ert t))
(provide 'hypb-ert)
;;; hypb-ert.el ends here