如何使用 Serverspec 测试其他用户安装的实用程序?
How to use Serverspec to test the utility installed in other user?
我的要求是我需要 运行 一个安装在其他用户中的实用程序,我必须检查从该会话返回的输出并验证它。
示例:
- 我将 java 安装为 srijava 用户
- 现在在 Serverspec 中,我编写了测试 Java 版本的命令(假设
java -version
运行s 仅在该用户中而不是 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
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
我的要求是我需要 运行 一个安装在其他用户中的实用程序,我必须检查从该会话返回的输出并验证它。 示例:
- 我将 java 安装为 srijava 用户
- 现在在 Serverspec 中,我编写了测试 Java 版本的命令(假设
java -version
运行s 仅在该用户中而不是 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
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