asdf の機能を使用して repl からテスト スイートを実行しようとしていますが、quicklisps の quickload を使用すると、最初の foo のロードに失敗し、2 番目の試行で成功します。
(in-package :cl-user)
(defpackage :foo-system
(:use :cl :asdf))
(in-package :foo-system)
(asdf:defsystem :foo
:components ((:file "foo")))
(asdf:defsystem :foo-tests
:depends-on (:foo)
:components ((:file "foo-tests")))
(defmethod asdf:perform ((op test-op) (system (eql (find-system :foo))))
(asdf:load-system 'foo-tests)
(foo-tests:run-tests))
asd ファイルをコンパイルすると、エラーは asdf:perfom defmethod の 2 番目の形式にあるように見えるため、これは理にかなっています。nclack を foo に置き換えたエラーは次のとおりです。
../../nclack/nclack.asd:36:27: read-error: COMPILE-FILE 中の READ エラー:
Package NCLACK-TESTS does not exist. Line: 36, Column: 27, File-Position: 1034 Stream: #<SB-SYS:FD-STREAM for "file /Users/PuercoPop/quicklisp/local-projects/nclack/nclack.asd" {1005DB11A3}>
(foo-tests:run-tests) 行に一致します。システムを「ロード」することは、そのフォームをコンパイルすることとは異なるように見えますか? または、システムのロード後にパッケージが定義されないのはなぜですか? 何か案は?私は途方に暮れています。