Один из вариантов, если вы не хотите прибегать к полноценной библиотеке модульного тестирования (понятно), - написать свою собственную. Вы можете использовать read
, чтобы прочитать s-выражения из файла, использовать eval
, чтобы оценить их и проверить, являются ли они ложными, и отчитаться, выйдя, если вы найдете ложное. Примерно так должно работать:
(define (read-and-test filename env)
(call-with-input-file
filename
(lambda (in)
(let loop ((input (read in)))
(if (eof-object? input)
(display "done!")
(begin
(if (eval input env)
(begin
(display input)
(display " ok")
(newline)
(loop (read in)))
(begin
(display "failed on ")
(display input)
(newline)
(exit)))))))))
Если вы поместили вышеупомянутое в файл с именем unit.scm
, а файл, который вы хотите протестировать, называется test.scm
, вы можете вызвать это с помощью MIT Scheme из командной строки Unix следующим образом:
mit-scheme --load `pwd`/unit.scm --eval '(read-and-test "/Users/aki/code/scratch/test.scm" (the-environment))'
(обратите внимание, что выше приведены некоторые специфические для Схемы MIT вещи, относящиеся к eval
и окружающей среде)