GeekBox

IT系エンジニアの雑記

【Serverspec】リソースタイプcommandで返却値が空になる場合の対処法

例としてjavaのバージョンをチェックするテストを以下のように実行しようとした場合。
[crayon-5efd6ac1e6f57481238875/]

以下の結果になり、期待値(expected)が""と空になっている。
[crayon-5efd6ac1e6f65905356265/]

結論

java -versionコマンドの出力結果が標準出力(stdout)ではなく標準エラー(stderr)に出力されているため、its(:stdout)では出力を取得できないから。

なぜ標準出力ではなく、標準エラーへ出力されるのかは謎。
一応調べてみたけどそういう仕様っぽく、nginxとかも同様らしい。
という事なので回避するには以下のどちらかで対処する感じになりそう。

1.全ての出力を標準出力へ出す
[crayon-5efd6ac1e6f6b972770275/]

2.stdoutではなくstderrでテストを行う
[crayon-5efd6ac1e6f70132175283/]

java -versionの仕様として「stderr」へ出力を行うのであれば「stderr」でテストするのが正しいような気もするが、
テストケースをパッと見たときに 「stderr」 と書いてあると混乱しそうな気もする。。。

-Serverspec