asdf:test-system из Makefile не возвращает код возврата ошибки

Мои модульные тесты работают нормально, но цель 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! не определена».

Как нам это сделать ?

Спасибо.


person Ehvince    schedule 26.02.2019    source источник
comment
ASDF:TEST-SYSTEM не убивает изображение, поэтому так или иначе не влияет на код выхода. Как выйти с кодом ошибки, зависит от реализации, но у uiop есть UIOP:QUIT.   -  person jkiiski    schedule 26.02.2019
comment
Это на самом деле имеет смысл, так как мы можем вызвать его из repl. Поэтому я пробую такие вещи, как --eval "(unless (asdf:test-system \"mysystem\") (uiop:quit 1))", пока безуспешно. У меня проваленный тест и все еще 0, но последний вывод Didn't run anything...huh?, так что, возможно, пять утра не возвращают nil здесь.   -  person Ehvince    schedule 27.02.2019
comment
Теперь у меня чистый вывод с одним неудачным тестом, но все равно echo $? = 0.   -  person Ehvince    schedule 27.02.2019
comment
Возвращаемое значение ASDF:TEST-SYSTEM не указывает на успех/неуспех теста. В руководстве предлагается сигнализировать об условии из тестовой операции.   -  person jkiiski    schedule 27.02.2019


Ответы (1)


Кажется, есть опечатки:

  • '#:mysestem.test'#:mysystem.test
  • #':run!'#:run!
person Svante    schedule 26.02.2019
comment
run настоящий. Я назвал это набором тестов (как в :test-suite), но он ничего не запускал :/ Ничего не запускал... а? - person Ehvince; 27.02.2019