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
こうすることで、一旦テストは成功するようになりました。
今日はこんなところで。