kyuaコマンドとKyuafile

Kyuaはkyuaコマンドで制御する。テストの実行、テストの個別実行、テストケースの出力、報告書の作成といった操作をkyuaコマンドから実行する。このコマンドはKyuafileというファイルの内容に従って処理を行う。makeコマンドに対するMakefileがあるように、kyuaコマンドにKyuafileがあるといった感じだ。

今回は、次のようなKyuafileを用意した。

Kyuafile

syntax(2)

test_suite("tests")

atf_test_program{name="test.atf-sh", }

書き方はいろいろあるが、ここではシンプルにtest.atf-shというファイルにテストコードを書くように指定した。test.atf-shは次のように書いてある。

test.atf-sh

#!/usr/bin/env atf-sh

atf_test_case normal
normal_head() {
    atf_set "descr" "Normal data handling test"
}

normal_body() {
    atf_check -s ignore \
        -o file:$(atf_get_srcdir)/../data/zip.tsv \
        -x "$(atf_get_srcdir)/../csv2tsv.exe " \
           "$(atf_get_srcdir)/../data/zip.csv"
}

atf_test_case empty
empty_head() {
    atf_set "descr" "Emtpy file handling test"
}

empty_body() {
    atf_check -s ignore \
        -o file:$(atf_get_srcdir)/../data/empty.tsv \
        -x "$(atf_get_srcdir)/../csv2tsv.exe " \
           "$(atf_get_srcdir)/../data/empty.csv"
}

atf_test_case doublequotes
doublequotes_head() {
    atf_set "descr" "Double quotation handling test"
}

doublequotes_body() {
    atf_check -s ignore \
        -o file:$(atf_get_srcdir)/../data/doublequotes.tsv \
        -x "$(atf_get_srcdir)/../csv2tsv.exe " \
           "$(atf_get_srcdir)/../data/doublequotes.csv"
}

atf_test_case spaces
spaces_head() {
    atf_set "descr" "Spaces handling test"
}

spaces_body() {
    atf_check -s ignore \
        -o file:$(atf_get_srcdir)/../data/spaces.tsv \
        -x "$(atf_get_srcdir)/../csv2tsv.exe " \
           "$(atf_get_srcdir)/../data/spaces.csv"
}

atf_init_test_cases()
{
    atf_add_test_case normal
    atf_add_test_case empty
    atf_add_test_case doublequotes
    atf_add_test_case spaces
}

前回までは、PowerShellでテスト用のスクリプトファイルを4つ用意した。このスクリプトを実行するメタスクリプトをさらに1つ用意し、合計で5つのPowerShellスクリプトを書いたわけだが、これを1つにまとめたようなファイルが上記のtest.atf-shだ。

test.atf-shの書き方にはルールがあるので、基本的にはそのルールに従って処理を記述している。ここまで準備したら、次のようにkyuaコマンドを実行するとテストコードが実行される。

テストコードの実行

kyua test