基本的に怠Diary

学習ログを残したい

実践Common Lispで実践する 〜テスト編〜

asdfわけわからないのでとりあえず見よう見まねで構築していく。

とりえあず本のソースコード丸パクはやばそうなのでこのお話はここで終わりだろうなと思いつつ

検証したらやはり動かない。

asdファイルは特に問題なさそう。

ちなみにディレクトリ構成はこんな感じ

package.lispについては適当に記事あさってたら見つけたので採用。

qiita.com

. ├── package.lisp

├── src

│   └── ut.lisp

├── t

│   └── ut-test.lisp

├── ut-test.asd

└── ut.asd

ut.asd

(require 'asdf)

(in-package :cl-user)
(defpackage ut-test-asd
  (:use :cl :asdf))
(in-package :ut-test-asd)

(defsystem ut-test
  :depends-on (:ut)
  :version "1.0.0"
  :author "wasu"
  :license "MIT"
  :components ((:module "t" :components ((:file "ut-test"))))
  :perform (test-op (o s)
            (symbol-call :ut)))

ut-test.asd

(require 'asdf)

(in-package :cl-user)
(defpackage ut-test-asd
  (:use :cl :asdf))
(in-package :ut-test-asd)

(defsystem ut-test
  :depends-on (:ut)
  :version "1.0.0"
  :author "wasu"
  :license "MIT"
  :components ((:module "t" :components ((:file "ut-test"))))
  :perform (test-op (o s)
            (symbol-call :ut)))

この構成で「実践Common Lisp」のユニットテストフレームワークをテストする。

が、駄目ッ・・・!

何がいけないのかエラーコード読んでもよくわからないのでとりあえずテストが簡単そうな別のプロジェクトで試すことにした。

ほぼテストできてるのか謎だけどとりあえず簡単なDB作るところのテストはできた。

ある程度わかってきた(?)ので再度チャレンジ

ちなみに途中からlakeというツールを使い始めた。

github.com

いちいちrepl立ち上げて履歴漁るのと文字化け発生してて辛かった。

ちなみにこいつは結構前からいれてたんだけど、

Couldn’t load lisp heap image from 〜

みたいなエラーがでてググってもよくわからなかったんだけど、

〜から先のとこでdumpがどうとか書いてあったので

とりあえず

$ lake dump

そしたらなんかできた。

Githubのれどめの説明には

lake-tools COMMAND

COMMANDS

dump Prepare LAKE command to make it run much faster.

init Create an empty Lakefile with boilerplates in current directory.

謎!w

ユニットテストはとりあえず評価結果を順番に結合するメソッドを改悪したら動いた。

とりあえず今後、テストツールはprove使って今後遊びます。