我正在使用serverspec对服务器进行远程测试。
我有许多不同的测试,它们都工作正常:
`-- spec
|-- builder.example.org.uk
\ host_spec.rb
|-- chat.example.org.uk
\ host_spec.rb
|-- docker.example.org.uk
\ host_spec.rb
\-- git.example.org.uk
\ host_spec.rb
但是,每个主机测试都有很多重复,例如,因为我想确保每个主机都在sshd
运行。
我尝试了几种不同的创建方式,spec/common_tests.rb
但每次都失败了。例如添加spec/common.rb
:
describe command("lsb_release -d") do
its(:stdout) { should match /wheezy/ }
end
然后在spec/chat.example.org.uk/host_spec.rb
:
require 'common'
然而,这似乎突然想要连接到不同的主机,并失败:
shelob ~ $ bundle exec rake spec:ssh.example.org.uk
/usr/bin/ruby1.9.1 -S rspec spec/ssh.example.org.uk/host_spec.rb
F.....................
Failures:
1) Command "lsb_release -d" stdout
On host `ssh.example.org.uk`
Failure/Error: Unable to find matching line from backtrace
SocketError: getaddrinfo: Name or service not known
所以我的问题是双重的:
- 是否可以包含来自外部文件的常见测试?
- 如果是这样,我该如何做到这一点?