簡體   English   中英

rspec-puppet:人偶找不到聲明的類

[英]rspec-puppet: Puppet could not find declared class

我正在學習使用rspec在我的puppet模塊上進行單元測試,但是以某種方式,我的簡單模塊“ rspec_test”無法通過測試。 該模塊僅包含一個init.pp文件,如下所示:

初始化文件

class rspec_test {
  class { 'test_class': }
}

這是執行“ $ rake spec”的錯誤消息:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -I/Library/Ruby/Gems/2.0.0/gems/rspec-support-3.2.1/lib:/Library/Ruby/Gems/2.0.0/gems/rspec-core-3.2.0/lib /Library/Ruby/Gems/2.0.0/gems/rspec-core-3.2.0/exe/rspec --pattern spec/\*/\*_spec.rb
F

Failures:

  1) rspec_test should contain Class[rspec_test]
     Failure/Error: it { should create_class('rspec_test')}
     Puppet::Error:
       Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class test_class at /Users/gli/service/modules/rspec_test/spec/fixtures/modules/rspec_test/manifests/init.pp:2 on node oakm01154b9d1.iparadigms.com
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/resource.rb:252:in `initialize'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/resource.rb:118:in `initialize'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/resource.rb:44:in `new'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/resource.rb:44:in `block (3 levels) in evaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/util/errors.rb:62:in `exceptwrap'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/resource.rb:43:in `block (2 levels) in evaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/resource.rb:42:in `collect'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/resource.rb:42:in `block in evaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/branch.rb:12:in `block in each'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/branch.rb:11:in `each'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/branch.rb:11:in `each'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/resource.rb:25:in `collect'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/resource.rb:25:in `evaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast.rb:61:in `safeevaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/block_expression.rb:11:in `block in evaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/block_expression.rb:10:in `each'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/block_expression.rb:10:in `evaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast.rb:61:in `safeevaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/resource/type.rb:127:in `evaluate_code'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/resource.rb:79:in `evaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/compiler.rb:233:in `each'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/compiler.rb:233:in `evaluate_classes'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/functions/include.rb:31:in `block in <top (required)>'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/functions.rb:164:in `block (2 levels) in newfunction'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/util/profiler.rb:51:in `profile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/functions.rb:157:in `block in newfunction'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/function.rb:42:in `evaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast.rb:61:in `safeevaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/block_expression.rb:11:in `block in evaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/block_expression.rb:10:in `each'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast/block_expression.rb:10:in `evaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/ast.rb:61:in `safeevaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/resource/type.rb:127:in `evaluate_code'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/resource.rb:79:in `evaluate'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/compiler.rb:425:in `evaluate_main'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/compiler.rb:131:in `block (2 levels) in compile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/util/profiler.rb:51:in `profile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/compiler.rb:131:in `block in compile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/context.rb:64:in `override'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet.rb:244:in `override'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/compiler.rb:117:in `compile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/parser/compiler.rb:34:in `compile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/indirector/catalog/compiler.rb:95:in `block (2 levels) in compile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/util/profiler/around_profiler.rb:58:in `profile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/util/profiler.rb:51:in `profile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/indirector/catalog/compiler.rb:93:in `block in compile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/util.rb:161:in `block in benchmark'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/util.rb:160:in `benchmark'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/indirector/catalog/compiler.rb:92:in `compile'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/indirector/catalog/compiler.rb:52:in `find'
     # /Library/Ruby/Gems/2.0.0/gems/puppet-3.7.4/lib/puppet/indirector/indirection.rb:201:in `find'
     # /Library/Ruby/Gems/2.0.0/gems/rspec-puppet-2.0.0/lib/rspec-puppet/support.rb:162:in `build_catalog_without_cache'
     # /Library/Ruby/Gems/2.0.0/gems/rspec-puppet-2.0.0/lib/rspec-puppet/support.rb:171:in `build_catalog'
     # /Library/Ruby/Gems/2.0.0/gems/rspec-puppet-2.0.0/lib/rspec-puppet/support.rb:21:in `load_catalogue'
     # /Library/Ruby/Gems/2.0.0/gems/rspec-puppet-2.0.0/lib/rspec-puppet/example/class_example_group.rb:7:in `catalogue'
     # /Library/Ruby/Gems/2.0.0/gems/rspec-puppet-2.0.0/lib/rspec-puppet/support.rb:7:in `block in subject'
     # /Library/Ruby/Gems/2.0.0/gems/rspec-puppet-2.0.0/lib/rspec-puppet/matchers/create_generic.rb:82:in `call'
     # /Library/Ruby/Gems/2.0.0/gems/rspec-puppet-2.0.0/lib/rspec-puppet/matchers/create_generic.rb:82:in `matches?'
     # ./spec/classes/init_spec.rb:5:in `block (2 levels) in <top (required)>'

Deprecation Warnings:

Filtering by an `:example_group` subhash is deprecated. Use the subhash to filter directly instead. Called from /Library/Ruby/Gems/2.0.0/gems/rspec-puppet-2.0.0/lib/rspec-puppet/example.rb:13:in `block in <top (required)>'.
Filtering by an `:example_group` subhash is deprecated. Use the subhash to filter directly instead. Called from /Library/Ruby/Gems/2.0.0/gems/rspec-puppet-2.0.0/lib/rspec-puppet/example.rb:16:in `block in <top (required)>'.
Filtering by an `:example_group` subhash is deprecated. Use the subhash to filter directly instead. Called from /Library/Ruby/Gems/2.0.0/gems/rspec-puppet-2.0.0/lib/rspec-puppet/example.rb:19:in `block in <top (required)>'.
Too many uses of deprecated 'Filtering by an `:example_group` subhash'. Pass `--deprecation-out` or set `config.deprecation_stream` to a file for full output.


If you need more of the backtrace for any of these deprecations to
identify where to make the necessary changes, you can configure
`config.raise_errors_for_deprecations!`, and it will turn the
deprecation warnings into errors, giving you the full backtrace.

4 deprecation warnings total

Finished in 0.06932 seconds (files took 0.66053 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/classes/init_spec.rb:5 # rspec_test should contain Class[rspec_test]

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -I/Library/Ruby/Gems/2.0.0/gems/rspec-support-3.2.1/lib:/Library/Ruby/Gems/2.0.0/gems/rspec-core-3.2.0/lib /Library/Ruby/Gems/2.0.0/gems/rspec-core-3.2.0/exe/rspec --pattern spec/\*/\*_spec.rb failed

我將測試文件命名為“ init_spec.rb”,這里是內容:

require 'spec_helper'

describe "rspec_test" do
  it { should create_class('rspec_test')}
end

和其他文件...

瑞克文件

require 'rake'
require 'rspec/core/rake_task'

RSpec::Core::RakeTask.new(:spec) do |t|
  t.pattern = 'spec/*/*_spec.rb'
end

spec_helper.rb

require 'rspec-puppet'

fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures'))

RSpec.configure do |c|
  c.module_path = File.join(fixture_path, 'modules')
  c.manifest_dir = File.join(fixture_path, 'manifests')
end

我在模塊的根目錄中執行“ $ rspec-puppet-init”以設置測試環境,因此文件結構應為標准結構。 有人可以告訴我我做錯了什么嗎? 謝謝!

在我看來,它像設計的那樣工作。

您的清單無法編譯。 它聲明了一個類test_class但未在任何地方定義該類。

您應該從一個空的類rspec_test並實現第一個測試,然后從那里開始工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM