私は現在、bashテストフレームワークを作成しています。テスト関数では、標準のbashテスト([[
)と事前定義されたマッチャーの両方を使用できます。マッチャーは'[['のラッパーであり、戻りコードを返すだけでなく、予期されたことを示す意味のあるメッセージを設定します。
例:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
したがって、マッチャーが使用されて失敗した場合にのみ、error_messageが設定されます。
さて、ある時点で、テストが成功したかどうかをテストします。成功した場合は、期待値を緑で印刷し、失敗した場合は赤で印刷します。
さらに、error_messageが設定されている可能性があるため、メッセージが存在するかどうかをテストし、印刷してから設定を解除します(次のテストでは設定されない可能性があるためerror_message
)。
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
さて、私の質問は、変数の設定を解除する方がよいのか、それとも単に''に設定する方がよいのかということです。
error_message=''
どちらがいいですか?それは実際に違いを生むのでしょうか?または、メッセージが設定されたことを示す追加のフラグが必要ですか?