2008-09-16 6 views

Répondre

2

Le script suivant, nommé guiletap.scm, implémente les fonctions fréquemment utilisées pour l'utilisation du protocole TAP lors de l'exécution de tests.

; Define functions for running Guile-written tests under the TAP protocol. 
; Copyright © 2008 by Omer Zak 
; Released under the GNU LGPL 2.1 or (at your option) any later version. 
;;; 
;;; To invoke it: 
;;; (use-modules (guiletap)) 
;;; 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
(define-module (guiletap)) 
(export plan) 
(export ok) 
(export bail_out) 
(export diag) 
(export is_ok) 

(use-modules (ice-9 format)) 

; n is the number of tests. 
(define plan 
    (lambda (n) (display (format "1..~d~%" n)))) 

; n -  test number 
; testdesc - test descriptor 
; res -  result which is #f at failure, other at success. 
(define ok 
    (lambda (n testdesc res) 
    (if (not res)(display "not ")) 
    (display (format "ok ~d - ~a~%" n testdesc)))) 

; testdesc - test descriptor 
(define bail_out 
    (lambda (testdesc) 
    (display (format "Bail out! - ~a~%" testdesc)))) 

; diagmsg - diagnostic message 
(define diag 
    (lambda (diagmsg) 
    (display (format "# ~a~%" diagmsg)))) 

; n -  test number 
; testdesc - test descriptor 
; expres - expected test result 
; actres - actual test result 
(define is_ok 
    (lambda (n testdesc expres actres) 
    (ok n testdesc (equal? expres actres)))) 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
; !!! TODO: 
; !!! To be implemented also: 
; plan_no_plan 
; plan_skip_all [REASON] 
; 
; is RESULT EXPECTED [NAME] 
; isnt RESULT EXPECTED [NAME] 
; like RESULT PATTERN [NAME] 
; unlike RESULT PATTERN [NAME] 
; pass [NAME] 
; fail [NAME] 
; 
; skip CONDITION [REASON] [NB_TESTS=1] 
; Specify TODO mode by setting $TODO: 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
; End of guiletap.scm
2

Il y a aussi maintenant ggspec, un cadre de tests unitaires Guile qui peuvent les résultats de sortie dans (un sous-ensemble) format TAP. Pour ce faire, mettez tous vos scripts test (schéma) dans un sous-répertoire de projet nommé spec et exécutez:

$ ggspec -f tap 

Depuis ggspec est un cadre à part entière avec des configurations, démontages et saut d'essai, il y a plus d'options. Voir l'exemple de fichier de test fourni avec le projet (spec/lib-spec.scm) pour un bon aperçu.

Clause de non-responsabilité: J'ai écrit ggspec.

Questions connexes