Unit testing 为Puppet模块运行单元测试
我想增加一些木偶4模块。为了开始并确认基本功能,我首先要运行标准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
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