2015-02-19 4 views
0

Я учусь использовать rspec для модульного тестирования моего кукольного модуля, но каким-то образом мой простой модуль «rspec_test» просто не смог пройти тестирование. Модуль просто содержит init.pp файл, который выглядит следующим образом:rspec-puppet: Puppet не смог найти объявленный класс

init.pp

class rspec_test { 
    class { 'test_class': } 
} 

Вот сообщение об ошибке от выполнения "$ рейка спецификации":

/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 

и другие файлы ...

Rakefile

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-кукольный INIT" в корневом каталоге модуля для настройки среды тестирования, поэтому структура файла должна быть стандартным. Может ли кто-нибудь сказать мне, где я ошибся? Благодаря!

ответ

3

Похоже, что он работает так, как он был разработан.

Ваш манифест не может быть скомпилирован. Он объявляет класс test_class, но этот класс нигде не определен.

Вы должны начать с пустого класса rspec_test и выполнить первый тест, а затем работать оттуда.

+0

Wow Thanks! Это сработало! Думаю, я должен начать с основ: p –