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
@@ -23,7 +23,7 @@ describe Puppet::Parser::Collector, "when initializing" do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should only accept :virtual or :exported as the collector form" do
|
26
|
-
|
26
|
+
expect { @collector = Puppet::Parser::Collector.new(@scope, @resource_type, @vquery, @equery, :other) }.to raise_error(ArgumentError)
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should accept an optional virtual query" do
|
@@ -61,7 +61,7 @@ describe Puppet::Parser::Collector, "when collecting specific virtual resources"
|
|
61
61
|
it "should not fail when it does not find any resources to collect" do
|
62
62
|
@collector.resources = ["File[virtual1]", "File[virtual2]"]
|
63
63
|
@scope.stubs(:findresource).returns(false)
|
64
|
-
|
64
|
+
expect { @collector.evaluate }.to_not raise_error
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should mark matched resources as non-virtual" do
|
@@ -429,7 +429,7 @@ describe Puppet::Parser::Collector, "when collecting exported resources", :if =>
|
|
429
429
|
@compiler.add_resource(@scope, local)
|
430
430
|
|
431
431
|
got = nil
|
432
|
-
expect { got = @collector.evaluate }.not_to raise_error
|
432
|
+
expect { got = @collector.evaluate }.not_to raise_error
|
433
433
|
got.length.should == 1
|
434
434
|
got.first.type.should == "Notify"
|
435
435
|
got.first.title.should == "boingy-boingy"
|
@@ -225,9 +225,10 @@ describe Puppet::Parser::Compiler do
|
|
225
225
|
three = stub 'three', :name => "three"
|
226
226
|
@node.stubs(:name).returns("whatever")
|
227
227
|
@node.stubs(:classes).returns(classes)
|
228
|
+
compile_stub(:evaluate_node_classes)
|
228
229
|
|
229
230
|
@compiler.expects(:evaluate_classes).with(classes, @compiler.topscope)
|
230
|
-
@compiler.
|
231
|
+
@compiler.compile
|
231
232
|
end
|
232
233
|
|
233
234
|
it "should evaluate any parameterized classes named in the node" do
|
@@ -521,7 +522,7 @@ describe Puppet::Parser::Compiler do
|
|
521
522
|
end
|
522
523
|
}
|
523
524
|
|
524
|
-
@compiler.
|
525
|
+
@compiler.compile
|
525
526
|
end
|
526
527
|
|
527
528
|
it "should not fail when there are unevaluated resource collections that do not refer to specific resources" do
|
@@ -576,7 +577,7 @@ describe Puppet::Parser::Compiler do
|
|
576
577
|
it "should raise an error when it can't find class" do
|
577
578
|
klasses = {'foo'=>nil}
|
578
579
|
@node.classes = klasses
|
579
|
-
@compiler.topscope.
|
580
|
+
@compiler.topscope.expects(:find_hostclass).with('foo', {:assume_fqname => false}).returns(nil)
|
580
581
|
lambda{ @compiler.compile }.should raise_error(Puppet::Error, /Could not find class foo for testnode/)
|
581
582
|
end
|
582
583
|
end
|
@@ -23,21 +23,6 @@ describe 'function for dynamically creating resources' do
|
|
23
23
|
expect { @scope.function_create_resources(['foo', 'bar', 'blah', 'baz']) }.to raise_error(ArgumentError, 'create_resources(): wrong number of arguments (4; must be 2 or 3)')
|
24
24
|
end
|
25
25
|
|
26
|
-
describe 'when the caller does not supply a name parameter' do
|
27
|
-
it 'should set a default resource name equal to the resource title' do
|
28
|
-
Puppet::Parser::Resource.any_instance.expects(:set_parameter).with(:name, 'test').once
|
29
|
-
@scope.function_create_resources(['notify', {'test'=>{}}])
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe 'when the caller supplies a name parameter' do
|
34
|
-
it 'should set the resource name to the value provided' do
|
35
|
-
Puppet::Parser::Resource.any_instance.expects(:set_parameter).with(:name, 'user_supplied').once
|
36
|
-
Puppet::Parser::Resource.any_instance.expects(:set_parameter).with(:name, 'test').never
|
37
|
-
@scope.function_create_resources(['notify', {'test'=>{'name' => 'user_supplied'}}])
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
26
|
describe 'when creating native types' do
|
42
27
|
it 'empty hash should not cause resources to be added' do
|
43
28
|
noop_catalog = compile_to_catalog("create_resources('file', {})")
|
@@ -68,12 +53,13 @@ describe 'function for dynamically creating resources' do
|
|
68
53
|
end
|
69
54
|
|
70
55
|
it 'should fail to add non-existing type' do
|
71
|
-
expect
|
56
|
+
expect do
|
57
|
+
@scope.function_create_resources(['create-resource-foo', { 'foo' => {} }])
|
58
|
+
end.to raise_error(ArgumentError, /Invalid resource type create-resource-foo/)
|
72
59
|
end
|
73
60
|
|
74
61
|
it 'should be able to add edges' do
|
75
|
-
|
76
|
-
rg = catalog.to_ral.relationship_graph
|
62
|
+
rg = compile_to_relationship_graph("notify { test: }\n create_resources('notify', {'foo'=>{'require'=>'Notify[test]'}})")
|
77
63
|
test = rg.vertices.find { |v| v.title == 'test' }
|
78
64
|
foo = rg.vertices.find { |v| v.title == 'foo' }
|
79
65
|
test.must be
|
@@ -87,6 +73,7 @@ describe 'function for dynamically creating resources' do
|
|
87
73
|
catalog.resource(:file, "/etc/baz")['group'].should == 'food'
|
88
74
|
end
|
89
75
|
end
|
76
|
+
|
90
77
|
describe 'when dynamically creating resource types' do
|
91
78
|
it 'should be able to create defined resoure types' do
|
92
79
|
catalog = compile_to_catalog(<<-MANIFEST)
|
@@ -125,7 +112,7 @@ describe 'function for dynamically creating resources' do
|
|
125
112
|
end
|
126
113
|
|
127
114
|
it 'should be able to add edges' do
|
128
|
-
|
115
|
+
rg = compile_to_relationship_graph(<<-MANIFEST)
|
129
116
|
define foocreateresource($one) {
|
130
117
|
notify { $name: message => $one }
|
131
118
|
}
|
@@ -135,13 +122,11 @@ describe 'function for dynamically creating resources' do
|
|
135
122
|
create_resources('foocreateresource', {'blah'=>{'one'=>'two', 'require' => 'Notify[test]'}})
|
136
123
|
MANIFEST
|
137
124
|
|
138
|
-
rg = catalog.to_ral.relationship_graph
|
139
125
|
test = rg.vertices.find { |v| v.title == 'test' }
|
140
126
|
blah = rg.vertices.find { |v| v.title == 'blah' }
|
141
127
|
test.must be
|
142
128
|
blah.must be
|
143
129
|
rg.path_between(test,blah).should be
|
144
|
-
catalog.resource(:notify, "blah")['message'].should == 'two'
|
145
130
|
end
|
146
131
|
|
147
132
|
it 'should account for default values' do
|
@@ -172,15 +157,15 @@ describe 'function for dynamically creating resources' do
|
|
172
157
|
end
|
173
158
|
|
174
159
|
it 'should fail to create non-existing classes' do
|
175
|
-
expect
|
160
|
+
expect do
|
176
161
|
compile_to_catalog(<<-MANIFEST)
|
177
162
|
create_resources('class', {'blah'=>{'one'=>'two'}})
|
178
163
|
MANIFEST
|
179
|
-
|
164
|
+
end.to raise_error(Puppet::Error, 'Could not find declared class blah at line 1 on node foonode')
|
180
165
|
end
|
181
166
|
|
182
167
|
it 'should be able to add edges' do
|
183
|
-
|
168
|
+
rg = compile_to_relationship_graph(<<-MANIFEST)
|
184
169
|
class bar($one) {
|
185
170
|
notify { test: message => $one }
|
186
171
|
}
|
@@ -190,7 +175,6 @@ describe 'function for dynamically creating resources' do
|
|
190
175
|
create_resources('class', {'bar'=>{'one'=>'two', 'require' => 'Notify[tester]'}})
|
191
176
|
MANIFEST
|
192
177
|
|
193
|
-
rg = catalog.to_ral.relationship_graph
|
194
178
|
test = rg.vertices.find { |v| v.title == 'test' }
|
195
179
|
tester = rg.vertices.find { |v| v.title == 'tester' }
|
196
180
|
test.must be
|
@@ -18,11 +18,11 @@ describe "the extlookup function" do
|
|
18
18
|
Puppet::Parser::Functions.function("extlookup").should == "function_extlookup"
|
19
19
|
end
|
20
20
|
|
21
|
-
it "should raise
|
21
|
+
it "should raise an ArgumentError if there is less than 1 arguments" do
|
22
22
|
lambda { @scope.function_extlookup([]) }.should( raise_error(ArgumentError))
|
23
23
|
end
|
24
24
|
|
25
|
-
it "should raise
|
25
|
+
it "should raise an ArgumentError if there is more than 3 arguments" do
|
26
26
|
lambda { @scope.function_extlookup(["foo", "bar", "baz", "gazonk"]) }.should( raise_error(ArgumentError))
|
27
27
|
end
|
28
28
|
|
@@ -21,4 +21,16 @@ describe 'Puppet::Parser::Functions#hiera_include' do
|
|
21
21
|
HieraPuppet.expects(:lookup).with() { |*args| args[4].should be :array }.returns(['someclass'])
|
22
22
|
expect { scope.function_hiera_include(['key']) }.to raise_error Puppet::Error, /Could not find class someclass/
|
23
23
|
end
|
24
|
+
|
25
|
+
it 'should call the `include` function with the classes' do
|
26
|
+
HieraPuppet.expects(:lookup).returns %w[foo bar baz]
|
27
|
+
|
28
|
+
scope.expects(:function_include).with([%w[foo bar baz]])
|
29
|
+
scope.function_hiera_include(['key'])
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should not raise an error if the resulting hiera lookup returns an empty array' do
|
33
|
+
HieraPuppet.expects(:lookup).returns []
|
34
|
+
expect { scope.function_hiera_include(['key']) }.to_not raise_error
|
35
|
+
end
|
24
36
|
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet/pops'
|
3
|
+
require 'stringio'
|
4
|
+
|
5
|
+
describe "lookup function" do
|
6
|
+
before(:each) do
|
7
|
+
Puppet[:binder] = true
|
8
|
+
end
|
9
|
+
|
10
|
+
it "must be called with at least a name to lookup" do
|
11
|
+
scope = scope_with_injections_from(bound(bindings))
|
12
|
+
|
13
|
+
expect do
|
14
|
+
scope.function_lookup([])
|
15
|
+
end.to raise_error(ArgumentError, /Wrong number of arguments/)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "looks up a value that exists" do
|
19
|
+
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
|
20
|
+
|
21
|
+
expect(scope.function_lookup(['a_value'])).to eq('something')
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns :undef when the requested value is not bound" do
|
25
|
+
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
|
26
|
+
|
27
|
+
expect(scope.function_lookup(['not_bound_value'])).to eq(:undef)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "raises an error when the bound type is not assignable to the requested type" do
|
31
|
+
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
|
32
|
+
|
33
|
+
expect do
|
34
|
+
scope.function_lookup(['a_value', 'Integer'])
|
35
|
+
end.to raise_error(ArgumentError, /incompatible type, expected: Integer, got: String/)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns the value if the bound type is assignable to the requested type" do
|
39
|
+
typed_bindings = bindings
|
40
|
+
typed_bindings.bind().string().name("a_value").to("something")
|
41
|
+
scope = scope_with_injections_from(bound(typed_bindings))
|
42
|
+
|
43
|
+
expect(scope.function_lookup(['a_value', 'Data'])).to eq("something")
|
44
|
+
end
|
45
|
+
|
46
|
+
it "yields to a given lambda and returns the result" do
|
47
|
+
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
|
48
|
+
|
49
|
+
expect(scope.function_lookup(['a_value', ast_lambda('|$x|{something_else}')])).to eq('something_else')
|
50
|
+
end
|
51
|
+
|
52
|
+
it "yields to a given lambda and returns the result when giving name and type" do
|
53
|
+
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
|
54
|
+
|
55
|
+
expect(scope.function_lookup(['a_value', 'String', ast_lambda('|$x|{something_else}')])).to eq('something_else')
|
56
|
+
end
|
57
|
+
|
58
|
+
it "yields :undef when value is not found and using a lambda" do
|
59
|
+
scope = scope_with_injections_from(bound(bind_single("a_value", "something")))
|
60
|
+
|
61
|
+
expect(scope.function_lookup(['not_bound_value', ast_lambda('|$x|{ if $x == undef {good} else {bad}}')])).to eq('good')
|
62
|
+
end
|
63
|
+
|
64
|
+
def scope_with_injections_from(binder)
|
65
|
+
injector = Puppet::Pops::Binder::Injector.new(binder)
|
66
|
+
scope = Puppet::Parser::Scope.new_for_test_harness('testing')
|
67
|
+
scope.compiler.injector = injector
|
68
|
+
|
69
|
+
scope
|
70
|
+
end
|
71
|
+
|
72
|
+
def bindings
|
73
|
+
Puppet::Pops::Binder::BindingsFactory.named_bindings("testing")
|
74
|
+
end
|
75
|
+
|
76
|
+
def bind_single(name, value)
|
77
|
+
local_bindings = Puppet::Pops::Binder::BindingsFactory.named_bindings("testing")
|
78
|
+
local_bindings.bind().name(name).to(value)
|
79
|
+
local_bindings
|
80
|
+
end
|
81
|
+
|
82
|
+
def bound(local_bindings)
|
83
|
+
binder = Puppet::Pops::Binder::Binder.new
|
84
|
+
binder.define_categories(Puppet::Pops::Binder::BindingsFactory.categories([]))
|
85
|
+
binder.define_layers(Puppet::Pops::Binder::BindingsFactory.layered_bindings(Puppet::Pops::Binder::BindingsFactory.named_layer('test layer', local_bindings.model)))
|
86
|
+
|
87
|
+
binder
|
88
|
+
end
|
89
|
+
|
90
|
+
def ast_lambda(puppet_source)
|
91
|
+
puppet_source = "fake_func() " + puppet_source
|
92
|
+
model = Puppet::Pops::Parser::EvaluatingParser.new().parse_string(puppet_source, __FILE__).current
|
93
|
+
model = model.lambda
|
94
|
+
Puppet::Pops::Model::AstTransformer.new(@file_source, nil).transform(model)
|
95
|
+
end
|
96
|
+
end
|
@@ -16,11 +16,11 @@ describe "the regsubst function" do
|
|
16
16
|
Puppet::Parser::Functions.function("regsubst").should == "function_regsubst"
|
17
17
|
end
|
18
18
|
|
19
|
-
it "should raise
|
19
|
+
it "should raise an ArgumentError if there is less than 3 arguments" do
|
20
20
|
lambda { @scope.function_regsubst(["foo", "bar"]) }.should( raise_error(ArgumentError))
|
21
21
|
end
|
22
22
|
|
23
|
-
it "should raise
|
23
|
+
it "should raise an ArgumentError if there is more than 5 arguments" do
|
24
24
|
lambda { @scope.function_regsubst(["foo", "bar", "gazonk", "del", "x", "y"]) }.should( raise_error(ArgumentError))
|
25
25
|
end
|
26
26
|
|
@@ -16,11 +16,11 @@ describe "the split function" do
|
|
16
16
|
Puppet::Parser::Functions.function("split").should == "function_split"
|
17
17
|
end
|
18
18
|
|
19
|
-
it "should raise
|
19
|
+
it "should raise an ArgumentError if there is less than 2 arguments" do
|
20
20
|
lambda { @scope.function_split(["foo"]) }.should( raise_error(ArgumentError))
|
21
21
|
end
|
22
22
|
|
23
|
-
it "should raise
|
23
|
+
it "should raise an ArgumentError if there is more than 2 arguments" do
|
24
24
|
lambda { @scope.function_split(["foo", "bar", "gazonk"]) }.should( raise_error(ArgumentError))
|
25
25
|
end
|
26
26
|
|
@@ -16,7 +16,7 @@ describe "the sprintf function" do
|
|
16
16
|
Puppet::Parser::Functions.function("sprintf").should == "function_sprintf"
|
17
17
|
end
|
18
18
|
|
19
|
-
it "should raise
|
19
|
+
it "should raise an ArgumentError if there is less than 1 argument" do
|
20
20
|
lambda { @scope.function_sprintf([]) }.should( raise_error(ArgumentError))
|
21
21
|
end
|
22
22
|
|
@@ -16,11 +16,11 @@ describe "the versioncmp function" do
|
|
16
16
|
Puppet::Parser::Functions.function("versioncmp").should == "function_versioncmp"
|
17
17
|
end
|
18
18
|
|
19
|
-
it "should raise
|
19
|
+
it "should raise an ArgumentError if there is less than 2 arguments" do
|
20
20
|
lambda { @scope.function_versioncmp(["1.2"]) }.should raise_error(ArgumentError)
|
21
21
|
end
|
22
22
|
|
23
|
-
it "should raise
|
23
|
+
it "should raise an ArgumentError if there is more than 2 arguments" do
|
24
24
|
lambda { @scope.function_versioncmp(["1.2", "2.4.5", "3.5.6"]) }.should raise_error(ArgumentError)
|
25
25
|
end
|
26
26
|
|
@@ -38,7 +38,7 @@ describe Puppet::Parser::Functions do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should raise an error if the function type is not correct" do
|
41
|
-
|
41
|
+
expect { Puppet::Parser::Functions.newfunction("name", :type => :unknown) { |args| } }.to raise_error Puppet::DevError, "Invalid statement type :unknown"
|
42
42
|
end
|
43
43
|
|
44
44
|
it "instruments the function to profiles the execution" do
|
@@ -85,32 +85,32 @@ describe Puppet::Parser::Functions do
|
|
85
85
|
|
86
86
|
it "should raise an error if the function is called with too many arguments" do
|
87
87
|
Puppet::Parser::Functions.newfunction("name", :arity => 2) { |args| }
|
88
|
-
|
88
|
+
expect { callable_functions_from(function_module).function_name([1,2,3]) }.to raise_error ArgumentError
|
89
89
|
end
|
90
90
|
|
91
91
|
it "should raise an error if the function is called with too few arguments" do
|
92
92
|
Puppet::Parser::Functions.newfunction("name", :arity => 2) { |args| }
|
93
|
-
|
93
|
+
expect { callable_functions_from(function_module).function_name([1]) }.to raise_error ArgumentError
|
94
94
|
end
|
95
95
|
|
96
96
|
it "should not raise an error if the function is called with correct number of arguments" do
|
97
97
|
Puppet::Parser::Functions.newfunction("name", :arity => 2) { |args| }
|
98
|
-
|
98
|
+
expect { callable_functions_from(function_module).function_name([1,2]) }.to_not raise_error
|
99
99
|
end
|
100
100
|
|
101
101
|
it "should raise an error if the variable arg function is called with too few arguments" do
|
102
102
|
Puppet::Parser::Functions.newfunction("name", :arity => -3) { |args| }
|
103
|
-
|
103
|
+
expect { callable_functions_from(function_module).function_name([1]) }.to raise_error ArgumentError
|
104
104
|
end
|
105
105
|
|
106
106
|
it "should not raise an error if the variable arg function is called with correct number of arguments" do
|
107
107
|
Puppet::Parser::Functions.newfunction("name", :arity => -3) { |args| }
|
108
|
-
|
108
|
+
expect { callable_functions_from(function_module).function_name([1,2]) }.to_not raise_error
|
109
109
|
end
|
110
110
|
|
111
111
|
it "should not raise an error if the variable arg function is called with more number of arguments" do
|
112
112
|
Puppet::Parser::Functions.newfunction("name", :arity => -3) { |args| }
|
113
|
-
|
113
|
+
expect { callable_functions_from(function_module).function_name([1,2,3]) }.to_not raise_error
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
@@ -855,7 +855,7 @@ describe "Puppet::Parser::Lexer in the old tests when lexing example files" do
|
|
855
855
|
end
|
856
856
|
end
|
857
857
|
|
858
|
-
describe "when trying to lex
|
858
|
+
describe "when trying to lex a non-existent file" do
|
859
859
|
include PuppetSpec::Files
|
860
860
|
|
861
861
|
it "should return an empty list of tokens" do
|
@@ -38,6 +38,7 @@ describe 'the collect method' do
|
|
38
38
|
catalog.resource(:file, "/file_b")['ensure'].should == 'present'
|
39
39
|
catalog.resource(:file, "/file_c")['ensure'].should == 'present'
|
40
40
|
end
|
41
|
+
|
41
42
|
it 'foreach on a hash selecting value' do
|
42
43
|
catalog = compile_to_catalog(<<-MANIFEST)
|
43
44
|
$a = {'a'=>1,'b'=>2,'c'=>3}
|
@@ -51,6 +52,46 @@ describe 'the collect method' do
|
|
51
52
|
catalog.resource(:file, "/file_3")['ensure'].should == 'present'
|
52
53
|
end
|
53
54
|
end
|
55
|
+
|
56
|
+
context "handles data type corner cases" do
|
57
|
+
it "collect gets values that are false" do
|
58
|
+
catalog = compile_to_catalog(<<-MANIFEST)
|
59
|
+
$a = [false,false]
|
60
|
+
$a.collect |$x| { $x }.each |$i, $v| {
|
61
|
+
file { "/file_$i.$v": ensure => present }
|
62
|
+
}
|
63
|
+
MANIFEST
|
64
|
+
|
65
|
+
catalog.resource(:file, "/file_0.false")['ensure'].should == 'present'
|
66
|
+
catalog.resource(:file, "/file_1.false")['ensure'].should == 'present'
|
67
|
+
end
|
68
|
+
|
69
|
+
it "collect gets values that are nil" do
|
70
|
+
Puppet::Parser::Functions.newfunction(:nil_array, :type => :rvalue) do |args|
|
71
|
+
[nil]
|
72
|
+
end
|
73
|
+
catalog = compile_to_catalog(<<-MANIFEST)
|
74
|
+
$a = nil_array()
|
75
|
+
$a.collect |$x| { $x }.each |$i, $v| {
|
76
|
+
file { "/file_$i.$v": ensure => present }
|
77
|
+
}
|
78
|
+
MANIFEST
|
79
|
+
|
80
|
+
catalog.resource(:file, "/file_0.")['ensure'].should == 'present'
|
81
|
+
end
|
82
|
+
|
83
|
+
it "collect gets values that are undef" do
|
84
|
+
catalog = compile_to_catalog(<<-MANIFEST)
|
85
|
+
$a = [$does_not_exist]
|
86
|
+
$a.collect |$x = "something"| { $x }.each |$i, $v| {
|
87
|
+
file { "/file_$i.$v": ensure => present }
|
88
|
+
}
|
89
|
+
MANIFEST
|
90
|
+
|
91
|
+
catalog.resource(:file, "/file_0.")['ensure'].should == 'present'
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
54
95
|
context "in Java style should be callable as" do
|
55
96
|
shared_examples_for 'java style' do
|
56
97
|
it 'collect on an array (multiplying each value by 2)' do
|
@@ -92,11 +133,13 @@ describe 'the collect method' do
|
|
92
133
|
catalog.resource(:file, "/file_3")['ensure'].should == 'present'
|
93
134
|
end
|
94
135
|
end
|
136
|
+
|
95
137
|
describe 'without fat arrow' do
|
96
138
|
it_should_behave_like 'java style' do
|
97
139
|
let(:farr) { '' }
|
98
140
|
end
|
99
141
|
end
|
142
|
+
|
100
143
|
describe 'with fat arrow' do
|
101
144
|
it_should_behave_like 'java style' do
|
102
145
|
let(:farr) { '=>' }
|