Мои модульные тесты работают нормально, но цель make test
не будет возвращать код ошибки, когда тесты не пройдены (echo $?
равно 0) (это происходит, когда есть ошибка lisp).
Это нехорошо для системы CI.
Мое основное системное определение заканчивается на in-order-to
:
:in-order-to ((test-op (test-op "mysystem/test"))))
В моей тестовой системе есть perform
:
:perform (test-op (o s)
(uiop:symbol-call '#:mysestem.test '#:test-all)))
где test-all
— это функция, запускающая наборы тестов Fiveam с run! 'test-suite
.
Цель сделать:
test:
# (with proper indentation…)
$(LISP) --non-interactive \
--eval "(asdf:load-asd \""$(ASD_PATH)"\")" \
--eval "(ql:quickload :mysystem/test)" \
--eval "(asdf:test-system \"mysystem\")"
Обратите внимание, что следуйте рекомендациям ASDF. при выполнении
(symbol-call :fiveam #':run! :test-suite)))
выводятся ошибки с сообщением «Функция :run! не определена».
Как нам это сделать ?
Спасибо.
ASDF:TEST-SYSTEM
не убивает изображение, поэтому так или иначе не влияет на код выхода. Как выйти с кодом ошибки, зависит от реализации, но у uiop естьUIOP:QUIT
. - person jkiiski   schedule 26.02.2019--eval "(unless (asdf:test-system \"mysystem\") (uiop:quit 1))"
, пока безуспешно. У меня проваленный тест и все еще0
, но последний выводDidn't run anything...huh?
, так что, возможно, пять утра не возвращаютnil
здесь. - person Ehvince   schedule 27.02.2019echo $?
= 0. - person Ehvince   schedule 27.02.2019ASDF:TEST-SYSTEM
не указывает на успех/неуспех теста. В руководстве предлагается сигнализировать об условии из тестовой операции. - person jkiiski   schedule 27.02.2019