使用 join 的 Puppet 模块在生产中有效但破坏了测试
Puppet module using join works in production but breaks tests
我有一个包含以下行的模块:
join(lookup('latest_packages'),"\n")
在生产中它可以工作,但我正在尝试根据 puppet module generate
中的模板重新构建模块,包括测试。
当我运行rake spec
我回来的时候:
1) custom_facts with default values for all parameters should contain Class[custom_facts]
Failure/Error: it { should contain_class('custom_facts') }
Puppet::PreformattedError:
Evaluation Error: Unknown function: 'join'. at /home/philip/projects/control-repo-globals/modules/custom_facts/spec/fixtures/modules/custom_facts/manifests/init.pp:8:16 on node philip-thinkpad-t420.lan
如何从测试内部访问连接函数?
这通常是由于 Puppet 找不到包含您的 Puppet 函数的 Ruby 库造成的。
尝试向您的 spec/spec_helper.rb
添加如下内容:
$LOAD_PATH << './modules/lib'
我能够通过创建一个包含标准人偶库的 .fixtures.yml
来解决问题:
fixtures:
repositories:
stdlib: git://github.com/puppetlabs/puppetlabs-stdlib.git
我有一个包含以下行的模块:
join(lookup('latest_packages'),"\n")
在生产中它可以工作,但我正在尝试根据 puppet module generate
中的模板重新构建模块,包括测试。
当我运行rake spec
我回来的时候:
1) custom_facts with default values for all parameters should contain Class[custom_facts]
Failure/Error: it { should contain_class('custom_facts') }
Puppet::PreformattedError:
Evaluation Error: Unknown function: 'join'. at /home/philip/projects/control-repo-globals/modules/custom_facts/spec/fixtures/modules/custom_facts/manifests/init.pp:8:16 on node philip-thinkpad-t420.lan
如何从测试内部访问连接函数?
这通常是由于 Puppet 找不到包含您的 Puppet 函数的 Ruby 库造成的。
尝试向您的 spec/spec_helper.rb
添加如下内容:
$LOAD_PATH << './modules/lib'
我能够通过创建一个包含标准人偶库的 .fixtures.yml
来解决问题:
fixtures:
repositories:
stdlib: git://github.com/puppetlabs/puppetlabs-stdlib.git