如何使用Serverspec来测试其他用户安装的实用程序?

时间:2016-06-13 16:36:21

标签: chef serverspec

我的要求是我需要运行安装在其他用户中的实用程序,我必须检查该会话返回的输出并验证它。 示例:

  • 我将java安装为 srijava 用户
  • 现在在Serverspec中,我编写了测试Java版本的命令(假设java -version仅在该用​​户中运行,而不是作为 root )。
  • 如果我使用su srijava,那么我不会将输出返回到根会话并且测试失败。
  • 如果我在没有su srijava的情况下运行,那么我的实用程序将抛出错误 用户不是 SriJava

代码su

describe command('su srijava ; cd /app/java; ./java --version') do
  its(:stdout) { should contain('1.7') }
end

没有su的代码:

describe command('cd /app/java; ./java --version') do
  its(:stdout) { should contain('1.7') }
end

1 个答案:

答案 0 :(得分:2)

describe command("su -c '/app/java/java --version' srijava") do
  its(:stdout) { should contain('1.7') }
end

仅供参考,您使用的是RSpec 2,很快就会为您的匹配器提供过时的Serverspec语法。考虑使用以下方法进行改进:

describe command("su -c '/app/java/java --version' srijava") do
  its(:stdout) { is_expected.to match(/1\.7/) }
end