2017-10-26 10 views
0

My Chef 요리 책은 특정 사용자를 위해 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 ...의 교체 시도 그것은 같은 결과를 낳는다.

왜 이런 일이 일어나고 다른 사용자로 다른 옵션을 테스트해야하는지 잘 모르겠습니다.

답변