Serverspecでcommand実行のResource Typesを使ったときに戻り値が空白になったときのワークアラウンド的なもの

大分ブログを書いていませんでした。
リハビリ的に備忘メモを。


ServerspecでcommandのResource Typesを使って、stderrのチェックするテストを
行っていたのですが、どうも戻り値が空白になるようでうまく動かない。


今回の例は特定のユーザ用にPythonの環境をコンパイルしており、
そのバージョンチェックをテストにしています。テストはこんな感じです。

describe command("/home/myuser/python/bin/python -V") do
  its(:stderr) { should match "Python 2.7.3" }
end


結果はこんな感じ。

 2) Command "su -l myuser -c '/home/myuser/python/bin/python -V'" stderr should match "Python 2.7.3"
            Failure/Error: its(:stderr) { should match "Python" }
              expected "" to match "Python 2.7.3"
              /bin/sh -c su\ -l\ myuser\ -c\ \'/home/myuser/python/bin/python\ -V\'


色々やってみたのですが、うまくいかなかったので、
ワークアラウンド的に参考リンクを元に、全てを標準出力に出してみました。

describe command("su -l myuser -c '/home/myuser/python/bin/python -V 2>&1'") do
  its(:stdout) { should match "Python 2.7.3" }
end


こうすることで、一旦テストは成功するようになりました。
今日はこんなところで。