我正在尝试使用 net/ssh gem 在我的 Test-Kitchen 实例中查找已安装的包。我做了一个简单的食谱,可以重复使用构建必备的食谱。
这是我的食谱:
node['my-cookbook']['packages'].each do |pkg|
package pkg
end
这些是我的属性:
default['my-cookbook']['packages'] = %w[build-essential git bison]
这些是我对黄瓜的特征定义的一些步骤。
When(/^I ask for (.*)$/) do |package|
Net::SSH.start(@infrastructure['my-app'].ip,'vagrant', password: 'vagrant') do |ssh|
@out = ssh.exec!("dpkg --get-selections | grep #{package}")
end
end
Then(/^I should see (.*)$/) do |package_respond|
puts @out
@out.should match package_respond
end
当实例收敛时,安装了 build-essential 并且黄瓜测试成功。
输出
puts @out
曾是
grep: build-essential: No such file or directory
测试成功,因为表达式匹配。我期待
build-essential install
这里发生了什么??当未安装软件包时,控制台会以空字符串响应。
如何使用 net/ssh gem 检查是否将特定软件包安装到我的厨房实例中?
我的厨房实例是 ubuntu 12.04。
谢谢。