2017-10-26 19 views
0

私のシェフの料理本は、特定のユーザーのために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 ...の交換と試してみました同じ結果につながります。

なぜこのようなことが起こっているのか、別のユーザーとしてテストする必要があるその他のオプションについてはわかりません。

答えて