puppet 3.2.4 → 3.3.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- data/COMMITTERS.md +101 -42
- data/Gemfile +15 -4
- data/README.md +5 -1
- data/README_DEVELOPER.md +117 -54
- data/Rakefile +4 -0
- data/ext/build_defaults.yaml +3 -2
- data/ext/debian/puppet-common.manpages +33 -1
- data/ext/gentoo/init.d/puppet +1 -1
- data/ext/gentoo/init.d/puppetmaster +1 -1
- data/ext/redhat/puppet.spec.erb +0 -1
- data/install.rb +2 -1
- data/lib/hiera/backend/puppet_backend.rb +1 -1
- data/lib/puppet/application.rb +10 -9
- data/lib/puppet/application/agent.rb +87 -93
- data/lib/puppet/application/apply.rb +0 -2
- data/lib/puppet/application/device.rb +3 -3
- data/lib/puppet/application/kick.rb +2 -2
- data/lib/puppet/application/master.rb +41 -19
- data/lib/puppet/application/queue.rb +5 -3
- data/lib/puppet/bindings.rb +147 -0
- data/lib/puppet/configurer.rb +25 -15
- data/lib/puppet/configurer/fact_handler.rb +2 -9
- data/lib/puppet/daemon.rb +44 -33
- data/lib/puppet/defaults.rb +57 -26
- data/lib/puppet/error.rb +1 -1
- data/lib/puppet/external/dot.rb +2 -2
- data/lib/puppet/external/nagios/base.rb +1 -6
- data/lib/puppet/external/pson/common.rb +2 -2
- data/lib/puppet/external/pson/pure/generator.rb +2 -2
- data/lib/puppet/external/pson/pure/parser.rb +1 -1
- data/lib/puppet/face/ca.rb +1 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/help.rb +2 -2
- data/lib/puppet/face/module/list.rb +2 -2
- data/lib/puppet/feature/rails.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +0 -1
- data/lib/puppet/file_serving/base.rb +1 -1
- data/lib/puppet/file_serving/configuration/parser.rb +20 -14
- data/lib/puppet/forge.rb +0 -32
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/errors.rb +3 -3
- data/lib/puppet/forge/repository.rb +7 -42
- data/lib/puppet/graph.rb +11 -0
- data/lib/puppet/graph/key.rb +26 -0
- data/lib/puppet/graph/prioritizer.rb +29 -0
- data/lib/puppet/graph/random_prioritizer.rb +16 -0
- data/lib/puppet/{rb_tree_map.rb → graph/rb_tree_map.rb} +3 -3
- data/lib/puppet/graph/relationship_graph.rb +246 -0
- data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
- data/lib/puppet/{simple_graph.rb → graph/simple_graph.rb} +22 -3
- data/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
- data/lib/puppet/indirector.rb +2 -2
- data/lib/puppet/indirector/catalog/compiler.rb +10 -7
- data/lib/puppet/indirector/catalog/static_compiler.rb +50 -0
- data/lib/puppet/indirector/certificate/rest.rb +1 -1
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +2 -2
- data/lib/puppet/indirector/facts/inventory_active_record.rb +0 -1
- data/lib/puppet/indirector/facts/network_device.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +0 -1
- data/lib/puppet/indirector/indirection.rb +2 -2
- data/lib/puppet/indirector/memory.rb +9 -0
- data/lib/puppet/indirector/node/ldap.rb +2 -4
- data/lib/puppet/indirector/report/processor.rb +1 -2
- data/lib/puppet/indirector/report/rest.rb +1 -1
- data/lib/puppet/indirector/request.rb +32 -10
- data/lib/puppet/indirector/resource/rest.rb +1 -1
- data/lib/puppet/indirector/resource_type/parser.rb +31 -12
- data/lib/puppet/interface.rb +1 -1
- data/lib/puppet/interface/documentation.rb +7 -11
- data/lib/puppet/interface/option.rb +1 -1
- data/lib/puppet/interface/option_builder.rb +1 -1
- data/lib/puppet/metatype/manager.rb +2 -2
- data/lib/puppet/module.rb +7 -1
- data/lib/puppet/module_tool.rb +1 -1
- data/lib/puppet/module_tool/applications/application.rb +10 -0
- data/lib/puppet/module_tool/applications/installer.rb +6 -3
- data/lib/puppet/module_tool/dependency.rb +2 -0
- data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
- data/lib/puppet/module_tool/metadata.rb +25 -13
- data/lib/puppet/module_tool/modulefile.rb +7 -7
- data/lib/puppet/module_tool/shared_behaviors.rb +4 -2
- data/lib/puppet/module_tool/skeleton.rb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +5 -5
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +5 -4
- data/lib/puppet/network/auth_config_parser.rb +3 -0
- data/lib/puppet/network/authconfig.rb +0 -1
- data/lib/puppet/network/authorization.rb +1 -1
- data/lib/puppet/network/authstore.rb +2 -2
- data/lib/puppet/network/format_handler.rb +25 -114
- data/lib/puppet/network/format_support.rb +106 -0
- data/lib/puppet/network/formats.rb +10 -4
- data/lib/puppet/network/http/compression.rb +1 -1
- data/lib/puppet/network/http/connection.rb +76 -32
- data/lib/puppet/network/http/handler.rb +122 -61
- data/lib/puppet/network/http/rack/rest.rb +1 -1
- data/lib/puppet/network/http/webrick/rest.rb +9 -3
- data/lib/puppet/network/http_pool.rb +2 -2
- data/lib/puppet/network/resolver.rb +1 -0
- data/lib/puppet/network/server.rb +5 -81
- data/lib/puppet/node/environment.rb +256 -13
- data/lib/puppet/node/facts.rb +28 -2
- data/lib/puppet/parameter.rb +27 -18
- data/lib/puppet/parameter/boolean.rb +20 -0
- data/lib/puppet/parameter/path.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parameter/value_collection.rb +1 -1
- data/lib/puppet/parser/ast/arithmetic_operator.rb +8 -0
- data/lib/puppet/parser/ast/casestatement.rb +0 -3
- data/lib/puppet/parser/ast/lambda.rb +25 -6
- data/lib/puppet/parser/ast/leaf.rb +10 -3
- data/lib/puppet/parser/ast/nop.rb +1 -1
- data/lib/puppet/parser/ast/resource_override.rb +0 -2
- data/lib/puppet/parser/compiler.rb +92 -34
- data/lib/puppet/parser/files.rb +0 -5
- data/lib/puppet/parser/functions/create_resources.rb +23 -46
- data/lib/puppet/parser/functions/each.rb +0 -2
- data/lib/puppet/parser/functions/extlookup.rb +2 -2
- data/lib/puppet/parser/functions/foreach.rb +0 -2
- data/lib/puppet/parser/functions/hiera_include.rb +1 -1
- data/lib/puppet/parser/functions/lookup.rb +44 -0
- data/lib/puppet/parser/functions/slice.rb +1 -1
- data/lib/puppet/parser/grammar.ra +0 -1
- data/lib/puppet/parser/lexer.rb +0 -1
- data/lib/puppet/parser/parser.rb +0 -1
- data/lib/puppet/parser/parser_factory.rb +3 -2
- data/lib/puppet/parser/parser_support.rb +1 -1
- data/lib/puppet/parser/relationship.rb +1 -1
- data/lib/puppet/parser/scope.rb +49 -24
- data/lib/puppet/parser/type_loader.rb +13 -18
- data/lib/puppet/pops.rb +45 -0
- data/lib/puppet/pops/adaptable.rb +2 -2
- data/lib/puppet/pops/adapters.rb +4 -0
- data/lib/puppet/pops/binder/binder.rb +421 -0
- data/lib/puppet/pops/binder/binder_issues.rb +142 -0
- data/lib/puppet/pops/binder/bindings_checker.rb +217 -0
- data/lib/puppet/pops/binder/bindings_composer.rb +241 -0
- data/lib/puppet/pops/binder/bindings_factory.rb +847 -0
- data/lib/puppet/pops/binder/bindings_label_provider.rb +46 -0
- data/lib/puppet/pops/binder/bindings_loader.rb +79 -0
- data/lib/puppet/pops/binder/bindings_model.rb +215 -0
- data/lib/puppet/pops/binder/bindings_model_dumper.rb +205 -0
- data/lib/puppet/pops/binder/bindings_validator_factory.rb +28 -0
- data/lib/puppet/pops/binder/config/binder_config.rb +139 -0
- data/lib/puppet/pops/binder/config/binder_config_checker.rb +183 -0
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +32 -0
- data/lib/puppet/pops/binder/config/issues.rb +106 -0
- data/lib/puppet/pops/binder/hiera2.rb +10 -0
- data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +148 -0
- data/lib/puppet/pops/binder/hiera2/config.rb +69 -0
- data/lib/puppet/pops/binder/hiera2/config_checker.rb +68 -0
- data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +36 -0
- data/lib/puppet/pops/binder/hiera2/issues.rb +67 -0
- data/lib/puppet/pops/binder/hiera2/json_backend.rb +18 -0
- data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +21 -0
- data/lib/puppet/pops/binder/injector.rb +688 -0
- data/lib/puppet/pops/binder/injector_entry.rb +53 -0
- data/lib/puppet/pops/binder/key_factory.rb +61 -0
- data/lib/puppet/pops/binder/producers.rb +829 -0
- data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +67 -0
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +34 -0
- data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +92 -0
- data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +84 -0
- data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +54 -0
- data/lib/puppet/pops/binder/system_bindings.rb +72 -0
- data/lib/puppet/pops/issue_reporter.rb +75 -0
- data/lib/puppet/pops/issues.rb +9 -5
- data/lib/puppet/pops/model/ast_transformer.rb +4 -4
- data/lib/puppet/pops/model/ast_tree_dumper.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +25 -13
- data/lib/puppet/pops/model/model.rb +1 -1
- data/lib/puppet/pops/model/tree_dumper.rb +2 -2
- data/lib/puppet/pops/parser/egrammar.ra +0 -1
- data/lib/puppet/pops/parser/eparser.rb +1 -2
- data/lib/puppet/pops/parser/evaluating_parser.rb +162 -0
- data/lib/puppet/pops/parser/lexer.rb +8 -6
- data/lib/puppet/pops/types/class_loader.rb +118 -0
- data/lib/puppet/pops/types/type_calculator.rb +557 -0
- data/lib/puppet/pops/types/type_factory.rb +147 -0
- data/lib/puppet/pops/types/type_parser.rb +117 -0
- data/lib/puppet/pops/types/types.rb +132 -0
- data/lib/puppet/pops/validation.rb +146 -17
- data/lib/puppet/pops/validation/checker3_1.rb +1 -1
- data/lib/puppet/pops/validation/validator_factory_3_1.rb +6 -16
- data/lib/puppet/property.rb +3 -3
- data/lib/puppet/property/keyvalue.rb +1 -1
- data/lib/puppet/provider.rb +2 -2
- data/lib/puppet/provider/aixobject.rb +19 -21
- data/lib/puppet/provider/augeas/augeas.rb +3 -1
- data/lib/puppet/provider/command.rb +2 -2
- data/lib/puppet/provider/group/aix.rb +1 -1
- data/lib/puppet/provider/group/ldap.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
- data/lib/puppet/provider/mailalias/aliases.rb +3 -8
- data/lib/puppet/provider/mcx/mcxcontent.rb +7 -1
- data/lib/puppet/provider/mount.rb +8 -3
- data/lib/puppet/provider/nameservice.rb +1 -1
- data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +0 -1
- data/lib/puppet/provider/package/dpkg.rb +86 -32
- data/lib/puppet/provider/package/fink.rb +0 -2
- data/lib/puppet/provider/package/freebsd.rb +0 -2
- data/lib/puppet/provider/package/openbsd.rb +57 -10
- data/lib/puppet/provider/package/opkg.rb +0 -1
- data/lib/puppet/provider/package/pacman.rb +0 -1
- data/lib/puppet/provider/package/pip.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +17 -6
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +9 -1
- data/lib/puppet/provider/package/ports.rb +2 -2
- data/lib/puppet/provider/package/rpm.rb +29 -12
- data/lib/puppet/provider/package/rug.rb +1 -1
- data/lib/puppet/provider/package/urpmi.rb +11 -15
- data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
- data/lib/puppet/provider/package/windows/package.rb +1 -26
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package/zypper.rb +22 -3
- data/lib/puppet/provider/parsedfile.rb +1 -12
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +1 -1
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +3 -3
- data/lib/puppet/provider/service/debian.rb +1 -1
- data/lib/puppet/provider/service/init.rb +14 -20
- data/lib/puppet/provider/service/openrc.rb +3 -1
- data/lib/puppet/provider/service/redhat.rb +5 -8
- data/lib/puppet/provider/service/runit.rb +3 -2
- data/lib/puppet/provider/service/systemd.rb +1 -1
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
- data/lib/puppet/provider/sshkey/parsed.rb +0 -2
- data/lib/puppet/provider/user/aix.rb +25 -12
- data/lib/puppet/provider/user/directoryservice.rb +4 -7
- data/lib/puppet/provider/user/ldap.rb +0 -1
- data/lib/puppet/provider/user/user_role_add.rb +2 -0
- data/lib/puppet/provider/user/useradd.rb +1 -1
- data/lib/puppet/provider/zone/solaris.rb +1 -2
- data/lib/puppet/reference/metaparameter.rb +1 -1
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/reports/rrdgraph.rb +1 -1
- data/lib/puppet/reports/tagmail.rb +1 -1
- data/lib/puppet/resource.rb +16 -4
- data/lib/puppet/resource/catalog.rb +111 -173
- data/lib/puppet/resource/status.rb +42 -3
- data/lib/puppet/resource/type.rb +33 -46
- data/lib/puppet/resource/type_collection.rb +19 -15
- data/lib/puppet/run.rb +5 -1
- data/lib/puppet/scheduler/scheduler.rb +14 -15
- data/lib/puppet/settings.rb +78 -41
- data/lib/puppet/settings/boolean_setting.rb +0 -2
- data/lib/puppet/settings/config_file.rb +0 -2
- data/lib/puppet/settings/directory_setting.rb +0 -2
- data/lib/puppet/settings/duration_setting.rb +0 -2
- data/lib/puppet/settings/enum_setting.rb +16 -0
- data/lib/puppet/settings/file_setting.rb +0 -2
- data/lib/puppet/settings/path_setting.rb +0 -2
- data/lib/puppet/settings/string_setting.rb +0 -3
- data/lib/puppet/settings/terminus_setting.rb +0 -2
- data/lib/puppet/ssl/certificate_authority.rb +102 -9
- data/lib/puppet/test/test_helper.rb +1 -0
- data/lib/puppet/transaction.rb +130 -292
- data/lib/puppet/transaction/additional_resource_generator.rb +126 -0
- data/lib/puppet/transaction/event.rb +16 -1
- data/lib/puppet/transaction/report.rb +34 -14
- data/lib/puppet/transaction/resource_harness.rb +16 -19
- data/lib/puppet/type.rb +59 -53
- data/lib/puppet/type/component.rb +0 -2
- data/lib/puppet/type/cron.rb +13 -2
- data/lib/puppet/type/exec.rb +5 -7
- data/lib/puppet/type/file.rb +9 -32
- data/lib/puppet/type/file/content.rb +4 -1
- data/lib/puppet/type/file/ctime.rb +3 -1
- data/lib/puppet/type/file/ensure.rb +1 -1
- data/lib/puppet/type/file/mode.rb +0 -1
- data/lib/puppet/type/file/mtime.rb +2 -1
- data/lib/puppet/type/group.rb +7 -9
- data/lib/puppet/type/host.rb +1 -2
- data/lib/puppet/type/mcx.rb +0 -1
- data/lib/puppet/type/mount.rb +38 -6
- data/lib/puppet/type/package.rb +2 -2
- data/lib/puppet/type/resources.rb +5 -4
- data/lib/puppet/type/schedule.rb +1 -4
- data/lib/puppet/type/selmodule.rb +1 -1
- data/lib/puppet/type/service.rb +1 -3
- data/lib/puppet/type/tidy.rb +3 -3
- data/lib/puppet/type/user.rb +9 -13
- data/lib/puppet/type/yumrepo.rb +11 -7
- data/lib/puppet/util.rb +14 -7
- data/lib/puppet/util/autoload.rb +0 -1
- data/lib/puppet/util/backups.rb +1 -3
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/command_line/puppet_option_parser.rb +1 -3
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/constant_inflector.rb +1 -2
- data/lib/puppet/util/errors.rb +1 -0
- data/lib/puppet/util/file_watcher.rb +28 -0
- data/lib/puppet/util/fileparsing.rb +1 -3
- data/lib/puppet/util/filetype.rb +0 -1
- data/lib/puppet/util/http_proxy.rb +38 -0
- data/lib/puppet/util/ldap/manager.rb +1 -2
- data/lib/puppet/util/log.rb +31 -10
- data/lib/puppet/util/log/destinations.rb +0 -50
- data/lib/puppet/util/metric.rb +8 -1
- data/lib/puppet/util/monkey_patches.rb +14 -148
- data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +6 -9
- data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
- data/lib/puppet/util/pidlock.rb +3 -0
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/profiler.rb +1 -1
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +0 -1
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +50 -42
- data/lib/puppet/util/retryaction.rb +0 -1
- data/lib/puppet/util/symbolic_file_mode.rb +5 -1
- data/lib/puppet/util/tagging.rb +0 -2
- data/lib/puppet/util/warnings.rb +3 -0
- data/lib/puppet/util/watched_file.rb +37 -0
- data/lib/puppet/util/watcher.rb +17 -0
- data/lib/puppet/util/watcher/change_watcher.rb +33 -0
- data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
- data/lib/puppet/util/watcher/timer.rb +19 -0
- data/lib/puppet/util/windows/user.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppetx.rb +109 -0
- data/lib/puppetx/puppet/bindings_scheme_handler.rb +130 -0
- data/lib/puppetx/puppet/hiera2_backend.rb +31 -0
- data/lib/puppetx/puppet/syntax_checker.rb +91 -0
- data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +39 -0
- data/lib/semver.rb +1 -1
- data/man/man8/puppet-kick.8 +1 -1
- data/spec/fixtures/integration/provider/cron/crontab/unspecialized +15 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +18 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +8 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +1 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +10 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +19 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +1 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +11 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +1 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +3 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +13 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +4 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +11 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_scheme_handler.rb +18 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +1 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +3 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +9 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +2 -0
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +11 -0
- data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +9 -0
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +9 -0
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +9 -0
- data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +5 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +10 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +8 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +1 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +7 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +4 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +2 -0
- data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +8 -0
- data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/empty/common.yaml +0 -0
- data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +1 -0
- data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +2 -0
- data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +2 -0
- data/spec/integration/agent/logging_spec.rb +178 -0
- data/spec/integration/configurer_spec.rb +1 -1
- data/spec/integration/defaults_spec.rb +0 -6
- data/spec/integration/network/authconfig_spec.rb +19 -0
- data/spec/integration/network/server/webrick_spec.rb +10 -11
- data/spec/integration/parser/catalog_spec.rb +85 -0
- data/spec/integration/provider/cron/crontab_spec.rb +11 -0
- data/spec/integration/provider/mount_spec.rb +1 -0
- data/spec/integration/transaction_spec.rb +8 -8
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/settings_spec.rb +58 -11
- data/spec/lib/matchers/include_in_order.rb +21 -0
- data/spec/lib/matchers/include_in_order_spec.rb +30 -0
- data/spec/lib/matchers/relationship_graph_matchers.rb +48 -0
- data/spec/lib/puppet_spec/compiler.rb +24 -0
- data/spec/lib/puppet_spec/pops.rb +16 -0
- data/spec/spec_helper.rb +0 -1
- data/spec/unit/application/agent_spec.rb +145 -145
- data/spec/unit/application/apply_spec.rb +1 -1
- data/spec/unit/application/doc_spec.rb +1 -1
- data/spec/unit/application/face_base_spec.rb +3 -3
- data/spec/unit/application/facts_spec.rb +1 -0
- data/spec/unit/application/master_spec.rb +0 -15
- data/spec/unit/application/queue_spec.rb +6 -12
- data/spec/unit/application/resource_spec.rb +1 -1
- data/spec/unit/configurer/fact_handler_spec.rb +19 -50
- data/spec/unit/configurer_spec.rb +23 -7
- data/spec/unit/daemon_spec.rb +97 -121
- data/spec/unit/defaults_spec.rb +44 -0
- data/spec/unit/face/node_spec.rb +2 -2
- data/spec/unit/file_serving/configuration/parser_spec.rb +23 -33
- data/spec/unit/file_serving/configuration_spec.rb +2 -2
- data/spec/unit/file_serving/mount/file_spec.rb +4 -4
- data/spec/unit/forge/repository_spec.rb +9 -29
- data/spec/unit/graph/key_spec.rb +41 -0
- data/spec/unit/{rb_tree_map_spec.rb → graph/rb_tree_map_spec.rb} +7 -7
- data/spec/unit/graph/relationship_graph_spec.rb +393 -0
- data/spec/unit/graph/sequential_prioritizer_spec.rb +32 -0
- data/spec/unit/{simple_graph_spec.rb → graph/simple_graph.rb} +42 -254
- data/spec/unit/graph/title_hash_prioritizer_spec.rb +49 -0
- data/spec/unit/hiera_puppet_spec.rb +1 -1
- data/spec/unit/indirector/catalog/active_record_spec.rb +4 -2
- data/spec/unit/indirector/catalog/compiler_spec.rb +20 -26
- data/spec/unit/indirector/face_spec.rb +1 -1
- data/spec/unit/indirector/facts/facter_spec.rb +11 -1
- data/spec/unit/indirector/facts/network_device_spec.rb +11 -1
- data/spec/unit/indirector/hiera_spec.rb +1 -1
- data/spec/unit/indirector/instrumentation_data/local_spec.rb +1 -1
- data/spec/unit/indirector/instrumentation_listener/local_spec.rb +1 -1
- data/spec/unit/indirector/request_spec.rb +92 -39
- data/spec/unit/indirector/rest_spec.rb +1 -0
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/interface/option_builder_spec.rb +1 -0
- data/spec/unit/interface/option_spec.rb +1 -0
- data/spec/unit/interface_spec.rb +2 -2
- data/spec/unit/module_tool/applications/installer_spec.rb +49 -2
- data/spec/unit/module_tool/metadata_spec.rb +13 -0
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/format_handler_spec.rb +33 -282
- data/spec/unit/network/format_support_spec.rb +199 -0
- data/spec/unit/network/formats_spec.rb +2 -2
- data/spec/unit/network/http/connection_spec.rb +88 -7
- data/spec/unit/network/http/handler_spec.rb +271 -249
- data/spec/unit/network/http/rack/rest_spec.rb +1 -1
- data/spec/unit/network/http/webrick/rest_spec.rb +73 -22
- data/spec/unit/network/http_pool_spec.rb +40 -0
- data/spec/unit/network/server_spec.rb +18 -207
- data/spec/unit/node/facts_spec.rb +68 -17
- data/spec/unit/other/selinux_spec.rb +24 -20
- data/spec/unit/parameter/boolean_spec.rb +25 -0
- data/spec/unit/parameter/value_collection_spec.rb +7 -7
- data/spec/unit/parameter_spec.rb +10 -13
- data/spec/unit/parser/ast/function_spec.rb +4 -4
- data/spec/unit/parser/ast/leaf_spec.rb +45 -6
- data/spec/unit/parser/collector_spec.rb +3 -3
- data/spec/unit/parser/compiler_spec.rb +4 -3
- data/spec/unit/parser/functions/create_resources_spec.rb +9 -25
- data/spec/unit/parser/functions/extlookup_spec.rb +2 -2
- data/spec/unit/parser/functions/hiera_include_spec.rb +12 -0
- data/spec/unit/parser/functions/lookup_spec.rb +96 -0
- data/spec/unit/parser/functions/regsubst_spec.rb +2 -2
- data/spec/unit/parser/functions/split_spec.rb +2 -2
- data/spec/unit/parser/functions/sprintf_spec.rb +1 -1
- data/spec/unit/parser/functions/versioncmp_spec.rb +2 -2
- data/spec/unit/parser/functions_spec.rb +7 -7
- data/spec/unit/parser/lexer_spec.rb +1 -1
- data/spec/unit/parser/methods/collect_spec.rb +43 -0
- data/spec/unit/parser/resource_spec.rb +9 -9
- data/spec/unit/parser/scope_spec.rb +45 -2
- data/spec/unit/parser/type_loader_spec.rb +159 -175
- data/spec/unit/pops/binder/binder_spec.rb +62 -0
- data/spec/unit/pops/binder/bindings_checker_spec.rb +196 -0
- data/spec/unit/pops/binder/bindings_composer_spec.rb +89 -0
- data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +18 -0
- data/spec/unit/pops/binder/config/binder_config_spec.rb +48 -0
- data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +74 -0
- data/spec/unit/pops/binder/hiera2/config_spec.rb +61 -0
- data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +33 -0
- data/spec/unit/pops/binder/injector_spec.rb +789 -0
- data/spec/unit/pops/containment_spec.rb +1 -0
- data/spec/unit/pops/issues_spec.rb +1 -1
- data/spec/unit/pops/parser/evaluating_parser_spec.rb +88 -0
- data/spec/unit/pops/parser/lexer_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_calls_spec.rb +4 -0
- data/spec/unit/pops/parser/parser_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +484 -0
- data/spec/unit/pops/types/type_factory_spec.rb +65 -0
- data/spec/unit/pops/types/type_parser_spec.rb +93 -0
- data/spec/unit/property/list_spec.rb +1 -1
- data/spec/unit/property/ordered_list_spec.rb +1 -1
- data/spec/unit/provider/aixobject_spec.rb +101 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +14 -3
- data/spec/unit/provider/mcx/mcxcontent_spec.rb +52 -16
- data/spec/unit/provider/mount/parsed_spec.rb +44 -56
- data/spec/unit/provider/mount_spec.rb +11 -2
- data/spec/unit/provider/naginator_spec.rb +8 -0
- data/spec/unit/provider/package/apt_spec.rb +5 -1
- data/spec/unit/provider/package/aptitude_spec.rb +9 -5
- data/spec/unit/provider/package/aptrpm_spec.rb +2 -2
- data/spec/unit/provider/package/dpkg_spec.rb +274 -99
- data/spec/unit/provider/package/openbsd_spec.rb +84 -1
- data/spec/unit/provider/package/opkg_spec.rb +3 -3
- data/spec/unit/provider/package/pip_spec.rb +16 -0
- data/spec/unit/provider/package/pkgdmg_spec.rb +62 -7
- data/spec/unit/provider/package/rpm_spec.rb +112 -21
- data/spec/unit/provider/package/urpmi.rb +80 -0
- data/spec/unit/provider/package/windows/exe_package_spec.rb +1 -1
- data/spec/unit/provider/package/yum_spec.rb +85 -0
- data/spec/unit/provider/package/zypper_spec.rb +25 -6
- data/spec/unit/provider/parsedfile_spec.rb +3 -2
- data/spec/unit/provider/service/init_spec.rb +10 -10
- data/spec/unit/provider/service/openrc_spec.rb +16 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/redhat_spec.rb +7 -0
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +2 -2
- data/spec/unit/provider/user/aix_spec.rb +89 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +11 -4
- data/spec/unit/provider/user/user_role_add_spec.rb +18 -0
- data/spec/unit/provider_spec.rb +2 -13
- data/spec/unit/reports/http_spec.rb +1 -1
- data/spec/unit/resource/catalog_spec.rb +23 -97
- data/spec/unit/resource/resource_type.json +34 -0
- data/spec/unit/resource/status_spec.rb +56 -0
- data/spec/unit/resource/type_collection_spec.rb +6 -6
- data/spec/unit/resource/type_spec.rb +25 -5
- data/spec/unit/resource_spec.rb +68 -24
- data/spec/unit/run_spec.rb +16 -0
- data/spec/unit/scheduler/scheduler_spec.rb +14 -27
- data/spec/unit/semver_spec.rb +5 -0
- data/spec/unit/settings/enum_setting_spec.rb +27 -0
- data/spec/unit/settings_spec.rb +53 -44
- data/spec/unit/ssl/certificate_authority_spec.rb +155 -19
- data/spec/unit/transaction/additional_resource_generator_spec.rb +419 -0
- data/spec/unit/transaction/event_manager_spec.rb +2 -2
- data/spec/unit/transaction/event_spec.rb +57 -0
- data/spec/unit/transaction/report_spec.rb +66 -0
- data/spec/unit/transaction/resource_harness_spec.rb +27 -20
- data/spec/unit/transaction_spec.rb +182 -390
- data/spec/unit/type/augeas_spec.rb +3 -3
- data/spec/unit/type/component_spec.rb +0 -9
- data/spec/unit/type/computer_spec.rb +1 -1
- data/spec/unit/type/cron_spec.rb +2 -2
- data/spec/unit/type/exec_spec.rb +4 -2
- data/spec/unit/type/file/content_spec.rb +11 -0
- data/spec/unit/type/file/group_spec.rb +1 -1
- data/spec/unit/type/file_spec.rb +16 -8
- data/spec/unit/type/mount_spec.rb +445 -259
- data/spec/unit/type/package_spec.rb +4 -4
- data/spec/unit/type/resources_spec.rb +30 -1
- data/spec/unit/type/user_spec.rb +26 -3
- data/spec/unit/type/yumrepo_spec.rb +7 -27
- data/spec/unit/type/zone_spec.rb +4 -1
- data/spec/unit/type_spec.rb +66 -33
- data/spec/unit/util/backups_spec.rb +3 -3
- data/spec/unit/util/http_proxy_spec.rb +83 -0
- data/spec/unit/util/log_spec.rb +79 -8
- data/spec/unit/util/metric_spec.rb +12 -0
- data/spec/unit/util/monkey_patches_spec.rb +6 -0
- data/spec/unit/util/network_device/config_spec.rb +26 -64
- data/spec/unit/util/pidlock_spec.rb +4 -1
- data/spec/unit/util/tagging_spec.rb +5 -9
- data/spec/unit/util/warnings_spec.rb +1 -1
- data/spec/unit/util/watched_file_spec.rb +52 -0
- data/spec/unit/util/watcher/periodic_watcher_spec.rb +52 -0
- data/spec/unit/util/watcher_spec.rb +56 -0
- data/spec/unit/util_spec.rb +16 -0
- metadata +2767 -2576
- data/ext/debian/puppet.manpages +0 -32
- data/ext/osx/PackageInfo.plist +0 -36
- data/ext/osx/createpackage.sh +0 -187
- data/ext/redhat/rundir-perms.patch +0 -28
- data/lib/puppet/external/base64.rb +0 -19
- data/lib/puppet/util/graph.rb +0 -27
- data/lib/puppet/util/loadedfile.rb +0 -61
- data/lib/puppet/util/log_paths.rb +0 -22
- data/lib/puppet/util/subclass_loader.rb +0 -78
- data/spec/monkey_patches/publicize_methods.rb +0 -11
- data/spec/unit/util/loadedfile_spec.rb +0 -71
@@ -118,9 +118,9 @@ describe Puppet::Indirector, "when registering an indirection" do
|
|
118
118
|
@indirection = @thingie.indirects :first, :some => :options
|
119
119
|
end
|
120
120
|
|
121
|
-
it "should extend the class
|
121
|
+
it "should extend the class to handle serialization" do
|
122
122
|
@indirection = @thingie.indirects :first
|
123
|
-
@thingie.
|
123
|
+
@thingie.should respond_to(:convert_from)
|
124
124
|
end
|
125
125
|
|
126
126
|
after do
|
data/spec/unit/interface_spec.rb
CHANGED
@@ -24,11 +24,11 @@ describe Puppet::Interface do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
it "should raise an exception when the requested version is unavailable" do
|
27
|
-
expect { subject[:huzzah, '17.0.0'] }.to raise_error
|
27
|
+
expect { subject[:huzzah, '17.0.0'] }.to raise_error(Puppet::Error, /Could not find version/)
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should raise an exception when the requested face doesn't exist" do
|
31
|
-
expect { subject[:burrble_toot, :current] }.to raise_error, Puppet
|
31
|
+
expect { subject[:burrble_toot, :current] }.to raise_error(Puppet::Error, /Could not find Puppet Face/)
|
32
32
|
end
|
33
33
|
|
34
34
|
describe "version matching" do
|
@@ -42,6 +42,17 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => Puppet.features
|
|
42
42
|
|
43
43
|
let(:remote_dependency_info) do
|
44
44
|
{
|
45
|
+
"pmtacceptance/apache" => [
|
46
|
+
{ "dependencies" => [],
|
47
|
+
"version" => "1.0.0-alpha",
|
48
|
+
"file" => "/pmtacceptance-apache-1.0.0-alpha.tar.gz" },
|
49
|
+
{ "dependencies" => [],
|
50
|
+
"version" => "1.0.0-beta",
|
51
|
+
"file" => "/pmtacceptance-apache-1.0.0-beta.tar.gz" },
|
52
|
+
{ "dependencies" => [],
|
53
|
+
"version" => "1.0.0-rc1",
|
54
|
+
"file" => "/pmtacceptance-apache-1.0.0-rc1.tar.gz" },
|
55
|
+
],
|
45
56
|
"pmtacceptance/stdlib" => [
|
46
57
|
{ "dependencies" => [],
|
47
58
|
"version" => "0.0.1",
|
@@ -49,9 +60,15 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => Puppet.features
|
|
49
60
|
{ "dependencies" => [],
|
50
61
|
"version" => "0.0.2",
|
51
62
|
"file" => "/pmtacceptance-stdlib-0.0.2.tar.gz" },
|
63
|
+
{ "dependencies" => [],
|
64
|
+
"version" => "1.0.0-pre",
|
65
|
+
"file" => "/pmtacceptance-stdlib-1.0.0-pre.tar.gz" },
|
52
66
|
{ "dependencies" => [],
|
53
67
|
"version" => "1.0.0",
|
54
|
-
"file" => "/pmtacceptance-stdlib-1.0.0.tar.gz" }
|
68
|
+
"file" => "/pmtacceptance-stdlib-1.0.0.tar.gz" },
|
69
|
+
{ "dependencies" => [],
|
70
|
+
"version" => "1.5.0-pre",
|
71
|
+
"file" => "/pmtacceptance-stdlib-1.5.0-pre.tar.gz" },
|
55
72
|
],
|
56
73
|
"pmtacceptance/java" => [
|
57
74
|
{ "dependencies" => [["pmtacceptance/stdlib", ">= 0.0.1"]],
|
@@ -97,7 +114,7 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => Puppet.features
|
|
97
114
|
raise_error(ArgumentError, "Could not install module with invalid name: puppet")
|
98
115
|
end
|
99
116
|
|
100
|
-
it "should install the requested module" do
|
117
|
+
it "should install the current stable version of the requested module" do
|
101
118
|
Puppet::ModuleTool::Applications::Unpacker.expects(:new).
|
102
119
|
with('/fake_cache/pmtacceptance-stdlib-1.0.0.tar.gz', options).
|
103
120
|
returns(unpacker)
|
@@ -107,6 +124,36 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => Puppet.features
|
|
107
124
|
results[:installed_modules][0][:version][:vstring].should == "1.0.0"
|
108
125
|
end
|
109
126
|
|
127
|
+
it "should install the most recent version of requested module in the absence of a stable version" do
|
128
|
+
Puppet::ModuleTool::Applications::Unpacker.expects(:new).
|
129
|
+
with('/fake_cache/pmtacceptance-apache-1.0.0-rc1.tar.gz', options).
|
130
|
+
returns(unpacker)
|
131
|
+
results = installer_class.run('pmtacceptance-apache', forge, install_dir, options)
|
132
|
+
results[:installed_modules].length == 1
|
133
|
+
results[:installed_modules][0][:module].should == "pmtacceptance-apache"
|
134
|
+
results[:installed_modules][0][:version][:vstring].should == "1.0.0-rc1"
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should install the most recent stable version of requested module for the requested version range" do
|
138
|
+
Puppet::ModuleTool::Applications::Unpacker.expects(:new).
|
139
|
+
with('/fake_cache/pmtacceptance-stdlib-1.0.0.tar.gz', options.merge(:version => '1.x')).
|
140
|
+
returns(unpacker)
|
141
|
+
results = installer_class.run('pmtacceptance-stdlib', forge, install_dir, options.merge(:version => '1.x'))
|
142
|
+
results[:installed_modules].length == 1
|
143
|
+
results[:installed_modules][0][:module].should == "pmtacceptance-stdlib"
|
144
|
+
results[:installed_modules][0][:version][:vstring].should == "1.0.0"
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should install the most recent version of requested module for the requested version range in the absence of a stable version" do
|
148
|
+
Puppet::ModuleTool::Applications::Unpacker.expects(:new).
|
149
|
+
with('/fake_cache/pmtacceptance-stdlib-1.5.0-pre.tar.gz', options.merge(:version => '1.5.0-pre')).
|
150
|
+
returns(unpacker)
|
151
|
+
results = installer_class.run('pmtacceptance-stdlib', forge, install_dir, options.merge(:version => '1.5.0-pre'))
|
152
|
+
results[:installed_modules].length == 1
|
153
|
+
results[:installed_modules][0][:module].should == "pmtacceptance-stdlib"
|
154
|
+
results[:installed_modules][0][:version][:vstring].should == "1.5.0-pre"
|
155
|
+
end
|
156
|
+
|
110
157
|
context "should check the target directory" do
|
111
158
|
let(:installer) do
|
112
159
|
installer_class.new('pmtacceptance-stdlib', forge, install_dir, options)
|
@@ -8,4 +8,17 @@ describe Puppet::ModuleTool::Metadata do
|
|
8
8
|
metadata.license.should == "Apache License, Version 2.0"
|
9
9
|
end
|
10
10
|
end
|
11
|
+
|
12
|
+
describe :to_hash do
|
13
|
+
it 'should merge extra_data in' do
|
14
|
+
metadata = Puppet::ModuleTool::Metadata.new
|
15
|
+
metadata.extra_metadata = {
|
16
|
+
'checksums' => 'badsums',
|
17
|
+
'special_key' => 'special'
|
18
|
+
}
|
19
|
+
meta_hash = metadata.to_hash
|
20
|
+
meta_hash['special_key'].should == 'special'
|
21
|
+
meta_hash['checksums'].should == {}
|
22
|
+
end
|
23
|
+
end
|
11
24
|
end
|
@@ -82,7 +82,7 @@ describe Puppet::Network::AuthStore::Declaration do
|
|
82
82
|
end
|
83
83
|
|
84
84
|
(1..3).each { |n|
|
85
|
-
describe "when the pattern is
|
85
|
+
describe "when the pattern is an IP mask with #{n} numeric segments and a *" do
|
86
86
|
before :each do
|
87
87
|
@ip_pattern = ip.split('.')[0,n].join('.')+'.*'
|
88
88
|
@declaration = Puppet::Network::AuthStore::Declaration.new(:allow_ip,@ip_pattern)
|
@@ -3,209 +3,33 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
require 'puppet/network/format_handler'
|
5
5
|
|
6
|
-
class FormatTester
|
7
|
-
extend Puppet::Network::FormatHandler
|
8
|
-
end
|
9
|
-
|
10
6
|
describe Puppet::Network::FormatHandler do
|
11
|
-
|
12
|
-
|
13
|
-
formats
|
14
|
-
formats.delete(name) unless format.is_a?(Puppet::Network::Format)
|
15
|
-
end
|
7
|
+
before(:each) do
|
8
|
+
@saved_formats = Puppet::Network::FormatHandler.instance_variable_get(:@formats).dup
|
9
|
+
Puppet::Network::FormatHandler.instance_variable_set(:@formats, {})
|
16
10
|
end
|
17
11
|
|
18
|
-
|
19
|
-
|
12
|
+
after(:each) do
|
13
|
+
Puppet::Network::FormatHandler.instance_variable_set(:@formats, @saved_formats)
|
20
14
|
end
|
21
15
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
four = stub 'supported', :supported? => false, :name => :four, :weight => 1
|
27
|
-
Puppet::Network::FormatHandler.stubs(:formats).returns [:one, :two, :three, :four]
|
28
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:one).returns one
|
29
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:two).returns two
|
30
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:three).returns three
|
31
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:four).returns four
|
32
|
-
result = FormatTester.supported_formats
|
33
|
-
result.length.should == 2
|
34
|
-
result.should be_include(:one)
|
35
|
-
result.should be_include(:three)
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should return the supported formats in decreasing order of weight" do
|
39
|
-
one = stub 'supported', :supported? => true, :name => :one, :weight => 1
|
40
|
-
two = stub 'supported', :supported? => true, :name => :two, :weight => 6
|
41
|
-
three = stub 'supported', :supported? => true, :name => :three, :weight => 2
|
42
|
-
four = stub 'supported', :supported? => true, :name => :four, :weight => 8
|
43
|
-
Puppet::Network::FormatHandler.stubs(:formats).returns [:one, :two, :three, :four]
|
44
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:one).returns one
|
45
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:two).returns two
|
46
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:three).returns three
|
47
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:four).returns four
|
48
|
-
FormatTester.supported_formats.should == [:four, :two, :three, :one]
|
49
|
-
end
|
50
|
-
|
51
|
-
|
52
|
-
describe "with a preferred serialization format setting" do
|
53
|
-
before do
|
54
|
-
one = stub 'supported', :supported? => true, :name => :one, :weight => 1
|
55
|
-
two = stub 'supported', :supported? => true, :name => :two, :weight => 6
|
56
|
-
Puppet::Network::FormatHandler.stubs(:formats).returns [:one, :two]
|
57
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:one).returns one
|
58
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:two).returns two
|
59
|
-
end
|
60
|
-
describe "that is supported" do
|
61
|
-
before do
|
62
|
-
Puppet[:preferred_serialization_format] = :one
|
63
|
-
end
|
64
|
-
it "should return the preferred serialization format first" do
|
65
|
-
FormatTester.supported_formats.should == [:one, :two]
|
66
|
-
end
|
67
|
-
end
|
68
|
-
describe "that is not supported" do
|
69
|
-
before do
|
70
|
-
Puppet[:preferred_serialization_format] = :unsupported
|
71
|
-
end
|
72
|
-
it "should still return the default format first" do
|
73
|
-
FormatTester.supported_formats.should == [:two, :one]
|
74
|
-
end
|
75
|
-
it "should log a debug message" do
|
76
|
-
Puppet.expects(:debug).with("Value of 'preferred_serialization_format' (unsupported) is invalid for FormatTester, using default (two)")
|
77
|
-
Puppet.expects(:debug).with("FormatTester supports formats: one two; using two")
|
78
|
-
FormatTester.supported_formats
|
16
|
+
describe "when creating formats" do
|
17
|
+
it "should instance_eval any block provided when creating a format" do
|
18
|
+
format = Puppet::Network::FormatHandler.create(:test_format) do
|
19
|
+
def asdfghjkl; end
|
79
20
|
end
|
21
|
+
format.should respond_to(:asdfghjkl)
|
80
22
|
end
|
81
23
|
end
|
82
24
|
|
83
|
-
|
84
|
-
|
85
|
-
FormatTester.default_format.should == :one
|
86
|
-
end
|
87
|
-
|
88
|
-
it "should be able to use a protected format for better logging on errors" do
|
89
|
-
Puppet::Network::FormatHandler.should respond_to(:protected_format)
|
90
|
-
end
|
91
|
-
|
92
|
-
it "should delegate all methods from the informative format to the specified format" do
|
93
|
-
format = mock 'format'
|
94
|
-
format.stubs(:name).returns(:myformat)
|
95
|
-
Puppet::Network::FormatHandler.expects(:format).twice.with(:myformat).returns format
|
96
|
-
|
97
|
-
format.expects(:render).with("foo").returns "yay"
|
98
|
-
Puppet::Network::FormatHandler.protected_format(:myformat).render("foo").should == "yay"
|
99
|
-
end
|
100
|
-
|
101
|
-
it "should provide better logging if a failure is encountered when delegating from the informative format to the real format" do
|
102
|
-
format = mock 'format'
|
103
|
-
format.stubs(:name).returns(:myformat)
|
104
|
-
Puppet::Network::FormatHandler.expects(:format).twice.with(:myformat).returns format
|
105
|
-
|
106
|
-
format.expects(:render).with("foo").raises "foo"
|
107
|
-
lambda { Puppet::Network::FormatHandler.protected_format(:myformat).render("foo") }.should raise_error(Puppet::Network::FormatHandler::FormatError)
|
108
|
-
end
|
109
|
-
|
110
|
-
it "should raise an error if we couldn't find a format by name or mime-type" do
|
111
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:myformat).returns nil
|
112
|
-
lambda { Puppet::Network::FormatHandler.protected_format(:myformat) }.should raise_error
|
113
|
-
end
|
114
|
-
|
115
|
-
describe "when using formats" do
|
116
|
-
before do
|
117
|
-
@format = mock 'format'
|
118
|
-
@format.stubs(:supported?).returns true
|
119
|
-
@format.stubs(:name).returns :my_format
|
120
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:my_format).returns @format
|
121
|
-
Puppet::Network::FormatHandler.stubs(:mime).with("text/myformat").returns @format
|
122
|
-
Puppet::Network::Format.stubs(:===).returns false
|
123
|
-
Puppet::Network::Format.stubs(:===).with(@format).returns true
|
124
|
-
end
|
125
|
-
|
126
|
-
it "should be able to test whether a format is supported" do
|
127
|
-
FormatTester.should respond_to(:support_format?)
|
128
|
-
end
|
129
|
-
|
130
|
-
it "should use the Format to determine whether a given format is supported" do
|
131
|
-
@format.expects(:supported?).with(FormatTester)
|
132
|
-
FormatTester.support_format?(:my_format)
|
133
|
-
end
|
134
|
-
|
135
|
-
it "should be able to convert from a given format" do
|
136
|
-
FormatTester.should respond_to(:convert_from)
|
137
|
-
end
|
138
|
-
|
139
|
-
it "should call the format-specific converter when asked to convert from a given format" do
|
140
|
-
@format.expects(:intern).with(FormatTester, "mydata")
|
141
|
-
FormatTester.convert_from(:my_format, "mydata")
|
142
|
-
end
|
143
|
-
|
144
|
-
it "should call the format-specific converter when asked to convert from a given format by mime-type" do
|
145
|
-
@format.expects(:intern).with(FormatTester, "mydata")
|
146
|
-
FormatTester.convert_from("text/myformat", "mydata")
|
147
|
-
end
|
148
|
-
|
149
|
-
it "should call the format-specific converter when asked to convert from a given format by format instance" do
|
150
|
-
@format.expects(:intern).with(FormatTester, "mydata")
|
151
|
-
FormatTester.convert_from(@format, "mydata")
|
152
|
-
end
|
153
|
-
|
154
|
-
it "should raise a FormatError when an exception is encountered when converting from a format" do
|
155
|
-
@format.expects(:intern).with(FormatTester, "mydata").raises "foo"
|
156
|
-
lambda { FormatTester.convert_from(:my_format, "mydata") }.should raise_error(Puppet::Network::FormatHandler::FormatError)
|
157
|
-
end
|
158
|
-
|
159
|
-
it "should be able to use a specific hook for converting into multiple instances" do
|
160
|
-
@format.expects(:intern_multiple).with(FormatTester, "mydata")
|
161
|
-
|
162
|
-
FormatTester.convert_from_multiple(:my_format, "mydata")
|
163
|
-
end
|
164
|
-
|
165
|
-
it "should raise a FormatError when an exception is encountered when converting multiple items from a format" do
|
166
|
-
@format.expects(:intern_multiple).with(FormatTester, "mydata").raises "foo"
|
167
|
-
lambda { FormatTester.convert_from_multiple(:my_format, "mydata") }.should raise_error(Puppet::Network::FormatHandler::FormatError)
|
168
|
-
end
|
169
|
-
|
170
|
-
it "should be able to use a specific hook for rendering multiple instances" do
|
171
|
-
@format.expects(:render_multiple).with("mydata")
|
172
|
-
|
173
|
-
FormatTester.render_multiple(:my_format, "mydata")
|
174
|
-
end
|
175
|
-
|
176
|
-
it "should raise a FormatError when an exception is encountered when rendering multiple items into a format" do
|
177
|
-
@format.expects(:render_multiple).with("mydata").raises "foo"
|
178
|
-
lambda { FormatTester.render_multiple(:my_format, "mydata") }.should raise_error(Puppet::Network::FormatHandler::FormatError)
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
describe "when managing formats" do
|
183
|
-
it "should have a method for defining a new format" do
|
184
|
-
Puppet::Network::FormatHandler.should respond_to(:create)
|
185
|
-
end
|
186
|
-
|
187
|
-
it "should create a format instance when asked" do
|
188
|
-
format = stub 'format', :name => :foo
|
189
|
-
Puppet::Network::Format.expects(:new).with(:foo).returns format
|
190
|
-
Puppet::Network::FormatHandler.create(:foo)
|
191
|
-
end
|
192
|
-
|
193
|
-
it "should instance_eval any block provided when creating a format" do
|
194
|
-
format = stub 'format', :name => :instance_eval
|
195
|
-
format.expects(:yayness)
|
196
|
-
Puppet::Network::Format.expects(:new).returns format
|
197
|
-
Puppet::Network::FormatHandler.create(:instance_eval) do
|
198
|
-
yayness
|
199
|
-
end
|
200
|
-
end
|
25
|
+
describe "when retrieving formats" do
|
26
|
+
let!(:format) { Puppet::Network::FormatHandler.create(:the_format, :extension => "foo", :mime => "foo/bar") }
|
201
27
|
|
202
28
|
it "should be able to retrieve a format by name" do
|
203
|
-
|
204
|
-
Puppet::Network::FormatHandler.format(:by_name).should equal(format)
|
29
|
+
Puppet::Network::FormatHandler.format(:the_format).should equal(format)
|
205
30
|
end
|
206
31
|
|
207
32
|
it "should be able to retrieve a format by extension" do
|
208
|
-
format = Puppet::Network::FormatHandler.create(:by_extension, :extension => "foo")
|
209
33
|
Puppet::Network::FormatHandler.format_by_extension("foo").should equal(format)
|
210
34
|
end
|
211
35
|
|
@@ -213,123 +37,50 @@ describe Puppet::Network::FormatHandler do
|
|
213
37
|
Puppet::Network::FormatHandler.format_by_extension("yayness").should be_nil
|
214
38
|
end
|
215
39
|
|
216
|
-
it "should be able to retrieve formats by name irrespective of case
|
217
|
-
|
218
|
-
Puppet::Network::FormatHandler.format(:By_Name).should equal(format)
|
40
|
+
it "should be able to retrieve formats by name irrespective of case" do
|
41
|
+
Puppet::Network::FormatHandler.format(:The_Format).should equal(format)
|
219
42
|
end
|
220
43
|
|
221
44
|
it "should be able to retrieve a format by mime type" do
|
222
|
-
format = Puppet::Network::FormatHandler.create(:by_name, :mime => "foo/bar")
|
223
45
|
Puppet::Network::FormatHandler.mime("foo/bar").should equal(format)
|
224
46
|
end
|
225
47
|
|
226
48
|
it "should be able to retrieve a format by mime type irrespective of case" do
|
227
|
-
format = Puppet::Network::FormatHandler.create(:by_name, :mime => "foo/bar")
|
228
49
|
Puppet::Network::FormatHandler.mime("Foo/Bar").should equal(format)
|
229
50
|
end
|
230
|
-
|
231
|
-
it "should be able to return all formats" do
|
232
|
-
one = stub 'one', :name => :one
|
233
|
-
two = stub 'two', :name => :two
|
234
|
-
Puppet::Network::Format.expects(:new).with(:one).returns(one)
|
235
|
-
Puppet::Network::Format.expects(:new).with(:two).returns(two)
|
236
|
-
|
237
|
-
Puppet::Network::FormatHandler.create(:one)
|
238
|
-
Puppet::Network::FormatHandler.create(:two)
|
239
|
-
|
240
|
-
list = Puppet::Network::FormatHandler.formats
|
241
|
-
list.should be_include(:one)
|
242
|
-
list.should be_include(:two)
|
243
|
-
end
|
244
51
|
end
|
245
52
|
|
246
|
-
describe "
|
247
|
-
|
248
|
-
|
53
|
+
describe "#most_suitable_format_for" do
|
54
|
+
before :each do
|
55
|
+
Puppet::Network::FormatHandler.create(:one, :extension => "foo", :mime => "text/one")
|
56
|
+
Puppet::Network::FormatHandler.create(:two, :extension => "bar", :mime => "text/two")
|
249
57
|
end
|
250
58
|
|
251
|
-
|
252
|
-
|
253
|
-
end
|
59
|
+
let(:format_one) { Puppet::Network::FormatHandler.format(:one) }
|
60
|
+
let(:format_two) { Puppet::Network::FormatHandler.format(:two) }
|
254
61
|
|
255
|
-
|
256
|
-
|
62
|
+
def suitable_in_setup_formats(accepted)
|
63
|
+
Puppet::Network::FormatHandler.most_suitable_format_for(accepted, [:one, :two])
|
257
64
|
end
|
258
65
|
|
259
|
-
it "
|
260
|
-
|
261
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:foo).returns format
|
262
|
-
|
263
|
-
tester = FormatTester.new
|
264
|
-
format.expects(:render).with(tester).raises "eh"
|
265
|
-
|
266
|
-
lambda { tester.render(:foo) }.should raise_error(Puppet::Network::FormatHandler::FormatError)
|
66
|
+
it "finds no format when none are acceptable" do
|
67
|
+
suitable_in_setup_formats(["three"]).should be_nil
|
267
68
|
end
|
268
69
|
|
269
|
-
it "
|
270
|
-
|
271
|
-
|
272
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:foo).returns format
|
273
|
-
|
274
|
-
tester = FormatTester.new
|
275
|
-
format.expects(:render).with(tester).returns "foo"
|
276
|
-
|
277
|
-
tester.render(:foo).should == "foo"
|
70
|
+
it "skips unsupported, but accepted, formats" do
|
71
|
+
suitable_in_setup_formats(["three", "two"]).should == format_two
|
278
72
|
end
|
279
73
|
|
280
|
-
it "
|
281
|
-
|
282
|
-
Puppet::Network::FormatHandler.stubs(:mime).with("text/foo").returns format
|
283
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:foo).returns format
|
284
|
-
|
285
|
-
tester = FormatTester.new
|
286
|
-
format.expects(:render).with(tester).returns "foo"
|
287
|
-
|
288
|
-
tester.render("text/foo").should == "foo"
|
74
|
+
it "gives the first acceptable and suitable format" do
|
75
|
+
suitable_in_setup_formats(["three", "one", "two"]).should == format_one
|
289
76
|
end
|
290
77
|
|
291
|
-
it "
|
292
|
-
|
293
|
-
Puppet::Network::Format.stubs(:===).with(format).returns(true)
|
294
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:foo).returns format
|
295
|
-
|
296
|
-
tester = FormatTester.new
|
297
|
-
format.expects(:render).with(tester).returns "foo"
|
298
|
-
|
299
|
-
tester.render(format).should == "foo"
|
78
|
+
it "allows specifying acceptable formats by mime type" do
|
79
|
+
suitable_in_setup_formats(["text/one"]).should == format_one
|
300
80
|
end
|
301
81
|
|
302
|
-
it "
|
303
|
-
|
304
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:foo).returns format
|
305
|
-
|
306
|
-
FormatTester.expects(:default_format).returns :foo
|
307
|
-
tester = FormatTester.new
|
308
|
-
|
309
|
-
format.expects(:render).with(tester)
|
310
|
-
tester.render
|
311
|
-
end
|
312
|
-
|
313
|
-
it "should call the format-specific converter when asked for the mime-type of a given format" do
|
314
|
-
format = stub 'rendering format', :supported? => true, :name => :foo
|
315
|
-
|
316
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:foo).returns format
|
317
|
-
|
318
|
-
tester = FormatTester.new
|
319
|
-
format.expects(:mime).returns "text/foo"
|
320
|
-
|
321
|
-
tester.mime(:foo).should == "text/foo"
|
322
|
-
end
|
323
|
-
|
324
|
-
it "should return the default format mime-type if no format is provided" do
|
325
|
-
format = stub 'rendering format', :supported? => true, :name => :foo
|
326
|
-
Puppet::Network::FormatHandler.stubs(:format).with(:foo).returns format
|
327
|
-
|
328
|
-
FormatTester.expects(:default_format).returns :foo
|
329
|
-
tester = FormatTester.new
|
330
|
-
|
331
|
-
format.expects(:mime).returns "text/foo"
|
332
|
-
tester.mime.should == "text/foo"
|
82
|
+
it "allows specifying acceptable formats by canonical name" do
|
83
|
+
suitable_in_setup_formats([:one]).should == format_one
|
333
84
|
end
|
334
85
|
end
|
335
86
|
end
|