(rontolisp) docs
← 関数

asdf:test-system

(asdf:test-system name)

指定した名前のシステムを読み込み、その :in-order-to ((test-op (test-op ...))) 連鎖をたどり(連鎖先のシステムも同じ方法で 読み込んでテストします)、システムに記録された :perform (test-op (o c) ...) の本体を 実行します。operation 引数は niloperate の機構はありません)、component 引数は システムのメタオブジェクト(asdf:find-system の答え)に 束縛されます。t を返します。test-op の配線を持たないシステムでは何もしません。 本物の ASDF のデフォルト perform と同じです。

これは fukamachi スタイルの .asd が備える標準のエントリポイントです。

(defsystem "my-app"
  :components ((:file "main"))
  :in-order-to ((test-op (test-op "my-app/tests"))))

(defsystem "my-app/tests"
  :depends-on ("my-app" "rove")
  :components ((:file "tests/main"))
  :perform (test-op (op c) (symbol-call :rove :run c)))

;; run the tests:
(asdf:test-system "my-app")

本体は .asd の解析時にデータとして記録されます。裸のシンボルは asdf-user が 解決するのと同じように解決されます(symbol-calluiop:symbol-callcomponent-nameasdf:component-name)。メソッド修飾子つきの :performtest-op :after (o c))や本体中の #. リーダーマクロは、従来の test-op 配線と 同じく許容されて無視されます。

バックエンドサポート

4 つすべてのバックエンドで動作します。コンパイルパスでは、リテラルなトップレベル(asdf:test-system NAME) がコンパイル時にシステム test-op 連鎖をスプライスし (通常の load-system はテストシステムを取り込みません)、実行時に記録された本体を 実行します。ネストした呼び出しや計算された名前の呼び出しは、プログラムが既に スプライス済みのシステムにしか届きません。