Я пытаюсь начать использовать rspec для тестирования некоторых уже сделанных (и в производстве) марионеточных модулей, но эта вещь все время пытается меня разозлить.Rspec + марионетка: вложенные светильники?
Во-первых, я делаю «полный» тест с рейком. Задача:
Rakefile:
desc 'Validate manifests, templates, and ruby files'
task :validate do
Dir['manifests/**/*.pp'].each do |manifest|
sh "puppet parser validate --noop #{manifest}"
end
Dir['spec/**/*.rb', 'lib/**/*.rb'].each do |ruby_file|
sh "ruby -C#{ruby_file}" unless ruby_file =~ %r{spec/fixtures}
end
Dir['templates/**/*.erb'].each do |template|
sh "erb -P -x -T '-' #{template} | ruby -c"
end
end
desc 'Run metadata_lint, lint, validate, and spec tests.'
task :test do
[:metadata_lint, :lint, :validate, :spec].each do |test|
Rake::Task[test].invoke
end
первый вопрос я имел, был с этой ошибкой:
1) rcphp should contain Package[rcphp]
Failure/Error: it { is_expected.to contain_package('rcphp') }
Puppet::PreformattedError:
Evaluation Error: Error while evaluating a Resource Statement, Could not find declared class rcphp at line 1:1 on node test.example.com
После исследования некоторого времени, я обнаружил, что я должен поставить модули я был используя в .fixtures.yml. Звук достаточно прост, так что я сделал:
fixtures:
symlinks:
rcphp: "#{source_dir}"
repositories:
php: "git://github.com/voxpupuli/puppet-php.git"
inifile: "git://github.com/puppetlabs/puppetlabs-inifile.git"
forge_modules:
stdlib:
repo: "puppetlabs/stdlib"
ref: "4.12.0"
С этого момента вещи перестают иметь смысл. Я получил ошибку:
Failure/Error: contain "::yum::repo::${yum_repo}"
Puppet::PreformattedError:
Evaluation Error: Error while evaluating a Function Call, Could not find class ::yum::repo::remi_php56 for test.example.com at /home/luis.brandao/git/rcphp/spec/fixtures/modules/php/manifests/repo/redhat.pp:12:3 on node test.example.com
The :: yum :: repo был вызван модулем PHP. Модуль php имеет собственные приспособления. Я попытался добавить это, и появилась другая вложенная зависимость модуля. Это не может быть правильным, я должен понять это и добавить вручную все дерево зависимостей, чтобы сделать простой тест?
R10k и CodeManager не могут их решить, но не способны ли библиотекари-марионетки? Несмотря на это, он использует марионетку-spec-helper, так что это может быть другое место, где я должен марионетку> puppetlabs-spec-helper для бедных людей, которые все еще используют puppetlabs-spec-helper. –
Да, библиотекарь-марионетка может - но, как вы говорите, puppetlabs_spec_helper не может это использовать. Он поддерживает установку модулей из Forge в светильниках, но он поставляет '--ignore-dependencies', поэтому не будет загружать все необходимое. –
Хорошо, поэтому эта проблема связана с использованием hg/git для захвата светильников и головных болей от возможных методов переключения после того, как светильники уже заселены. Интересно. –