Я пытаюсь настроить сервер для запуска обширных случайных тестов против программы Racket и хочу, чтобы результаты этих тестов отправлялись в файлы журналов. Как я могу записать выходные данные тестов в файл?
Тесты из rackunit возвращают #<void>, а не строку, поэтому попытка использовать (call-with-output-file ... с тестами только добавляет #<void> в выходной файл.
(call-with-output-file "testing.txt"
(λ (out)
(display <TESTS> out))
#:exists 'append)
Выходной файл должен регистрировать результаты теста или ошибки, если таковые имеются. Любая помощь приветствуется.





Вместо того, чтобы запускать проверки сами по себе, которые печатаются в stderr и возвращают #<void>, поместите проверки в набор тестов, чтобы вы могли использовать run-tests из rackunit/text-ui.
#lang racket
(require rackunit rackunit/text-ui)
(define-test-suite testing
<TESTS>)
(.... something something (run-tests testing) ....)
Однако функция run-tests, похоже, использует current-error-port, а не current-output-port, для вывода ошибок теста, поэтому в вашем call-with-output-file вам нужно установить current-error-port на out.
(call-with-output-file "testing.txt"
(λ (out)
(parameterize ([current-error-port out])
(run-tests testing)))
#:exists 'append)
Вы смотрели на функцию
run-testsиз модуляrackunit/text-ui? docs.racket-lang.org/rackunit/…