Je voudrais avoir un script Guile, qui implémente des fonctions, qui affichent les résultats des tests selon le protocole TAP.Comment construire des tests unitaires dans Guile, quels sont les résultats de la norme TAP?
3
A
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.