私のシェフの料理本は、特定のユーザーのためにRubyをローカルにインストールします。 Rubyの特定のバージョンが利用可能かどうか、そして宝石がドキュメントなしでインストールされているかどうかを調べるInSpecテストを書いてみたい。InSpec + TestKitchen:特定のユーザーに代わってコマンドを実行する方法は?
明らかに私は何とかrbenvのインストールを持っているユーザーの代わりにコマンドを実行する必要があります。私はsudo su -c
にこだわることに決めました。バージョンのテストが正常に動作します:
describe command('su - rbenv_user -c "ruby -v"') do
its('stdout') {should match ('ruby 2.3.1')}
end
しかし、私は宝石をインストールしよう:
describe command('su - rbenv_user -c "gem install bundler"') do
its('stderr') {should match ('Successfully installed')}
its('stderr') {should_not match ('Parsing documentation for')}
end
私はエラーを取得する:
ERROR: While executing gem ... (Errno::EACCES) Permission denied @ rb_sysopen - /apps/rbenv_user/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.15.4/.codeclimate.yml
私もrunuser -l user -c ...
でsu - user -c ...
の交換と試してみました同じ結果につながります。
なぜこのようなことが起こっているのか、別のユーザーとしてテストする必要があるその他のオプションについてはわかりません。