#:g1: eosの紹介

Posted 2014-06-21 15:30:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の173日目です。

eosとはなにか

 eosは、Adlai Chandrasekhar氏開発のテストのフレームワークです。

パッケージ情報

パッケージ名eos
Quicklisp
CLiKihttp://cliki.net/eos
Quickdocshttp://quickdocs.org/eos
CL Test Grid: ビルド状況eos | CL Test Grid

インストール方法

(ql:quickload :eos)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 ロードするといきなり

************************ ** Eos is deprecated! ** ** See README.mkdn ** ************************

と表示されますが、指示の通りREADME.mkdnを読むと、Edward Marco Baringer氏のFiveAMの開発停止宣言にともなってフォークしたeosですが、FiveAMが開発続行になったのでいらなくなっちゃった的なことが書いてあります。
なるほど、道理で似ている訳ですが、ちょっと悲しい。

 使い方は、こんな風に、FiveAMとまったく同じ感じで使えます。


(defpackage :eos.example
  (:use :cl :eos)) 

(in-package :eos.example)

(def-suite eos.example)

(in-suite eos.example)

(defun list-42 () (*:iota 42))

(defun list-100 () (*:iota 100))

(test length=42 (is (= 42 (length (list-42)))))

(test length=100 (is (= 100 (length (list-100)))) (is (= 100 (length (list-42)))))

(define-condition latumofis (error) ())

(test signal-latumofis (signals latumofis (error 'latumofis)))

(run! 'eos.example) ;>> ..f. ;>> Did 4 checks. ;>> Pass: 3 (75%) ;>> Skip: 0 ( 0%) ;>> Fail: 1 (25%) ;>> ;>> Failure Details: ;>> -------------------------------- ;>> LENGTH=100 []: ;>> (LENGTH (LIST-42)) evaluated to 42, which is not = to 100.. ;>> --------------------------------

おまけ

 折角なのでeosがdeprecatedなアナウンスをどうやって出しているのかを眺めてみましょう。
メッセージを出しているところを探してみると、

(defmethod asdf:operate :before ((op asdf:load-op)
                                 (system (eql (asdf:find-system :Eos)))
                                 &rest proclamations)
  (declare (ignore proclamations))
  (format t "~2&************************~@
                ** Eos is deprecated! **~@
                **   See README.mkdn  **~@
                ************************~%"))

のようにasdf:operateのasdf:load-opの:beforeで出すようになっていました。
~@はあまり見掛けませんが、~@という指示子ではなく、~<改行>という指示子が@のオプションを取っているものです。これは改行以外の空白は無視する、というもの。このコードはインデント付きで書かれていますが、囲み文として整形するためのインデントを無視するということになります。
最初からインデント無しで書けば良いじゃないかという話でもありますが、コードを綺麗に整形したかったのではないでしょうか。なかなか芸が細かい。

まとめ

 今回は、eosを紹介してみました。
確かFiveAMの停滞から開発停止、開発者の引き継ぎまでは結構な2、3年あったような気もしますが、停滞が長引くとこういうことも起きたりするんですね。

comments powered by Disqus