mike-neckのブログ

Java or Groovy or Swift or Golang

Javaプロジェクトでコミットするファイルにテストがない場合にいろふさんに怒られるgit hook #irof

これはいろふAdvent Calendar2014の8日目の記事です。

昨日はきつねさんIrofGen - きつねとJava!でした。

次回はぜろゆさんです。

ずいぶんと離れているので、誰かエントリーしてもいいのよ|ω・\)チラッ


いろふさんといえば、『のざきひろふみ』とかいう筆名で『Javaエンジニア養成読本』の第二章に寄稿しています。

ただ、僕の中ではいろふさんはJUnitな人で、TDDブートキャンプのチューターのイメージが強いです。

そんなわけで、プロジェクトでテストコードを書いていないとコミットしても、失敗させるgit hookを書いてみました。

いろふさんに怒られる

テストがある場合は怒られません

テストがある場合

スクリプト

スクリプトはこんな感じで、結構ザルです。

#!/usr/bin/env groovy

def testFiles = 'git status -s'.execute()
        .text.split(System.lineSeparator())
        .findAll{it.startsWith('M ') || it.startsWith('A ')}
        .findAll{it.contains('src/test/')}

if (testFiles.size() == 0) {
    def irof = $/    `:oshdhyyyyyyyhdyyhhoo/`
  -sms/.`             .../sNd/
 `No  テスト書かないとか   `oN:
 /N`  それ@t_wadaの前でも    ms
 :N.  同じこと言えるの?    /M/
  sh:-`  `.::`   `       `:sMy
   `-/oooo+oM:  yNdyyhhyyhy+.
           .M+  dN`              `:/oyddddhy++:`
            /ms::dh-        ./ydNNdso//---/+symM
             `:shdMMd    .odNds/.
                       /dNs:
                     .dMo`
                    :Nm.              `-/:`
                    /NMh`            sNhoyNs`
                     `+mNy-         +M.   /Ms
                        :yNh-       `hh/-/dd.
                          `+Nh-       :+s+:
                            `+mh-
                         `..::/dMs
                  :syyyhhysso/////`
                  yN:`
                  `hN:
                    oNy.
/$
    println irof
    System.exit(1)
} else {
    System.exit(0)
}

なお、画像はうらがみさんのスタックトレースろふで紹介されているものを使いました。

以上、あまり変態度高くないです