Unit testing 为Puppet模块运行单元测试

Unit testing 为Puppet模块运行单元测试,unit-testing,rspec,puppet,rspec-puppet,Unit Testing,Rspec,Puppet,Rspec Puppet,我想增加一些木偶4模块。为了开始并确认基本功能,我首先要运行标准Puppet模块附带的单元测试,例如 如果我试着像这样运行一个特定的单元测试 cd modules/apt rspec spec/classes/apt_spec.rb 我只得到了失败,一些诊断输出似乎表明Puppet运行时环境的一部分(例如模块stdlib,它定义了函数merge)没有正确拾取: Failures: 1) apt defaults should contain File[sources.list] that

我想增加一些木偶4模块。为了开始并确认基本功能,我首先要运行标准Puppet模块附带的单元测试,例如

如果我试着像这样运行一个特定的单元测试

cd modules/apt
rspec spec/classes/apt_spec.rb
我只得到了失败,一些诊断输出似乎表明Puppet运行时环境的一部分(例如模块
stdlib
,它定义了函数
merge
)没有正确拾取:

Failures:

  1) apt defaults should contain File[sources.list] that notifies Class[Apt::Update]
     Failure/Error:
       it { is_expected.to contain_file('sources.list').that_notifies('Class[Apt::Update]').only_with({
         :ensure  => 'file',
         :path    => '/etc/apt/sources.list',
         :owner   => 'root',
         :group   => 'root',
         :mode    => '0644',
         :notify  => 'Class[Apt::Update]',
       })}

     Puppet::PreformattedError:
       Evaluation Error: Unknown function: 'merge'. at /home/MY_USER/modules/apt/spec/fixtures/modules/apt/manifests/init.pp:50:14 on node MY_HOST
如果我试着像这样运行所有的单元测试

rake spec
我收到以下错误消息:

rake aborted!
NameError: uninitialized constant Bundler
/home/MY_USER/modules/apt/Rakefile:3:in `<top (required)>'
(See full trace by running task with --trace)

我的问题是:如何正确准备运行时环境并成功运行Puppet Forge的Puppet模块附带的单元测试,如
puppetlabs/apt

要做到这一点,您需要首先确保已安装。然后确保您有,这通常只意味着键入:

$ gem install bundler
接下来,我假设您已经克隆了apt模块,因此将cd放入克隆的目录中,然后安装您的捆绑包:

$ bundle install
现在,您选择的特定模块有一个问题。当我尝试运行bundle安装时,我得到:

Could not find gem 'puppet-module-posix-default-r2.0' in any of the gem sources listed in your Gemfile or available on this machine.
我现在不确定这意味着什么,可能需要有人提出一个错误

我希望能够通过以下方式解决此问题:

$ bundle install --without development system_tests
即使这样也不起作用,所以我只是简单地将这些组注释掉

接下来,使用以下命令运行测试:

$ bundle exec rake spec
这通常会运行测试。然而,我认为Puppet已经打破了针对公司以外人员的Rspec测试

我会继续跟进,然后回来更新我已经知道发生了什么的答案

我将把这个答案留在这里,因为它仍然记录着正确的程序


关于这个问题,请参见我的文章,尽管现在可能有点过时了。如果有什么需要更新的,请告诉我。

Thx。由于目前还不清楚
puppetlabs/apt
的测试应该如何运行,我将发布一个关于从头开始创建和运行单元测试的后续问题。我将编辑我的答案,我已经找到了答案。我这里有一个不受支持的Ruby版本。事实上,我没有。文件中缺少Rake。仍然感到困惑。根据Gemfile,我同意Puppet正在使用一些来自内部回购的定制gem进行模块的单元测试。大部分是的副本,我在其中找到了指向新Puppet开发工具包的答案。
$ bundle exec rake spec