Bashで書いたシンプルなテストツールBaut

最近シェルスクリプトでちょっとしたテストコードを書く機会が多いのでテストを支援するツールを書いてみました。シェルスクリプトのスキル不足な面もあり、色々と調べながら試行錯誤しながら書くことで良い学びの機会となった。

テストツールはBaut(Bash Unit test Tool)という名前でBash上で動作します。Bats[1]https://github.com/sstephenson/batsという便利なテストツールがあるけれど、Batsとは実行のアプローチは異なります。インターフェースは似ています、というか影響を受けています。

Bautの特徴は以下のような感じです。

  • テストはただのBashスクリプトである。DSLも使用していないので、使い慣れたエディタで特別なモードも必要なく、すぐにテストを書き始められる。
  • テストレポートなどカスタマイズしやすい。標準で2、3用意している。
  • テストの出力が分かりやすい方かも。echoprintfで実行した結果が素直にレポートの結果で確認できる。
  • Helperなど組み込みやすい。

テストツールとしては斬新で真新しい機能はないですが、ちょっとした機能確認に役立つかもというレベルのものです。まだ見直しも含め変更の可能性がありますが、とりあえず動くのでgithubにあげてます。

テストのサンプルは以下のようになります。

#: @BeforeAll
function setup_all() {
  echo "==> Called once at first"
}

#: @BeforeEach
function setup() {
  export PATH=/usr/local/bin:"$PATH"
}

#: @Test(The usage should be displayed when command line options are invalid)
function parse_cli_options() {
  run ./my.sh
  [[ "$result" =~ usage: ]]
}

#: @Test
#: @Ignore
function this_test_is_ignored() {
  echo "This test is ignored"
}

#: @AfterEach
function teardown() {
  echo "# Clean up a test."
}

#: @AfterAll
function teardown_all() {
  echo "==> Called once at last"
}

見ての通り、Bashスクリプトそのものです。

実行は以下。

$ baut run test_sample.sh 
1 file, 1 test
#1 /Users/guest/workspace/baut/test_sample.sh
==> Called once at first
o The usage should be displayed when command line options are invalid
  # Clean up a test.
==> Called once at last
1 test, 1 ok, 0 failed, 0 skipped

?  1 file, 1 test, 1 ok, 0 failed, 0 skipped
Time: 0 hour, 0 minute, 0 second

さらに詳細な情報は以下から参照できます。

Baut’s Documentation

もし役に立つことがあれば。

脚注   [ + ]

byebyehaikikyou

日記やIT系関連のネタ、WordPressに関することなど様々な事柄を書き付けた雑記です。ITエンジニア経験があるのでプログラミングに関することなどが多いです。

シェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする

Translate »