From 7b5ab221efe49979138d44f0726c3b2412eef108 Mon Sep 17 00:00:00 2001 From: Phil Jackson Date: Sun, 10 Aug 2008 18:53:09 +0100 Subject: [PATCH] Skip is basically implemented (at the etest.el level). --- etest.el | 34 +++++++++++++++++++++------------- etest.etest | 8 +++++--- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/etest.el b/etest.el index ddd07a4..0c3e1fe 100644 --- a/etest.el +++ b/etest.el @@ -85,7 +85,8 @@ null (etest-null 1) equal (etest-equal 2) eql (etest-eql 2) - ok (etest-ok 1)) + ok (etest-ok 1) + skip (etest-skip 1)) "Plist of test candidates where PROP is the name of the new test . See `deftest' for details of how to modify this.") @@ -97,6 +98,14 @@ will be run." (plist-put etest-candidates-plist name (list func argcount)))) +(defun etest-skip (form) + (let ((my-comments "") + (test-result '()) + (val (condition-case err (car (etest-run (list form))) + (error + (format "error: %S" err))))) + (list :result t :comments val :skip t))) + (defun etest-ok (test) "Simply eval TEST and pass if the result is non-nil." (let ((ret (eval test)) @@ -166,7 +175,7 @@ FUNC. Returns a test result." (match nil) (re (eval re)) (string (eval form)) - (comments (format " needle: '%s'\nhaystack: '%s'\n" re string)) + (comments (format " needle: '%s'\n haystack: '%s'\n" re string)) (res (not (not (string-match re string)))) (result (list :result res))) (while (setq match (match-string (setq i (1+ i)) string)) @@ -232,21 +241,20 @@ resuls in RESULT." "This test is used to test ETest itself. TEST is the test to be run (in ETest syntax) and RESULT is a plist of items you would like to compare. See the file etest.etest for example usage." - (let ((testres (car (etest-run (list test)))) - (my-res t) - (my-comments "")) - (when (null (plist-get testres :result)) - (setq my-comments "note: test result was nil\n")) - (dolist (sym '(:result :comments :doc)) + (let* ((testres (car (etest-run (list test)))) + (my-res t) + (res-items '(:result :comments :doc :skip :todo)) + (my-comments (mapconcat + '(lambda (item) + (format "%9S %S" item (plist-get testres item))) + res-items + "\n"))) + (dolist (sym res-items) (let ((testval (plist-get testres sym)) (resultval (plist-get result sym))) (when (and (plist-member result sym) (not (equal testval resultval))) - (setq my-res nil) - (setq my-comments - (concat my-comments - (format "got: %S from '%S'\n" - resultval sym)))))) + (setq my-res nil)))) (list :result my-res :comments my-comments))) ;; Make `etest-test-tests' available diff --git a/etest.etest b/etest.etest index 29024f0..046a667 100644 --- a/etest.etest +++ b/etest.etest @@ -11,7 +11,7 @@ (like "Hello" "^\\(H\\).+\\(o\\)$")) ("Results" ("ok results" - (eres (ok nil) (:result nil)) + (eres (ok nil) (:result nil)) (eres (ok t) (:result t)) (eres (ok (+ 1 1)) (:result t)) (eres (ok 0) (:result t))) @@ -26,7 +26,9 @@ (eres (error (/ 0 1)) (:result nil))) ("noerror" (eres (noerror (+ 1 1)) (:result t)) - (eres (noerror (/ 1 0)) (:result nil))) + (eres (noerror (/ 1 0)) (:result nil)))) + ("Skip" + (eres (skip (ok (/ 0 0))) (:skip t))) ("Documentation" ("Defined by user" (eres (ok 1 "Foo") (:doc "Foo")) @@ -43,4 +45,4 @@ (eres (eq 1 1) (:comments "both: '1'") "eq hit") (eres (eq 1 2) (:comments "one: '1'\ntwo: '2'") - "eq miss"))))) + "eq miss")))) -- 2.11.4.GIT