我正在尝试为我的模块编写一些 rspec 测试。他们中的大多数人现在都在使用hiera。
我有一个 .fixures.yml:
fixtures:
repositories:
stdlib: https://github.com/puppetlabs/puppetlabs-stdlib.git
hiera-puppet: https://github.com/puppetlabs/hiera-puppet.git
symlinks:
mongodb: "#{source_dir}"
和一个 spec/classes/mongodb_spec.rb:
require 'spec_helper'
describe 'mongodb', :type => 'class' do
context "On an Ubuntu install, admin and single user" do
let :facts do
{
:osfamily => 'Debian',
:operatingsystem => 'Ubuntu',
:operatingsystemrelease => '12.04'
}
end
it {
should contain_user('XXXX').with( { 'uid' => '***' } )
should contain_group('XXXX').with( { 'gid' => '***' } )
should contain_package('mongodb').with( { 'name' => 'mongodb' } )
should contain_service('mongodb').with( { 'name' => 'mongodb' } )
}
end
end
但是当我运行规范测试时,我得到:
# rake spec
/usr/bin/ruby1.8 -S rspec spec/classes/mongodb_spec.rb --color
F
Failures:
1) mongodb On an Ubuntu install, admin and single user
Failure/Error: should contain_user('XXXX').with( { 'uid' => '***' } )
LoadError:
no such file to load -- hiera_puppet
# ./spec/fixtures/modules/hiera-puppet/lib/puppet/parser/functions/hiera.rb:3:in `function_hiera'
# ./spec/classes/mongodb_spec.rb:15
Finished in 0.05415 seconds
1 example, 1 failure
Failed examples:
rspec ./spec/classes/mongodb_spec.rb:14 # mongodb On an Ubuntu install, admin and single user
rake aborted!
/usr/bin/ruby1.8 -S rspec spec/classes/mongodb_spec.rb --color failed
Tasks: TOP => spec_standalone
(See full trace by running task with --trace)
模块规范测试相对较新,hiera 也是如此。到目前为止,我一直无法找到任何合适的解决方案。(关于 puppet-dev 的来回讨论很有趣,但没有帮助)。
我需要进行哪些更改才能使其正常工作?由于公司政策的原因,从 gem 安装 puppet 并破解 rubylib 并不是一个可行的解决方案。
我正在使用 Ubuntu 12.04 LTS + Puppet 2.7.17 + hiera 0.3.0。
rspec-hiera-puppet gem
https://github.com/amfranz/rspec-hiera-puppet
在你的宝石文件中:
在你的
spec_helper.rb
:`require 'rspec-hiera-puppet'在
spec/shared_context.rb
:我在这里使用它:
https://github.com/haf/puppet-riak
随意看看。
不幸的是,
puppetlabs_spec_helper
目前不支持hiera。我希望 Puppet 中的某个人或社区中的某个人迟早会提出一个好的解决方案。我知道很多人使用 Hiera,我真的希望他们能够使用我们拥有的工具来测试模块。正式地,hiera 不支持 2.7 的 puppetlabs_spec_helper,并将在未来的 3.x 兼容版本中提供。
非正式地,Puppet Developers 邮件列表告诉我有一个“hackish”补丁,您可以将其应用于 puppetlabs_spec_helper,这将允许在 hiera 支持下编写规范测试。缺点是,当 3.0 最终问世时,它可能会中断/需要一些重写等。