puppet 3.1.1 → 3.2.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CONTRIBUTING.md +2 -2
- data/Gemfile +32 -19
- data/README_DEVELOPER.md +332 -14
- data/Rakefile +9 -5
- data/ext/build_defaults.yaml +2 -3
- data/ext/debian/changelog.erb +6 -0
- data/ext/debian/control +6 -6
- data/ext/envpuppet +4 -4
- data/ext/project_data.yaml +1 -0
- data/ext/puppet-nm-dispatcher +13 -0
- data/ext/redhat/puppet.spec.erb +17 -0
- data/ext/suse/client.init +1 -1
- data/ext/systemd/puppetagent.service +2 -2
- data/ext/systemd/puppetmaster.service +2 -2
- data/lib/hiera/scope.rb +29 -11
- data/lib/hiera_puppet.rb +1 -3
- data/lib/puppet/agent.rb +3 -3
- data/lib/puppet/application.rb +2 -2
- data/lib/puppet/application/agent.rb +27 -12
- data/lib/puppet/application/apply.rb +11 -1
- data/lib/puppet/application/describe.rb +1 -1
- data/lib/puppet/application/doc.rb +13 -9
- data/lib/puppet/application/filebucket.rb +0 -1
- data/lib/puppet/application/kick.rb +1 -0
- data/lib/puppet/application/master.rb +16 -8
- data/lib/puppet/daemon.rb +19 -64
- data/lib/puppet/defaults.rb +61 -5
- data/lib/puppet/error.rb +15 -4
- data/lib/puppet/external/nagios/grammar.ry +1 -1
- data/lib/puppet/external/nagios/makefile +1 -1
- data/lib/puppet/external/nagios/parser.rb +185 -618
- data/lib/puppet/external/pson/pure/parser.rb +47 -1
- data/lib/puppet/face/certificate.rb +3 -3
- data/lib/puppet/face/module.rb +1 -1
- data/lib/puppet/face/module/changes.rb +3 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/node/clean.rb +5 -5
- data/lib/puppet/feature/base.rb +3 -1
- data/lib/puppet/feature/libuser.rb +8 -0
- data/lib/puppet/file_serving/fileset.rb +9 -1
- data/lib/puppet/forge.rb +28 -5
- data/lib/puppet/forge/errors.rb +34 -0
- data/lib/puppet/forge/repository.rb +1 -1
- data/lib/puppet/indirector.rb +4 -1
- data/lib/puppet/indirector/catalog/compiler.rb +37 -30
- data/lib/puppet/indirector/facts/inventory_active_record.rb +1 -0
- data/lib/puppet/indirector/indirection.rb +28 -15
- data/lib/puppet/indirector/rest.rb +18 -10
- data/lib/puppet/interface.rb +11 -4
- data/lib/puppet/interface/action.rb +1 -3
- data/lib/puppet/interface/action_builder.rb +0 -3
- data/lib/puppet/interface/action_manager.rb +0 -3
- data/lib/puppet/interface/face_collection.rb +0 -2
- data/lib/puppet/interface/option.rb +0 -2
- data/lib/puppet/interface/option_builder.rb +0 -2
- data/lib/puppet/interface/option_manager.rb +0 -2
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module_tool.rb +1 -0
- data/lib/puppet/module_tool/applications/application.rb +0 -3
- data/lib/puppet/module_tool/applications/builder.rb +8 -20
- data/lib/puppet/module_tool/applications/checksummer.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -0
- data/lib/puppet/module_tool/applications/unpacker.rb +3 -11
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/errors/installer.rb +18 -1
- data/lib/puppet/module_tool/modulefile.rb +2 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +1 -1
- data/lib/puppet/module_tool/tar.rb +17 -0
- data/lib/puppet/module_tool/tar/gnu.rb +9 -0
- data/lib/puppet/module_tool/tar/mini.rb +39 -0
- data/lib/puppet/module_tool/tar/solaris.rb +5 -0
- data/lib/puppet/network/http.rb +1 -0
- data/lib/puppet/network/http/connection.rb +9 -23
- data/lib/puppet/network/http/handler.rb +38 -7
- data/lib/puppet/network/http/rack/rest.rb +14 -3
- data/lib/puppet/network/http/webrick.rb +3 -1
- data/lib/puppet/network/http/webrick/rest.rb +11 -2
- data/lib/puppet/node/environment.rb +3 -1
- data/lib/puppet/parameter.rb +32 -29
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/path.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parameter/value_collection.rb +7 -3
- data/lib/puppet/parser/ast.rb +3 -1
- data/lib/puppet/parser/ast/arithmetic_operator.rb +56 -12
- data/lib/puppet/parser/ast/astarray.rb +1 -1
- data/lib/puppet/parser/ast/block_expression.rb +41 -0
- data/lib/puppet/parser/ast/function.rb +13 -2
- data/lib/puppet/parser/ast/lambda.rb +107 -0
- data/lib/puppet/parser/ast/leaf.rb +1 -2
- data/lib/puppet/parser/ast/method_call.rb +77 -0
- data/lib/puppet/parser/ast/vardef.rb +7 -0
- data/lib/puppet/parser/compiler.rb +27 -16
- data/lib/puppet/parser/e_parser_adapter.rb +120 -0
- data/lib/puppet/parser/files.rb +7 -6
- data/lib/puppet/parser/functions.rb +10 -8
- data/lib/puppet/parser/functions/collect.rb +43 -0
- data/lib/puppet/parser/functions/each.rb +96 -0
- data/lib/puppet/parser/functions/foreach.rb +96 -0
- data/lib/puppet/parser/functions/fqdn_rand.rb +2 -2
- data/lib/puppet/parser/functions/hiera.rb +20 -2
- data/lib/puppet/parser/functions/hiera_array.rb +21 -2
- data/lib/puppet/parser/functions/hiera_hash.rb +23 -2
- data/lib/puppet/parser/functions/hiera_include.rb +33 -2
- data/lib/puppet/parser/functions/inline_template.rb +4 -4
- data/lib/puppet/parser/functions/reduce.rb +74 -0
- data/lib/puppet/parser/functions/reject.rb +46 -0
- data/lib/puppet/parser/functions/select.rb +46 -0
- data/lib/puppet/parser/functions/slice.rb +96 -0
- data/lib/puppet/parser/functions/template.rb +2 -2
- data/lib/puppet/parser/grammar.ra +7 -4
- data/lib/puppet/parser/lexer.rb +10 -0
- data/lib/puppet/parser/methods.rb +69 -0
- data/lib/puppet/parser/parser.rb +855 -808
- data/lib/puppet/parser/parser_factory.rb +62 -0
- data/lib/puppet/parser/parser_support.rb +8 -2
- data/lib/puppet/parser/scope.rb +153 -47
- data/lib/puppet/parser/templatewrapper.rb +28 -21
- data/lib/puppet/parser/type_loader.rb +3 -1
- data/lib/puppet/pops.rb +40 -0
- data/lib/puppet/pops/adaptable.rb +190 -0
- data/lib/puppet/pops/adapters.rb +65 -0
- data/lib/puppet/pops/containment.rb +37 -0
- data/lib/puppet/pops/issues.rb +258 -0
- data/lib/puppet/pops/label_provider.rb +71 -0
- data/lib/puppet/pops/model/ast_transformer.rb +636 -0
- data/lib/puppet/pops/model/ast_tree_dumper.rb +378 -0
- data/lib/puppet/pops/model/factory.rb +804 -0
- data/lib/puppet/pops/model/model.rb +567 -0
- data/lib/puppet/pops/model/model_label_provider.rb +75 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +352 -0
- data/lib/puppet/pops/model/tree_dumper.rb +59 -0
- data/lib/puppet/pops/parser/egrammar.ra +723 -0
- data/lib/puppet/pops/parser/eparser.rb +2300 -0
- data/lib/puppet/pops/parser/grammar.ra +746 -0
- data/lib/puppet/pops/parser/lexer.rb +842 -0
- data/lib/puppet/pops/parser/makefile +13 -0
- data/lib/puppet/pops/parser/parser_support.rb +203 -0
- data/lib/puppet/pops/patterns.rb +35 -0
- data/lib/puppet/pops/utils.rb +104 -0
- data/lib/puppet/pops/validation.rb +297 -0
- data/lib/puppet/pops/validation/checker3_1.rb +551 -0
- data/lib/puppet/pops/validation/validator_factory_3_1.rb +41 -0
- data/lib/puppet/pops/visitable.rb +6 -0
- data/lib/puppet/pops/visitor.rb +50 -0
- data/lib/puppet/property.rb +37 -28
- data/lib/puppet/property/ensure.rb +2 -2
- data/lib/puppet/property/ordered_list.rb +1 -1
- data/lib/puppet/provider.rb +26 -30
- data/lib/puppet/provider/aixobject.rb +45 -44
- data/lib/puppet/provider/augeas/augeas.rb +0 -1
- data/lib/puppet/provider/confiner.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +107 -67
- data/lib/puppet/provider/group/groupadd.rb +59 -3
- data/lib/puppet/provider/interface/cisco.rb +4 -4
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +22 -6
- data/lib/puppet/provider/nameservice/pw.rb +1 -1
- data/lib/puppet/provider/package/aix.rb +28 -4
- data/lib/puppet/provider/package/gem.rb +0 -2
- data/lib/puppet/provider/package/macports.rb +1 -1
- data/lib/puppet/provider/package/nim.rb +249 -4
- data/lib/puppet/provider/package/opkg.rb +77 -0
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/rpm.rb +30 -16
- data/lib/puppet/provider/package/yum.rb +3 -3
- data/lib/puppet/provider/parsedfile.rb +80 -3
- data/lib/puppet/provider/selmodule/semodule.rb +2 -2
- data/lib/puppet/provider/service/debian.rb +0 -4
- data/lib/puppet/provider/service/freebsd.rb +2 -2
- data/lib/puppet/provider/service/gentoo.rb +0 -9
- data/lib/puppet/provider/service/init.rb +27 -2
- data/lib/puppet/provider/service/launchd.rb +1 -1
- data/lib/puppet/provider/service/openwrt.rb +36 -0
- data/lib/puppet/provider/service/redhat.rb +0 -9
- data/lib/puppet/provider/service/src.rb +38 -4
- data/lib/puppet/provider/service/systemd.rb +2 -2
- data/lib/puppet/provider/service/upstart.rb +1 -8
- data/lib/puppet/provider/user/aix.rb +4 -10
- data/lib/puppet/provider/user/pw.rb +6 -10
- data/lib/puppet/provider/user/useradd.rb +129 -31
- data/lib/puppet/provider/vlan/cisco.rb +4 -4
- data/lib/puppet/reference/function.rb +2 -2
- data/lib/puppet/reference/indirection.rb +46 -5
- data/lib/puppet/reference/metaparameter.rb +2 -2
- data/lib/puppet/reports.rb +5 -5
- data/lib/puppet/reports/rrdgraph.rb +4 -4
- data/lib/puppet/reports/tagmail.rb +1 -1
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/type.rb +13 -11
- data/lib/puppet/scheduler.rb +16 -0
- data/lib/puppet/scheduler/job.rb +53 -0
- data/lib/puppet/scheduler/scheduler.rb +45 -0
- data/lib/puppet/scheduler/splay_job.rb +32 -0
- data/lib/puppet/scheduler/timer.rb +13 -0
- data/lib/puppet/settings/base_setting.rb +1 -1
- data/lib/puppet/simple_graph.rb +4 -4
- data/lib/puppet/ssl/base.rb +12 -2
- data/lib/puppet/ssl/certificate.rb +4 -1
- data/lib/puppet/ssl/certificate_request.rb +4 -1
- data/lib/puppet/ssl/certificate_revocation_list.rb +4 -1
- data/lib/puppet/ssl/configuration.rb +32 -0
- data/lib/puppet/ssl/host.rb +18 -21
- data/lib/puppet/ssl/key.rb +4 -1
- data/lib/puppet/ssl/validator.rb +116 -0
- data/lib/puppet/transaction.rb +1 -1
- data/lib/puppet/transaction/event.rb +3 -10
- data/lib/puppet/transaction/event_manager.rb +8 -1
- data/lib/puppet/transaction/report.rb +17 -16
- data/lib/puppet/type.rb +77 -69
- data/lib/puppet/type/cron.rb +20 -8
- data/lib/puppet/type/exec.rb +9 -3
- data/lib/puppet/type/file.rb +95 -21
- data/lib/puppet/type/file/content.rb +1 -1
- data/lib/puppet/type/file/mode.rb +7 -1
- data/lib/puppet/type/file/source.rb +2 -2
- data/lib/puppet/type/group.rb +11 -0
- data/lib/puppet/type/scheduled_task.rb +5 -1
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -2
- data/lib/puppet/type/user.rb +24 -6
- data/lib/puppet/util.rb +12 -2
- data/lib/puppet/util/classgen.rb +4 -4
- data/lib/puppet/util/colors.rb +55 -0
- data/lib/puppet/util/command_line/trollop.rb +4 -4
- data/lib/puppet/util/errors.rb +39 -3
- data/lib/puppet/util/fileparsing.rb +5 -0
- data/lib/puppet/util/filetype.rb +11 -9
- data/lib/puppet/util/instrumentation/instrumentable.rb +2 -2
- data/lib/puppet/util/libuser.conf +15 -0
- data/lib/puppet/util/libuser.rb +12 -0
- data/lib/puppet/util/monkey_patches.rb +48 -0
- data/lib/puppet/util/network_device.rb +1 -1
- data/lib/puppet/util/network_device/base.rb +2 -2
- data/lib/puppet/util/network_device/cisco/device.rb +29 -19
- data/lib/puppet/util/network_device/config.rb +5 -2
- data/lib/puppet/util/network_device/ipcalc.rb +1 -1
- data/lib/puppet/util/network_device/transport/ssh.rb +4 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +4 -2
- data/lib/puppet/util/plugins.rb +4 -4
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/profiler.rb +28 -0
- data/lib/puppet/util/profiler/logging.rb +47 -0
- data/lib/puppet/util/profiler/none.rb +8 -0
- data/lib/puppet/util/profiler/object_counts.rb +17 -0
- data/lib/puppet/util/profiler/wall_clock.rb +34 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc/parser.rb +5 -5
- data/lib/puppet/util/ssl.rb +38 -0
- data/lib/puppet/util/subclass_loader.rb +1 -5
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/process.rb +3 -0
- data/lib/puppet/util/windows/root_certs.rb +86 -0
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +19 -0
- data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +18 -0
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +15 -0
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +4 -0
- data/spec/fixtures/integration/provider/cron/crontab/modify_entry +13 -0
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +15 -0
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +6 -0
- data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +12 -0
- data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +14 -0
- data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +16 -0
- data/spec/fixtures/unit/pops/parser/lexer/append.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +14 -0
- data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +65 -0
- data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +15 -0
- data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +17 -0
- data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection.pp +10 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +20 -0
- data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +23 -0
- data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +17 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/hash.pp +33 -0
- data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +12 -0
- data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +15 -0
- data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +10 -0
- data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +7 -0
- data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +13 -0
- data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +13 -0
- data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +49 -0
- data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +38 -0
- data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +19 -0
- data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +22 -0
- data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/tag.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +35 -0
- data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +14 -0
- data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +4 -4
- data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +3 -0
- data/spec/fixtures/unit/provider/cron/parsed/managed +6 -0
- data/spec/fixtures/unit/provider/cron/parsed/simple +9 -0
- data/spec/fixtures/unit/provider/parsedfile/simple.txt +4 -0
- data/spec/fixtures/unit/provider/service/systemd/list_units +18 -0
- data/spec/integration/parser/collector_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +252 -227
- data/spec/integration/parser/parser_spec.rb +171 -53
- data/spec/integration/parser/scope_spec.rb +1 -1
- data/spec/integration/provider/cron/crontab_spec.rb +187 -0
- data/spec/integration/provider/service/systemd_spec.rb +20 -0
- data/spec/integration/type/file_spec.rb +21 -21
- data/spec/integration/type/package_spec.rb +1 -1
- data/spec/lib/puppet_spec/database.rb +2 -5
- data/spec/spec_helper.rb +6 -1
- data/spec/unit/application/apply_spec.rb +16 -1
- data/spec/unit/application/describe_spec.rb +1 -1
- data/spec/unit/application/doc_spec.rb +55 -32
- data/spec/unit/application/kick_spec.rb +8 -6
- data/spec/unit/application/master_spec.rb +4 -4
- data/spec/unit/daemon_spec.rb +1 -1
- data/spec/unit/forge/errors_spec.rb +40 -0
- data/spec/unit/forge/repository_spec.rb +11 -1
- data/spec/unit/forge_spec.rb +13 -3
- data/spec/unit/hiera/backend/puppet_backend_spec.rb +1 -0
- data/spec/unit/hiera/scope_spec.rb +48 -25
- data/spec/unit/indirector/catalog/active_record_spec.rb +6 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +3 -28
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +1 -1
- data/spec/unit/indirector/facts/inventory_active_record_spec.rb +154 -150
- data/spec/unit/indirector/indirection_spec.rb +5 -0
- data/spec/unit/indirector/resource/active_record_spec.rb +5 -22
- data/spec/unit/indirector_spec.rb +7 -1
- data/spec/unit/interface/action_builder_spec.rb +1 -1
- data/spec/unit/interface/action_manager_spec.rb +0 -2
- data/spec/unit/interface/action_spec.rb +1 -1
- data/spec/unit/interface/documentation_spec.rb +0 -2
- data/spec/unit/interface/face_collection_spec.rb +1 -1
- data/spec/unit/interface/option_builder_spec.rb +1 -1
- data/spec/unit/interface/option_spec.rb +0 -1
- data/spec/unit/module_spec.rb +17 -19
- data/spec/unit/module_tool/application_spec.rb +1 -3
- data/spec/unit/module_tool/applications/builder_spec.rb +38 -0
- data/spec/unit/module_tool/applications/checksummer_spec.rb +134 -0
- data/spec/unit/module_tool/applications/installer_spec.rb +71 -91
- data/spec/unit/module_tool/applications/searcher_spec.rb +1 -3
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +18 -26
- data/spec/unit/module_tool/applications/unpacker_spec.rb +19 -52
- data/spec/unit/module_tool/tar/gnu_spec.rb +19 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +59 -0
- data/spec/unit/module_tool/tar/solaris_spec.rb +19 -0
- data/spec/unit/network/http/connection_spec.rb +17 -2
- data/spec/unit/network/http/handler_spec.rb +195 -167
- data/spec/unit/network/http/rack/rest_spec.rb +26 -4
- data/spec/unit/network/http/webrick/rest_spec.rb +28 -1
- data/spec/unit/network/http/webrick_spec.rb +12 -3
- data/spec/unit/node/environment_spec.rb +421 -404
- data/spec/unit/parser/ast/arithmetic_operator_spec.rb +98 -2
- data/spec/unit/parser/collector_spec.rb +4 -4
- data/spec/unit/parser/compiler_spec.rb +13 -13
- data/spec/unit/parser/eparser_adapter_spec.rb +407 -0
- data/spec/unit/parser/functions/extlookup_spec.rb +20 -17
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +5 -0
- data/spec/unit/parser/functions/hiera_include_spec.rb +0 -2
- data/spec/unit/parser/functions/hiera_spec.rb +0 -2
- data/spec/unit/parser/functions_spec.rb +27 -15
- data/spec/unit/parser/methods/collect_spec.rb +110 -0
- data/spec/unit/parser/methods/each_spec.rb +91 -0
- data/spec/unit/parser/methods/foreach_spec.rb +91 -0
- data/spec/unit/parser/methods/reduce_spec.rb +67 -0
- data/spec/unit/parser/methods/reject_spec.rb +73 -0
- data/spec/unit/parser/methods/select_spec.rb +79 -0
- data/spec/unit/parser/methods/shared.rb +61 -0
- data/spec/unit/parser/methods/slice_spec.rb +97 -0
- data/spec/unit/parser/parser_spec.rb +2 -2
- data/spec/unit/parser/scope_spec.rb +39 -16
- data/spec/unit/parser/templatewrapper_spec.rb +6 -5
- data/spec/unit/parser/type_loader_spec.rb +191 -165
- data/spec/unit/pops/adaptable_spec.rb +143 -0
- data/spec/unit/pops/containment_spec.rb +25 -0
- data/spec/unit/pops/factory_rspec_helper.rb +77 -0
- data/spec/unit/pops/factory_spec.rb +329 -0
- data/spec/unit/pops/issues_spec.rb +26 -0
- data/spec/unit/pops/label_provider_spec.rb +42 -0
- data/spec/unit/pops/model/ast_transformer_spec.rb +65 -0
- data/spec/unit/pops/model/model_spec.rb +37 -0
- data/spec/unit/pops/parser/lexer_spec.rb +884 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +248 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +93 -0
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +159 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +175 -0
- data/spec/unit/pops/parser/parse_resource_spec.rb +228 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +11 -0
- data/spec/unit/pops/parser/parser_spec.rb +15 -0
- data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +16 -0
- data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +243 -0
- data/spec/unit/pops/transformer/transform_calls_spec.rb +80 -0
- data/spec/unit/pops/transformer/transform_conditionals_spec.rb +132 -0
- data/spec/unit/pops/transformer/transform_containers_spec.rb +182 -0
- data/spec/unit/pops/transformer/transform_resource_spec.rb +185 -0
- data/spec/unit/pops/transformer/transformer_rspec_helper.rb +27 -0
- data/spec/unit/pops/visitor_spec.rb +94 -0
- data/spec/unit/property_spec.rb +11 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +3 -0
- data/spec/unit/provider/cron/crontab_spec.rb +97 -7
- data/spec/unit/provider/cron/parsed_spec.rb +325 -0
- data/spec/unit/provider/exec/posix_spec.rb +1 -1
- data/spec/unit/provider/group/groupadd_spec.rb +33 -3
- data/spec/unit/provider/group/pw_spec.rb +5 -5
- data/spec/unit/provider/nameservice_spec.rb +304 -0
- data/spec/unit/provider/package/aix_spec.rb +53 -11
- data/spec/unit/provider/package/aptrpm_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +6 -11
- data/spec/unit/provider/package/nim_spec.rb +216 -7
- data/spec/unit/provider/package/opkg_spec.rb +180 -0
- data/spec/unit/provider/package/rpm_spec.rb +149 -3
- data/spec/unit/provider/package/yum_spec.rb +6 -5
- data/spec/unit/provider/parsedfile_spec.rb +122 -28
- data/spec/unit/provider/service/freebsd_spec.rb +18 -0
- data/spec/unit/provider/service/init_spec.rb +108 -87
- data/spec/unit/provider/service/launchd_spec.rb +2 -2
- data/spec/unit/provider/service/openwrt_spec.rb +109 -0
- data/spec/unit/provider/service/src_spec.rb +117 -41
- data/spec/unit/provider/service/systemd_spec.rb +125 -17
- data/spec/unit/provider/service/upstart_spec.rb +1 -1
- data/spec/unit/provider/user/aix_spec.rb +42 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +1 -0
- data/spec/unit/provider/user/pw_spec.rb +24 -12
- data/spec/unit/provider/user/user_role_add_spec.rb +1 -1
- data/spec/unit/provider/user/useradd_spec.rb +179 -15
- data/spec/unit/resource/type_spec.rb +3 -3
- data/spec/unit/scheduler/job_spec.rb +79 -0
- data/spec/unit/scheduler/scheduler_spec.rb +129 -0
- data/spec/unit/scheduler/splay_job_spec.rb +35 -0
- data/spec/unit/ssl/base_spec.rb +3 -9
- data/spec/unit/ssl/certificate_authority_spec.rb +1 -0
- data/spec/unit/ssl/certificate_request_spec.rb +3 -1
- data/spec/unit/ssl/certificate_spec.rb +3 -1
- data/spec/unit/ssl/configuration_spec.rb +74 -0
- data/spec/unit/ssl/host_spec.rb +28 -7
- data/spec/unit/ssl/validator_spec.rb +311 -0
- data/spec/unit/transaction/event_manager_spec.rb +49 -0
- data/spec/unit/transaction/event_spec.rb +20 -5
- data/spec/unit/transaction/report_spec.rb +8 -0
- data/spec/unit/type/cron_spec.rb +9 -0
- data/spec/unit/type/exec_spec.rb +11 -0
- data/spec/unit/type/file/content_spec.rb +20 -20
- data/spec/unit/type/file/mode_spec.rb +6 -0
- data/spec/unit/type/file/source_spec.rb +9 -7
- data/spec/unit/type/file_spec.rb +22 -3
- data/spec/unit/type/service_spec.rb +34 -21
- data/spec/unit/type_spec.rb +46 -1
- data/spec/unit/util/backups_spec.rb +2 -2
- data/spec/unit/util/execution_spec.rb +4 -1
- data/spec/unit/util/filetype_spec.rb +6 -0
- data/spec/unit/util/monkey_patches_spec.rb +18 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +37 -0
- data/spec/unit/util/network_device/config_spec.rb +14 -0
- data/spec/unit/util/network_device_spec.rb +3 -3
- data/spec/unit/util/profiler/logging_spec.rb +81 -0
- data/spec/unit/util/profiler/none_spec.rb +12 -0
- data/spec/unit/util/profiler/object_counts_spec.rb +14 -0
- data/spec/unit/util/profiler/wall_clock_spec.rb +13 -0
- data/spec/unit/util/pson_spec.rb +5 -0
- data/spec/unit/util/ssl_spec.rb +51 -0
- data/spec/unit/util/windows/root_certs_spec.rb +15 -0
- data/spec/unit/util_spec.rb +28 -0
- metadata +2593 -2307
- data/spec/unit/module_tool/applications/application_spec.rb +0 -19
data/spec/unit/type/exec_spec.rb
CHANGED
|
@@ -318,6 +318,17 @@ describe Puppet::Type.type(:exec) do
|
|
|
318
318
|
end
|
|
319
319
|
end
|
|
320
320
|
|
|
321
|
+
describe "when setting command" do
|
|
322
|
+
subject { described_class.new(:name => @command) }
|
|
323
|
+
it "fails when passed an Array" do
|
|
324
|
+
expect { subject[:command] = [] }.to raise_error Puppet::Error, /Command must be a String/
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
it "fails when passed a Hash" do
|
|
328
|
+
expect { subject[:command] = {} }.to raise_error Puppet::Error, /Command must be a String/
|
|
329
|
+
end
|
|
330
|
+
end
|
|
331
|
+
|
|
321
332
|
describe "when setting refresh" do
|
|
322
333
|
it_should_behave_like "all exec command parameters", :refresh
|
|
323
334
|
end
|
|
@@ -162,36 +162,36 @@ describe content do
|
|
|
162
162
|
describe "and the file exists" do
|
|
163
163
|
before do
|
|
164
164
|
@resource.stubs(:stat).returns mock("stat")
|
|
165
|
+
@content.should = "some content"
|
|
165
166
|
end
|
|
166
167
|
|
|
167
168
|
it "should return false if the current contents are different from the desired content" do
|
|
168
|
-
@content.should = "some content"
|
|
169
169
|
@content.should_not be_safe_insync("other content")
|
|
170
170
|
end
|
|
171
171
|
|
|
172
172
|
it "should return true if the sum for the current contents is the same as the sum for the desired content" do
|
|
173
|
-
@content.should = "some content"
|
|
174
173
|
@content.must be_safe_insync("{md5}" + Digest::MD5.hexdigest("some content"))
|
|
175
174
|
end
|
|
176
175
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
176
|
+
[true, false].product([true, false]).each do |cfg, param|
|
|
177
|
+
describe "and Puppet[:show_diff] is #{cfg} and show_diff => #{param}" do
|
|
178
|
+
before do
|
|
179
|
+
Puppet[:show_diff] = cfg
|
|
180
|
+
@resource.stubs(:show_diff?).returns param
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
if cfg and param
|
|
184
|
+
it "should display a diff" do
|
|
185
|
+
@content.expects(:diff).returns("my diff").once
|
|
186
|
+
@content.expects(:notice).with("\nmy diff").once
|
|
187
|
+
@content.should_not be_safe_insync("other content")
|
|
188
|
+
end
|
|
189
|
+
else
|
|
190
|
+
it "should not display a diff" do
|
|
191
|
+
@content.expects(:diff).never
|
|
192
|
+
@content.should_not be_safe_insync("other content")
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
195
|
end
|
|
196
196
|
end
|
|
197
197
|
end
|
|
@@ -138,5 +138,11 @@ describe Puppet::Type.type(:file).attrclass(:mode) do
|
|
|
138
138
|
mode.is_to_s('1755').should == '1755'
|
|
139
139
|
end
|
|
140
140
|
end
|
|
141
|
+
|
|
142
|
+
describe 'when passed :absent' do
|
|
143
|
+
it 'returns :absent' do
|
|
144
|
+
mode.is_to_s(:absent).should == :absent
|
|
145
|
+
end
|
|
146
|
+
end
|
|
141
147
|
end
|
|
142
148
|
end
|
|
@@ -93,6 +93,7 @@ describe Puppet::Type.type(:file).attrclass(:source) do
|
|
|
93
93
|
describe "when returning the metadata" do
|
|
94
94
|
before do
|
|
95
95
|
@metadata = stub 'metadata', :source= => nil
|
|
96
|
+
@resource.stubs(:[]).with(:links).returns :manage
|
|
96
97
|
end
|
|
97
98
|
|
|
98
99
|
it "should return already-available metadata" do
|
|
@@ -108,22 +109,22 @@ describe Puppet::Type.type(:file).attrclass(:source) do
|
|
|
108
109
|
|
|
109
110
|
it "should collect its metadata using the Metadata class if it is not already set" do
|
|
110
111
|
@source = source.new(:resource => @resource, :value => @foobar)
|
|
111
|
-
Puppet::FileServing::Metadata.indirection.expects(:find).with(@foobar_uri, :environment => @environment).returns @metadata
|
|
112
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(@foobar_uri, :environment => @environment, :links => :manage).returns @metadata
|
|
112
113
|
@source.metadata
|
|
113
114
|
end
|
|
114
115
|
|
|
115
116
|
it "should use the metadata from the first found source" do
|
|
116
117
|
metadata = stub 'metadata', :source= => nil
|
|
117
118
|
@source = source.new(:resource => @resource, :value => [@foobar, @feebooz])
|
|
118
|
-
Puppet::FileServing::Metadata.indirection.expects(:find).with(@foobar_uri, :environment => @environment).returns nil
|
|
119
|
-
Puppet::FileServing::Metadata.indirection.expects(:find).with(@feebooz_uri, :environment => @environment).returns metadata
|
|
119
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(@foobar_uri, :environment => @environment, :links => :manage).returns nil
|
|
120
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(@feebooz_uri, :environment => @environment, :links => :manage).returns metadata
|
|
120
121
|
@source.metadata.should equal(metadata)
|
|
121
122
|
end
|
|
122
123
|
|
|
123
124
|
it "should store the found source as the metadata's source" do
|
|
124
125
|
metadata = mock 'metadata'
|
|
125
126
|
@source = source.new(:resource => @resource, :value => @foobar)
|
|
126
|
-
Puppet::FileServing::Metadata.indirection.expects(:find).with(@foobar_uri, :environment => @environment).returns metadata
|
|
127
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(@foobar_uri, :environment => @environment, :links => :manage).returns metadata
|
|
127
128
|
|
|
128
129
|
metadata.expects(:source=).with(@foobar_uri)
|
|
129
130
|
@source.metadata
|
|
@@ -131,7 +132,7 @@ describe Puppet::Type.type(:file).attrclass(:source) do
|
|
|
131
132
|
|
|
132
133
|
it "should fail intelligently if an exception is encountered while querying for metadata" do
|
|
133
134
|
@source = source.new(:resource => @resource, :value => @foobar)
|
|
134
|
-
Puppet::FileServing::Metadata.indirection.expects(:find).with(@foobar_uri, :environment => @environment).raises RuntimeError
|
|
135
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(@foobar_uri, :environment => @environment, :links => :manage).raises RuntimeError
|
|
135
136
|
|
|
136
137
|
@source.expects(:fail).raises ArgumentError
|
|
137
138
|
lambda { @source.metadata }.should raise_error(ArgumentError)
|
|
@@ -139,7 +140,7 @@ describe Puppet::Type.type(:file).attrclass(:source) do
|
|
|
139
140
|
|
|
140
141
|
it "should fail if no specified sources can be found" do
|
|
141
142
|
@source = source.new(:resource => @resource, :value => @foobar)
|
|
142
|
-
Puppet::FileServing::Metadata.indirection.expects(:find).with(@foobar_uri, :environment => @environment).returns nil
|
|
143
|
+
Puppet::FileServing::Metadata.indirection.expects(:find).with(@foobar_uri, :environment => @environment, :links => :manage).returns nil
|
|
143
144
|
|
|
144
145
|
@source.expects(:fail).raises RuntimeError
|
|
145
146
|
|
|
@@ -321,7 +322,8 @@ describe Puppet::Type.type(:file).attrclass(:source) do
|
|
|
321
322
|
before(:each) do
|
|
322
323
|
metadata = Puppet::FileServing::Metadata.new(path, :source => uri, 'type' => 'file')
|
|
323
324
|
#metadata = stub('remote', :ftype => "file", :source => uri)
|
|
324
|
-
Puppet::FileServing::Metadata.indirection.stubs(:find).
|
|
325
|
+
Puppet::FileServing::Metadata.indirection.stubs(:find).
|
|
326
|
+
with(uri,all_of(has_key(:environment), has_key(:links))).returns metadata
|
|
325
327
|
resource[:source] = uri
|
|
326
328
|
end
|
|
327
329
|
|
data/spec/unit/type/file_spec.rb
CHANGED
|
@@ -856,20 +856,39 @@ describe Puppet::Type.type(:file) do
|
|
|
856
856
|
|
|
857
857
|
describe "#remove_existing" do
|
|
858
858
|
it "should do nothing if the file doesn't exist" do
|
|
859
|
-
file.remove_existing(:file).should ==
|
|
859
|
+
file.remove_existing(:file).should == false
|
|
860
860
|
end
|
|
861
861
|
|
|
862
862
|
it "should fail if it can't backup the file" do
|
|
863
|
-
file.stubs(:stat).returns stub('stat')
|
|
863
|
+
file.stubs(:stat).returns stub('stat', :ftype => 'file')
|
|
864
864
|
file.stubs(:perform_backup).returns false
|
|
865
865
|
|
|
866
866
|
expect { file.remove_existing(:file) }.to raise_error(Puppet::Error, /Could not back up; will not replace/)
|
|
867
867
|
end
|
|
868
868
|
|
|
869
|
+
describe "backing up directories" do
|
|
870
|
+
it "should not backup directories if force is false" do
|
|
871
|
+
file[:force] = false
|
|
872
|
+
file.stubs(:stat).returns stub('stat', :ftype => 'directory')
|
|
873
|
+
file.expects(:perform_backup).never
|
|
874
|
+
file.remove_existing(:file).should == false
|
|
875
|
+
end
|
|
876
|
+
|
|
877
|
+
it "should backup directories if force is true" do
|
|
878
|
+
file[:force] = true
|
|
879
|
+
FileUtils.expects(:rmtree).with(file[:path])
|
|
880
|
+
|
|
881
|
+
file.stubs(:stat).returns stub('stat', :ftype => 'directory')
|
|
882
|
+
file.expects(:perform_backup).once.returns(true)
|
|
883
|
+
|
|
884
|
+
file.remove_existing(:file).should == true
|
|
885
|
+
end
|
|
886
|
+
end
|
|
887
|
+
|
|
869
888
|
it "should not do anything if the file is already the right type and not a link" do
|
|
870
889
|
file.stubs(:stat).returns stub('stat', :ftype => 'file')
|
|
871
890
|
|
|
872
|
-
file.remove_existing(:file).should ==
|
|
891
|
+
file.remove_existing(:file).should == false
|
|
873
892
|
end
|
|
874
893
|
|
|
875
894
|
it "should not remove directories and should not invalidate the stat unless force is set" do
|
|
@@ -49,47 +49,60 @@ describe Puppet::Type.type(:service), "when validating attribute values" do
|
|
|
49
49
|
svc.should(:ensure).should == :stopped
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
describe "the enable property" do
|
|
53
|
+
before :each do
|
|
54
|
+
@provider.class.stubs(:supports_parameter?).returns true
|
|
55
|
+
end
|
|
56
|
+
it "should support :true as a value" do
|
|
57
|
+
srv = Puppet::Type.type(:service).new(:name => "yay", :enable => :true)
|
|
58
|
+
srv.should(:enable).should == :true
|
|
59
|
+
end
|
|
55
60
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
61
|
+
it "should support :false as a value" do
|
|
62
|
+
srv = Puppet::Type.type(:service).new(:name => "yay", :enable => :false)
|
|
63
|
+
srv.should(:enable).should == :false
|
|
64
|
+
end
|
|
59
65
|
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
it "should support :manual as a value on Windows" do
|
|
67
|
+
Puppet.features.stubs(:microsoft_windows?).returns true
|
|
62
68
|
|
|
63
|
-
|
|
64
|
-
|
|
69
|
+
srv = Puppet::Type.type(:service).new(:name => "yay", :enable => :manual)
|
|
70
|
+
srv.should(:enable).should == :manual
|
|
71
|
+
end
|
|
65
72
|
|
|
66
|
-
|
|
67
|
-
|
|
73
|
+
it "should not support :manual as a value when not on Windows" do
|
|
74
|
+
Puppet.features.stubs(:microsoft_windows?).returns false
|
|
68
75
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
expect { Puppet::Type.type(:service).new(:name => "yay", :enable => :manual) }.to raise_error(
|
|
77
|
+
Puppet::Error,
|
|
78
|
+
/Setting enable to manual is only supported on Microsoft Windows\./
|
|
79
|
+
)
|
|
80
|
+
end
|
|
73
81
|
end
|
|
74
82
|
|
|
75
83
|
it "should support :true as a value to :hasstatus" do
|
|
76
|
-
Puppet::Type.type(:service).new(:name => "yay", :hasstatus => :true)
|
|
84
|
+
srv = Puppet::Type.type(:service).new(:name => "yay", :hasstatus => :true)
|
|
85
|
+
srv[:hasstatus].should == :true
|
|
77
86
|
end
|
|
78
87
|
|
|
79
88
|
it "should support :false as a value to :hasstatus" do
|
|
80
|
-
Puppet::Type.type(:service).new(:name => "yay", :hasstatus => :false)
|
|
89
|
+
srv = Puppet::Type.type(:service).new(:name => "yay", :hasstatus => :false)
|
|
90
|
+
srv[:hasstatus].should == :false
|
|
81
91
|
end
|
|
82
92
|
|
|
83
93
|
it "should specify :true as the default value of hasstatus" do
|
|
84
|
-
Puppet::Type.type(:service).new(:name => "yay")
|
|
94
|
+
srv = Puppet::Type.type(:service).new(:name => "yay")
|
|
95
|
+
srv[:hasstatus].should == :true
|
|
85
96
|
end
|
|
86
97
|
|
|
87
98
|
it "should support :true as a value to :hasrestart" do
|
|
88
|
-
Puppet::Type.type(:service).new(:name => "yay", :hasrestart => :true)
|
|
99
|
+
srv = Puppet::Type.type(:service).new(:name => "yay", :hasrestart => :true)
|
|
100
|
+
srv[:hasrestart].should == :true
|
|
89
101
|
end
|
|
90
102
|
|
|
91
103
|
it "should support :false as a value to :hasrestart" do
|
|
92
|
-
Puppet::Type.type(:service).new(:name => "yay", :hasrestart => :false)
|
|
104
|
+
srv = Puppet::Type.type(:service).new(:name => "yay", :hasrestart => :false)
|
|
105
|
+
srv[:hasrestart].should == :false
|
|
93
106
|
end
|
|
94
107
|
|
|
95
108
|
it "should allow setting the :enable parameter if the provider has the :enableable feature" do
|
data/spec/unit/type_spec.rb
CHANGED
|
@@ -356,7 +356,23 @@ describe Puppet::Type, :unless => Puppet.features.microsoft_windows? do
|
|
|
356
356
|
end
|
|
357
357
|
|
|
358
358
|
it "should fail if any invalid attributes have been provided" do
|
|
359
|
-
expect { Puppet::Type.type(:mount).new(:title => "/foo", :nosuchattr => "whatever") }.to raise_error(Puppet::Error)
|
|
359
|
+
expect { Puppet::Type.type(:mount).new(:title => "/foo", :nosuchattr => "whatever") }.to raise_error(Puppet::Error, /Invalid parameter/)
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
context "when an attribute fails validation" do
|
|
363
|
+
it "should fail with Puppet::ResourceError when PuppetError raised" do
|
|
364
|
+
expect { Puppet::Type.type(:file).new(:title => "/foo", :source => "unknown:///") }.to raise_error(Puppet::ResourceError, /Parameter source failed on File\[.*foo\]/)
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
it "should fail with Puppet::ResourceError when ArgumentError raised" do
|
|
368
|
+
expect { Puppet::Type.type(:file).new(:title => "/foo", :mode => "abcdef") }.to raise_error(Puppet::ResourceError, /Parameter mode failed on File\[.*foo\]/)
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
it "should include the file/line in the error" do
|
|
372
|
+
Puppet::Type.type(:file).any_instance.stubs(:file).returns("example.pp")
|
|
373
|
+
Puppet::Type.type(:file).any_instance.stubs(:line).returns(42)
|
|
374
|
+
expect { Puppet::Type.type(:file).new(:title => "/foo", :source => "unknown:///") }.to raise_error(Puppet::ResourceError, /example.pp:42/)
|
|
375
|
+
end
|
|
360
376
|
end
|
|
361
377
|
|
|
362
378
|
it "should set its name to the resource's title if the resource does not have a :name or namevar parameter set" do
|
|
@@ -419,6 +435,35 @@ describe Puppet::Type, :unless => Puppet.features.microsoft_windows? do
|
|
|
419
435
|
it "should delete the name via the namevar from the originally provided parameters" do
|
|
420
436
|
Puppet::Type.type(:file).new(:name => make_absolute('/foo')).original_parameters[:path].should be_nil
|
|
421
437
|
end
|
|
438
|
+
|
|
439
|
+
context "when validating the resource" do
|
|
440
|
+
it "should call the type's validate method if present" do
|
|
441
|
+
Puppet::Type.type(:file).any_instance.expects(:validate)
|
|
442
|
+
Puppet::Type.type(:file).new(:name => make_absolute('/foo'))
|
|
443
|
+
end
|
|
444
|
+
|
|
445
|
+
it "should raise Puppet::ResourceError with resource name when Puppet::Error raised" do
|
|
446
|
+
expect do
|
|
447
|
+
Puppet::Type.type(:file).new(
|
|
448
|
+
:name => make_absolute('/foo'),
|
|
449
|
+
:source => "puppet:///",
|
|
450
|
+
:content => "foo"
|
|
451
|
+
)
|
|
452
|
+
end.to raise_error(Puppet::ResourceError, /Validation of File\[.*foo.*\]/)
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
it "should raise Puppet::ResourceError with manifest file and line on failure" do
|
|
456
|
+
Puppet::Type.type(:file).any_instance.stubs(:file).returns("example.pp")
|
|
457
|
+
Puppet::Type.type(:file).any_instance.stubs(:line).returns(42)
|
|
458
|
+
expect do
|
|
459
|
+
Puppet::Type.type(:file).new(
|
|
460
|
+
:name => make_absolute('/foo'),
|
|
461
|
+
:source => "puppet:///",
|
|
462
|
+
:content => "foo"
|
|
463
|
+
)
|
|
464
|
+
end.to raise_error(Puppet::ResourceError, /Validation.*example.pp:42/)
|
|
465
|
+
end
|
|
466
|
+
end
|
|
422
467
|
end
|
|
423
468
|
|
|
424
469
|
it "should have a class method for converting a hash into a Puppet::Resource instance" do
|
|
@@ -66,7 +66,7 @@ describe Puppet::Util::Backups do
|
|
|
66
66
|
|
|
67
67
|
it "should fail when the old backup can't be removed" do
|
|
68
68
|
File.expects(:lstat).with(backup).returns stub("stat", :ftype => "file")
|
|
69
|
-
File.expects(:unlink).raises ArgumentError
|
|
69
|
+
File.expects(:unlink).with(backup).raises ArgumentError
|
|
70
70
|
FileUtils.expects(:cp_r).never
|
|
71
71
|
FileTest.expects(:exists?).with(path).returns(true)
|
|
72
72
|
|
|
@@ -75,7 +75,7 @@ describe Puppet::Util::Backups do
|
|
|
75
75
|
|
|
76
76
|
it "should not try to remove backups that don't exist" do
|
|
77
77
|
File.expects(:lstat).with(backup).raises(Errno::ENOENT)
|
|
78
|
-
File.expects(:unlink).never
|
|
78
|
+
File.expects(:unlink).with(backup).never
|
|
79
79
|
FileUtils.stubs(:cp_r)
|
|
80
80
|
FileTest.expects(:exists?).with(path).returns(true)
|
|
81
81
|
|
|
@@ -44,6 +44,9 @@ describe Puppet::Util::Execution do
|
|
|
44
44
|
Puppet::Util::SUIDManager.stubs(:change_user)
|
|
45
45
|
Puppet::Util::SUIDManager.stubs(:change_group)
|
|
46
46
|
|
|
47
|
+
# ensure that we don't really close anything!
|
|
48
|
+
(0..256).each {|n| IO.stubs(:new) }
|
|
49
|
+
|
|
47
50
|
$stdin.stubs(:reopen)
|
|
48
51
|
$stdout.stubs(:reopen)
|
|
49
52
|
$stderr.stubs(:reopen)
|
|
@@ -576,7 +579,7 @@ describe Puppet::Util::Execution do
|
|
|
576
579
|
it "should raise an error if a nil option is specified" do
|
|
577
580
|
expect {
|
|
578
581
|
Puppet::Util::Execution.execute('fail command', nil)
|
|
579
|
-
}.to raise_error(TypeError, /can\'t convert nil into Hash/)
|
|
582
|
+
}.to raise_error(TypeError, /(can\'t convert|no implicit conversion of) nil into Hash/)
|
|
580
583
|
end
|
|
581
584
|
end
|
|
582
585
|
end
|
|
@@ -100,6 +100,12 @@ describe Puppet::Util::FileType do
|
|
|
100
100
|
type.should_not be_nil
|
|
101
101
|
end
|
|
102
102
|
|
|
103
|
+
# make Puppet::Util::SUIDManager return something deterministic, not the
|
|
104
|
+
# uid of the user running the tests, except where overridden below.
|
|
105
|
+
before :each do
|
|
106
|
+
Puppet::Util::SUIDManager.stubs(:uid).returns 1234
|
|
107
|
+
end
|
|
108
|
+
|
|
103
109
|
describe "#read" do
|
|
104
110
|
it "should run crontab -l as the target user" do
|
|
105
111
|
Puppet::Util::Execution.expects(:execute).with(['crontab', '-l'], user_options).returns crontab
|
|
@@ -94,6 +94,24 @@ describe Array do
|
|
|
94
94
|
[1,2,3].drop(3).should == []
|
|
95
95
|
end
|
|
96
96
|
end
|
|
97
|
+
|
|
98
|
+
describe "#respond_to?" do
|
|
99
|
+
it "should return true for a standard method (each)" do
|
|
100
|
+
[].respond_to?(:each).should be_true
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "should return false for to_hash" do
|
|
104
|
+
[].respond_to?(:to_hash).should be_false
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "should accept one argument" do
|
|
108
|
+
lambda { [].respond_to?(:each) }.should_not raise_error
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it "should accept two arguments" do
|
|
112
|
+
lambda { [].respond_to?(:each, false) }.should_not raise_error
|
|
113
|
+
end
|
|
114
|
+
end
|
|
97
115
|
end
|
|
98
116
|
|
|
99
117
|
describe IO do
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
require 'spec_helper'
|
|
3
3
|
|
|
4
4
|
require 'puppet/util/network_device/cisco/device'
|
|
5
|
+
require 'puppet/util/network_device/transport/telnet'
|
|
5
6
|
|
|
6
7
|
describe Puppet::Util::NetworkDevice::Cisco::Device do
|
|
7
8
|
before(:each) do
|
|
@@ -16,10 +17,46 @@ describe Puppet::Util::NetworkDevice::Cisco::Device do
|
|
|
16
17
|
cisco.enable_password.should == "enable_password"
|
|
17
18
|
end
|
|
18
19
|
|
|
20
|
+
describe "decoding the enable password" do
|
|
21
|
+
it "should not parse a password if no query is given" do
|
|
22
|
+
cisco = described_class.new("telnet://user:password@localhost:23")
|
|
23
|
+
cisco.enable_password.should be_nil
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should not parse a password if no enable param is given" do
|
|
27
|
+
cisco = described_class.new("telnet://user:password@localhost:23/?notenable=notapassword")
|
|
28
|
+
cisco.enable_password.should be_nil
|
|
29
|
+
end
|
|
30
|
+
it "should decode sharps" do
|
|
31
|
+
cisco = described_class.new("telnet://user:password@localhost:23/?enable=enable_password%23with_a_sharp")
|
|
32
|
+
cisco.enable_password.should == "enable_password#with_a_sharp"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should decode spaces" do
|
|
36
|
+
cisco = described_class.new("telnet://user:password@localhost:23/?enable=enable_password%20with_a_space")
|
|
37
|
+
cisco.enable_password.should == "enable_password with_a_space"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should only use the query parameter" do
|
|
41
|
+
cisco = described_class.new("telnet://enable=:password@localhost:23/?enable=enable_password¬enable=notapassword")
|
|
42
|
+
cisco.enable_password.should == "enable_password"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
19
46
|
it "should find the enable password from the options" do
|
|
20
47
|
cisco = Puppet::Util::NetworkDevice::Cisco::Device.new("telnet://user:password@localhost:23/?enable=enable_password", :enable_password => "mypass")
|
|
21
48
|
cisco.enable_password.should == "mypass"
|
|
22
49
|
end
|
|
50
|
+
|
|
51
|
+
it "should find the debug mode from the options" do
|
|
52
|
+
Puppet::Util::NetworkDevice::Transport::Telnet.expects(:new).with(true).returns(@transport)
|
|
53
|
+
cisco = Puppet::Util::NetworkDevice::Cisco::Device.new("telnet://user:password@localhost:23", :debug => true)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should set the debug mode to nil by default" do
|
|
57
|
+
Puppet::Util::NetworkDevice::Transport::Telnet.expects(:new).with(nil).returns(@transport)
|
|
58
|
+
cisco = Puppet::Util::NetworkDevice::Cisco::Device.new("telnet://user:password@localhost:23")
|
|
59
|
+
end
|
|
23
60
|
end
|
|
24
61
|
|
|
25
62
|
describe "when connecting to the physical device" do
|