スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

lein testについて

leiningenのtutorialにlein testについて説明されていたので試してみました。

適当にテストコードを書いてテストしてみます。

$ lein new myproject

;; test/myproject/test/core.clj

(ns myproject.test.core
(:use [myproject.core] :reload)
(:use [clojure.test]))

(deftest test-1
(is (= (+ 10 20) 30))
(is (= (- 20 5) 15)))

$ lein test


次にファイルを追加してみます。

;; test/myproject/test/sample.clj

(ns myproject.test.sample
(:use [myproject.core] :reload)
(:use [clojure.test]))

(deftest test-2
(are [x y] (= x y)
6 (* 2 3)
2 (/ 6 3)))


;; 全てテスト

$ lein test

;; ネームスペースを指定して個別にテスト

$ lein test myproject.test.core
$ lein test myproject.test.sample

;; 複数も指定できる

$ lein test myproject.test.core myproject.test.sample


hooke.jarというのを利用すればさらに細かく指定できます。

;; test/myproject/test/core.clj

(deftest ^{:category-1 true} test-3
(is (= (+ 10 20) 30)))
(deftest ^{:category-2 true} test-4
(is (= (+ 10 20) 30)))

;; project.clj

:dev-dependencies [[robert/hooke "1.1.0"]]
:test-selectors {:default (fn [v] (or (:category-1 v) (:category-2 v)))
:category-1 :category-1
:not-category-1 (fn [v] (not (:category-1 v)))
:all (fn [_] true)}


次のような感じで使います。

$ lein test :category-1
$ lein test :all


「lein test」とした場合は「:default」で指定したテストが実行されます。


ファイル指定との組み合わせも可能です。

$ lein test :category-1 myproject.test.core
$ lein test :all myproject.test.core myproject.test.sample


deftestで記述した「{:category-1 true}」というマップがそのまま:test-selectorsの各関数へ渡されるようです。orやnotなどを使えば、実行するテストの振り分けも思いのままですね。


といっても私にはファイル単位での指定でさしあたり十分な気がします(汗)
スポンサーサイト

vimclojureのインストール

最近emacsからvimに乗り換えようか迷い中です。

試しにclojureの開発環境を作ってみようとvimclojureのインストールについて調べてみました。
ホームページらしきページがアクセスできなくて焦りましたが、READMEを読めば問題なく設定できました。

作業はubuntuで行いました。
clojureやleiningenのインストールについては特に触れません。


まずはvimclojureをチェックアウトします。
(zip等でのダウンロードも可能です。)

$ sudo aptitude install mercurial
$ hg clone https://bitbucket.org/kotarak/vimclojure


ngサーバーへ接続するためのngクライアントをmakeしておきます。

$ cd vimclojure/client/
$ make


続いて.vimの下へプラグインを置きます。
(私はpathogen.vimを使っているのでbundleの下へ置きました。)

$ cd ../
$ cp -R vim/ ~/.vim/bundle/vimclojure


ftdetectだけは.vim直下へ置かないとfiletypeを特定できないようなので移動します。

$ cd ~/.vim
$ mv bundle/vimclojure/ftdetect ./


.vimrcへ追記します。

syntax on
filetype plugin indent on

let vimclojure#WantNailgun = 1
let vimclojure#NailgunClient = "/path/to/ng" " 先にmakeしたngクライアントのパス
let vimclojure#HighlightBuiltins = 1



それではサンプルのプロジェクトを作ってみます。

$ cd hoge
$ lein new sample
$ cd sample


project.cljに追記します。

:dev-dependencies [[vimclojure/server "2.2.0"]
[org.clojars.autre/lein-vimclojure "1.0.0"]]


依存するjarファイルダウンロードします。

$ lein deps


ngサーバーを起動して、コードを書いてみます。

$ lein vimclojure &
$ vim src/sample/core.clj

(+ 1 2 3)


<LocalReader>etでevalできます。


REPLの起動は<LocalReader>srです。
:help clojure.vimを見ると他にもいろいろ書いてあります。


そのままだとngサーバーの起動が面倒だったのですが、lein-vimclojureというプラグインのおかげで
「lein swank」みたいに起動できて助かります。


[追記 2011/03/29]

後日MacOSXでも同じ設定を行ったのですが、日本語の混じったコードをevalできませんでした。
どうやらMacのJDK6からデフォルトShift_JISになったようで以下の環境変数をセットすれば動くようになりました。
export _JAVA_OPTIONS="-Dfile.encoding=UTF-8"
プロフィール

jou4

Author:jou4
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。