git.fiddlerwoaroof.com
t/spec.lisp
33123418
 (in-package :cl-user)
 (defpackage cl-yaml-test.spec
   (:use :cl :fiveam)
bb4f27b9
   (:export :spec)
   (:documentation "Run tests from the specification."))
33123418
 (in-package :cl-yaml-test.spec)
 
 (def-suite spec
   :description "Test cases from the spec.")
 (in-suite spec)
 
 (defun parse-corresponding-file (yaml-file)
   (let ((json-file (make-pathname :defaults yaml-file
                                   :type "json")))
     (yason:parse json-file)))
 
 (test spec-tests
   (let ((directories (fad:list-directory
                       (asdf:system-relative-pathname :cl-yaml-test
                                                      #p"t/data/"))))
     (loop for directory in directories do
       (loop for file in (uiop:directory-files directory) do
         (when (string= (pathname-type file) "yaml")
           (format t "~%Spec: ~A" (pathname-name file))
           (let ((data (yaml:parse file))
                 (json-data (parse-corresponding-file file)))
             (is-true
              (generic-comparability:equals data json-data))))))))