Common lisp asdf:从Makefile测试系统不';t返回错误返回码
我的单元测试运行正常,但是当测试失败时,Common lisp asdf:从Makefile测试系统不';t返回错误返回码,common-lisp,asdf,Common Lisp,Asdf,我的单元测试运行正常,但是当测试失败时,maketest目标不会返回错误代码(echo$?为0)(当出现lisp错误时会返回) 这对CI系统不好 我的主系统定义以结尾,以便: :in-order-to ((test-op (test-op "mysystem/test")))) 我的测试系统有一个performone: :perform (test-op (o s) (uiop:symbol-call '#:mysestem.test '#:te
maketest
目标不会返回错误代码(echo$?
为0)(当出现lisp错误时会返回)
这对CI系统不好
我的主系统定义以结尾,以便
:
:in-order-to ((test-op (test-op "mysystem/test"))))
我的测试系统有一个perform
one:
:perform (test-op (o s)
(uiop:symbol-call '#:mysestem.test '#:test-all)))
其中,test all
是一个运行带有run!'的Fiveam测试套件的函数测试套件
制定目标:
test:
# (with proper indentation…)
$(LISP) --non-interactive \
--eval "(asdf:load-asd \""$(ASD_PATH)"\")" \
--eval "(ql:quickload :mysystem/test)" \
--eval "(asdf:test-system \"mysystem\")"
注意,遵循ASDF的操作
“函数:run!未定义”时出错
我们如何做到这一点
谢谢。似乎有打字错误:
⇒ <代码>'#:mysystem.test”#:myestem.test
#':快跑代码>⇒ <代码>'#:快跑代码>
ASDF:TEST-SYSTEM
不会终止映像,因此不会以某种方式影响退出代码。如何使用错误代码退出取决于实现,但uiop具有uiop:QUIT
。这实际上是有意义的,因为我们可以从repl调用它。因此,我尝试了类似于--eval”(除非(asdf:testsystem\'mysystem\)(uiop:quit 1))“
的方法,但迄今为止没有成功。我有一个失败的测试,仍然0
,但是最后一个输出是没有运行任何东西…嗯?
所以也许fiveam没有在这里返回nil
。现在我有一个干净的输出,有一个失败的测试,但是仍然echo$?
=0。ASDF:test-SYSTEM
的返回值并不表示测试成功/失败。本手册建议从发出信号发出条件。运行
一个是真实的。我把它命名为一个测试套件(如:testsuite
),但它没有运行任何东西:/“没有运行任何东西……嗯?”
(symbol-call :fiveam #':run! :test-suite)))