Запись выходных данных из тестов ракеток в файл - PullRequest
1 голос
/ 08 июня 2019

Я пытаюсь настроить сервер для запуска обширных случайных тестов с программой Racket и хочу, чтобы выходные данные этих тестов отправлялись в журналы в файлах.Как я могу записать результаты тестов в файл?

Тесты из rackunit возвращают #<void>, а не строку, поэтому попытка использовать (call-with-output-file ... с тестами только добавляет #<void> к выходному файлу,

(call-with-output-file "testing.txt"
    (λ (out)
      (display <TESTS> out))
  #:exists 'append)

Выходной файл должен регистрировать результаты теста или ошибки, если они есть.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 08 июня 2019

Вместо того, чтобы запускать проверки самостоятельно, которые печатают в 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)
...