3

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

  • 我以srijava用户身份安装了 java
  • 现在在 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
4

1 回答 1

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
于 2016-06-13T18:03:31.333 回答