#:g1: CLOCC: ansi-testsの紹介

Posted 2014-11-11 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の316日目です。

CLOCC: ansi-testsとはなにか

 CLOCC: ansi-testsは、ANSI Common Lispの規格に準拠しているかどうかをテストするユーティリティです。

パッケージ情報

パッケージ名CLOCC: ansi-tests
プロジェクトサイト CLOCC - Common Lisp Open Code Collection / Hg / [5dc26c] /src/tools/ansi-test/tests.lisp

インストール方法

 CLOCCのプロジェクトサイトからダウンロードしてきて適当に導入します。

$ hg clone http://hg.code.sf.net/p/clocc/hg clocc-hg

試してみる

 対応している処理系は、ANSI Common Lispならなんでもという気もしますが、CLISP、CMUCL、SBCL、GCLあたりみたいです。
しかしコードを修正せずに手元で完走したのはCMUCLのみ。どうもテストコードにも若干のバグがあります。
実行は、tests.lispを読み込ませるか、シェルからmakeを実行します。

$ make sbcl

 実行結果は、処理系の名前のディレクトリの中に出力されます。
下記は実行結果のsbcl/alltest.ergの例ですが、32bit決め打ちだったり、それはANSI Common Lispの仕様ではないのではというものも結構あります。

Bugid: :ALLTEST-LEGACY-77 interpreted Form: LAMBDA-LIST-KEYWORDS
Should be: (&OPTIONAL &REST &KEY &AUX &BODY &WHOLE &ALLOW-OTHER-KEYS &ENVIRONMENT)
SBCL: (&ALLOW-OTHER-KEYS &AUX &BODY &ENVIRONMENT &KEY SB-INT:&MORE &OPTIONAL &REST &WHOLE)
Why : ""

Bugid: :ALLTEST-LEGACY-87 interpreted Form: (LET ((S (PRIN1-TO-STRING LAMBDA-PARAMETERS-LIMIT))) (OR (EQUAL S "536870911"))) Should be: T SBCL: NIL Why : ""

Bugid: :ALLTEST-LEGACY-391 interpreted Form: (FUNCTIONP (QUOTE ATOM)) Should be: T SBCL: NIL Why : ""

Bugid: :ALLTEST-LEGACY-708 interpreted Form: (DOCUMENTATION (QUOTE BEISPIEL) (QUOTE TYP2)) Should be: "doc 2" SBCL: NIL Why : ""

Bugid: :ALLTEST-LEGACY-717 interpreted Form: (DOCUMENTATION (QUOTE BEISPIEL) (QUOTE TYP2)) Should be: "doc 3" SBCL: NIL Why : ""

Bugid: :ALLTEST-LEGACY-1576 interpreted Form: (LET ((S (PRIN1-TO-STRING MOST-POSITIVE-FIXNUM))) (OR (EQUAL S "536870911"))) Should be: T SBCL: NIL Why : "" ....

まとめ

 今回は、CLOCC: ansi-testsを紹介してみました。
色々書きましたが、実行結果を眺めていたらSBCL 1.2.5のバグを見付けてしまったりしたので、こういうテストはやっぱり有用だなと思った次第です。

comments powered by Disqus