0

我的厨师食谱为特定用户在本地安装 Ruby。我想编写一个 InSpec 测试来检查特定版本的 Ruby 是否可用以及是否在没有文档的情况下安装了 gem。

所以很明显,我需要以某种方式代表安装了 rbenv 的用户运行命令。我决定坚持下去sudo su -c。版本测试正常工作:

describe command('su - rbenv_user -c "ruby -v"') do
  its('stdout') {should match ('ruby 2.3.1')}
end

但是当我尝试安装 gem 时:

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

我收到一个错误:

错误:执行 gem 时 ...(Errno::EACCES)权限被拒绝 @ rb_sysopen - /apps/rbenv_user/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.15.4 /.codeclimate.yml

我也尝试用su - user -c ...with替换runuser -l user -c ...它并导致相同的结果。

我不知道为什么会发生这种情况,以及作为其他用户我必须测试哪些其他选项。

4

1 回答 1

0

您可以在运行检查测试时指定用户。参考https://github.com/chef/inspec/issues/362

于 2017-11-05T05:43:44.257 回答