使用 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