kaakaa Blog

この世は極楽 空にはとんぼ

[shell] シェルスクリプトをJenkins上で自動テスト

今週はシェルスクリプトで痛い目見たので、Jenkins上でシェルスクリプトの自動テストを行える環境を調べた。


使用したシェルスクリプトユニットテストフレームワークはshunit2。
shunit2 - shUnit2 - xUnit based unit testing for Unix shell scripts - Google Project Hosting
シェルスクリプトのユニットテストフレームワーク "shUnit2" を使ってみた - ablog


まずは、シェルスクリプトと、そのテストスクリプト(正常ケース・エラーケース)作成。

sample.sh

#!/bin/bash

sample(){
        CODE=$1
        MESSAGE=$2

        echo "$CODE-$MESSAGE"
}


sample_test.sh

#!/bin/bash

# 関数読み込み
. ./sample.sh

test()
{
        CODE=S001
        MESSAGE=hage

        EXPECTED="S001-hage"
        ACTUAL=`sample ${CODE} ${MESSAGE}`

        assertEquals ${EXPECTED} ${ACTUAL}
}

# load shunit2
. ./shunit2


sample_errot_test.sh

#!/bin/bash

# 関数読み込み
. ./sample.sh

test()
{
        CODE=S001
        MESSAGE=hage

        EXPECTED="S999-error"
        ACTUAL=`sample ${CODE} ${MESSAGE}`

        assertEquals ${EXPECTED} ${ACTUAL}
}

# loadshunit2
. ./shunit2


これらを使ったJenkinsジョブを作り、まずはビルドの手順に成功テストのスクリプトを指定。


結果。



次は失敗テストを指定。


結果。



特に問題なく使えそうですね。
ディレクトリ構成の規約とか無いから、そこだけしっかりしとけば十分使えそう。

先週やっておけば…っ!