puppet 3.3.2 → 3.4.0.rc1
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/CONTRIBUTING.md +22 -0
- data/Gemfile +11 -2
- data/README.md +13 -17
- data/README_DEVELOPER.md +1 -1
- data/Rakefile +1 -1
- data/examples/hiera/README.md +4 -4
- data/ext/debian/puppetmaster.init +1 -0
- data/ext/debian/rules +2 -5
- data/ext/nagios/check_puppet.rb +7 -7
- data/ext/osx/file_mapping.yaml +1 -1
- data/ext/osx/preflight.erb +34 -19
- data/ext/rack/{files/config.ru → config.ru} +0 -0
- data/ext/rack/{files/apache2.conf → example-passenger-vhost.conf} +6 -0
- data/ext/redhat/puppet.spec.erb +20 -2
- data/ext/systemd/{puppetagent.service → puppet.service} +0 -0
- data/lib/hiera_puppet.rb +2 -2
- data/lib/puppet/agent.rb +1 -6
- data/lib/puppet/application.rb +15 -2
- data/lib/puppet/application/agent.rb +2 -7
- data/lib/puppet/application/apply.rb +8 -13
- data/lib/puppet/application/cert.rb +47 -7
- data/lib/puppet/application/device.rb +1 -6
- data/lib/puppet/application/face_base.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +3 -12
- data/lib/puppet/application/master.rb +1 -6
- data/lib/puppet/application/queue.rb +1 -6
- data/lib/puppet/application/resource.rb +2 -6
- data/lib/puppet/coercion.rb +11 -0
- data/lib/puppet/configurer.rb +5 -3
- data/lib/puppet/configurer/downloader.rb +3 -1
- data/lib/puppet/configurer/plugin_handler.rb +10 -0
- data/lib/puppet/confine.rb +80 -0
- data/lib/puppet/{provider/confine → confine}/exists.rb +3 -3
- data/lib/puppet/{provider/confine → confine}/false.rb +2 -2
- data/lib/puppet/{provider/confine → confine}/feature.rb +2 -2
- data/lib/puppet/{provider/confine → confine}/true.rb +2 -2
- data/lib/puppet/{provider/confine → confine}/variable.rb +2 -2
- data/lib/puppet/{provider/confine_collection.rb → confine_collection.rb} +4 -4
- data/lib/puppet/{provider/confiner.rb → confiner.rb} +4 -4
- data/lib/puppet/daemon.rb +2 -6
- data/lib/puppet/data_binding.rb +2 -30
- data/lib/puppet/defaults.rb +283 -174
- data/lib/puppet/error.rb +1 -0
- data/lib/puppet/external/nagios.rb +0 -2
- data/lib/puppet/external/nagios/base.rb +4 -3
- data/lib/puppet/external/nagios/grammar.ry +173 -112
- data/lib/puppet/external/nagios/parser.rb +233 -184
- data/lib/puppet/face/file/store.rb +1 -1
- data/lib/puppet/face/module/generate.rb +5 -7
- data/lib/puppet/face/parser.rb +12 -2
- data/lib/puppet/face/plugin.rb +6 -0
- data/lib/puppet/feature/base.rb +16 -0
- data/lib/puppet/feature/external_facts.rb +5 -0
- data/lib/puppet/feature/libuser.rb +1 -1
- data/lib/puppet/feature/msgpack.rb +1 -0
- data/lib/puppet/feature/rails.rb +2 -2
- data/lib/puppet/file_bucket/dipper.rb +8 -6
- data/lib/puppet/file_bucket/file.rb +17 -1
- data/lib/puppet/file_serving/base.rb +21 -10
- data/lib/puppet/file_serving/configuration.rb +5 -7
- data/lib/puppet/file_serving/configuration/parser.rb +1 -1
- data/lib/puppet/file_serving/content.rb +1 -1
- data/lib/puppet/file_serving/fileset.rb +3 -3
- data/lib/puppet/file_serving/metadata.rb +22 -18
- data/lib/puppet/file_serving/mount/file.rb +1 -1
- data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
- data/lib/puppet/file_system.rb +3 -0
- data/lib/puppet/file_system/file.rb +261 -0
- data/lib/puppet/file_system/file18.rb +5 -0
- data/lib/puppet/file_system/file19.rb +5 -0
- data/lib/puppet/file_system/file19windows.rb +113 -0
- data/lib/puppet/file_system/memory_file.rb +31 -0
- data/lib/puppet/file_system/tempfile.rb +20 -0
- data/lib/puppet/indirector/active_record.rb +1 -0
- data/lib/puppet/indirector/catalog/compiler.rb +28 -0
- data/lib/puppet/indirector/certificate_request/memory.rb +6 -0
- data/lib/puppet/indirector/data_binding/hiera.rb +46 -2
- data/lib/puppet/indirector/direct_file_server.rb +2 -2
- data/lib/puppet/indirector/facts/facter.rb +25 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +60 -74
- data/lib/puppet/indirector/indirection.rb +5 -1
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/key/ca.rb +4 -0
- data/lib/puppet/indirector/key/file.rb +7 -3
- data/lib/puppet/indirector/key/memory.rb +6 -0
- data/lib/puppet/indirector/node/write_only_yaml.rb +2 -2
- data/lib/puppet/indirector/request.rb +17 -11
- data/lib/puppet/indirector/resource/ral.rb +5 -0
- data/lib/puppet/indirector/resource/rest.rb +1 -0
- data/lib/puppet/indirector/resource/store_configs.rb +4 -0
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/indirector/ssl_file.rb +7 -7
- data/lib/puppet/indirector/terminus.rb +4 -0
- data/lib/puppet/indirector/yaml.rb +3 -3
- data/lib/puppet/interface/documentation.rb +4 -11
- data/lib/puppet/module.rb +19 -6
- data/lib/puppet/module_tool/applications/builder.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -1
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/dependency.rb +7 -3
- data/lib/puppet/module_tool/metadata.rb +6 -2
- data/lib/puppet/module_tool/tar.rb +2 -1
- data/lib/puppet/module_tool/tar/gnu.rb +6 -2
- data/lib/puppet/module_tool/tar/mini.rb +2 -0
- data/lib/puppet/module_tool/tar/solaris.rb +2 -5
- data/lib/puppet/network/authconfig.rb +0 -2
- data/lib/puppet/network/authentication.rb +1 -1
- data/lib/puppet/network/authstore.rb +6 -7
- data/lib/puppet/network/format.rb +2 -3
- data/lib/puppet/network/format_handler.rb +16 -11
- data/lib/puppet/network/format_support.rb +14 -0
- data/lib/puppet/network/formats.rb +26 -0
- data/lib/puppet/network/http/connection.rb +8 -41
- data/lib/puppet/network/http/handler.rb +28 -32
- data/lib/puppet/network/http/webrick.rb +15 -22
- data/lib/puppet/network/http_pool.rb +43 -9
- data/lib/puppet/network/rights.rb +0 -0
- data/lib/puppet/node.rb +24 -8
- data/lib/puppet/node/environment.rb +18 -20
- data/lib/puppet/node/facts.rb +23 -6
- data/lib/puppet/parameter.rb +15 -2
- data/lib/puppet/parameter/boolean.rb +5 -0
- data/lib/puppet/parameter/value_collection.rb +6 -4
- data/lib/puppet/parser/ast/resourceparam.rb +2 -1
- data/lib/puppet/parser/compiler.rb +25 -9
- data/lib/puppet/parser/files.rb +1 -1
- data/lib/puppet/parser/functions.rb +12 -21
- data/lib/puppet/parser/functions/collect.rb +6 -35
- data/lib/puppet/parser/functions/contain.rb +26 -0
- data/lib/puppet/parser/functions/create_resources.rb +5 -0
- data/lib/puppet/parser/functions/extlookup.rb +2 -2
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/{reject.rb → filter.rb} +13 -12
- data/lib/puppet/parser/functions/fqdn_rand.rb +13 -5
- data/lib/puppet/parser/functions/include.rb +18 -1
- data/lib/puppet/parser/functions/map.rb +44 -0
- data/lib/puppet/parser/functions/select.rb +6 -38
- data/lib/puppet/parser/lexer.rb +1 -1
- data/lib/puppet/parser/parser_support.rb +1 -1
- data/lib/puppet/parser/resource.rb +6 -45
- data/lib/puppet/parser/scope.rb +33 -2
- data/lib/puppet/parser/type_loader.rb +4 -60
- data/lib/puppet/pops/binder/bindings_loader.rb +1 -1
- data/lib/puppet/pops/binder/config/binder_config.rb +3 -3
- data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +1 -1
- data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +1 -1
- data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +2 -2
- data/lib/puppet/pops/issues.rb +4 -0
- data/lib/puppet/pops/model/ast_transformer.rb +4 -1
- data/lib/puppet/pops/model/model_label_provider.rb +1 -1
- data/lib/puppet/pops/parser/egrammar.ra +5 -24
- data/lib/puppet/pops/parser/eparser.rb +859 -902
- data/lib/puppet/pops/parser/lexer.rb +48 -30
- data/lib/puppet/pops/parser/parser_support.rb +1 -1
- data/lib/puppet/pops/patterns.rb +4 -4
- data/lib/puppet/pops/utils.rb +1 -1
- data/lib/puppet/pops/validation/checker3_1.rb +25 -20
- data/lib/puppet/provider.rb +23 -6
- data/lib/puppet/provider/aixobject.rb +0 -0
- data/lib/puppet/provider/augeas/augeas.rb +21 -5
- data/lib/puppet/provider/confine.rb +5 -79
- data/lib/puppet/provider/cron/crontab.rb +0 -0
- data/lib/puppet/provider/exec.rb +9 -7
- data/lib/puppet/provider/exec/posix.rb +10 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/file/posix.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +16 -5
- data/lib/puppet/provider/group/aix.rb +0 -0
- data/lib/puppet/provider/group/windows_adsi.rb +33 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
- data/lib/puppet/provider/mailalias/aliases.rb +0 -0
- data/lib/puppet/provider/maillist/mailman.rb +0 -0
- data/lib/puppet/provider/mount/parsed.rb +0 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +1 -1
- data/lib/puppet/provider/package/aptitude.rb +0 -0
- data/lib/puppet/provider/package/blastwave.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/fink.rb +1 -1
- data/lib/puppet/provider/package/freebsd.rb +0 -0
- data/lib/puppet/provider/package/gem.rb +0 -0
- data/lib/puppet/provider/package/macports.rb +0 -0
- data/lib/puppet/provider/package/msi.rb +4 -10
- data/lib/puppet/provider/package/nim.rb +8 -8
- data/lib/puppet/provider/package/openbsd.rb +1 -1
- data/lib/puppet/provider/package/opkg.rb +0 -0
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/ports.rb +0 -0
- data/lib/puppet/provider/package/rpm.rb +39 -3
- data/lib/puppet/provider/package/sun.rb +3 -3
- data/lib/puppet/provider/package/sunfreeware.rb +0 -0
- data/lib/puppet/provider/package/windows.rb +12 -19
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/parsedfile.rb +0 -0
- data/lib/puppet/provider/port/parsed.rb +0 -0
- data/lib/puppet/provider/service/base.rb +0 -0
- data/lib/puppet/provider/service/bsd.rb +3 -3
- data/lib/puppet/provider/service/daemontools.rb +8 -8
- data/lib/puppet/provider/service/debian.rb +0 -0
- data/lib/puppet/provider/service/freebsd.rb +3 -3
- data/lib/puppet/provider/service/init.rb +5 -4
- data/lib/puppet/provider/service/launchd.rb +35 -24
- data/lib/puppet/provider/service/openbsd.rb +23 -0
- data/lib/puppet/provider/service/redhat.rb +0 -0
- data/lib/puppet/provider/service/runit.rb +3 -3
- data/lib/puppet/provider/service/smf.rb +0 -0
- data/lib/puppet/provider/service/src.rb +0 -0
- data/lib/puppet/provider/service/systemd.rb +0 -0
- data/lib/puppet/provider/service/upstart.rb +3 -3
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +2 -2
- data/lib/puppet/provider/sshkey/parsed.rb +0 -0
- data/lib/puppet/provider/user/aix.rb +0 -0
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +1 -1
- data/lib/puppet/provider/zone/solaris.rb +1 -1
- data/lib/puppet/rails/benchmark.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -2
- data/lib/puppet/reference/indirection.rb +12 -14
- data/lib/puppet/relationship.rb +7 -4
- data/lib/puppet/reports.rb +2 -2
- data/lib/puppet/reports/rrdgraph.rb +1 -1
- data/lib/puppet/reports/store.rb +3 -3
- data/lib/puppet/reports/tagmail.rb +2 -2
- data/lib/puppet/resource.rb +66 -8
- data/lib/puppet/resource/catalog.rb +18 -25
- data/lib/puppet/resource/status.rb +10 -4
- data/lib/puppet/run.rb +6 -2
- data/lib/puppet/settings.rb +39 -119
- data/lib/puppet/settings/base_setting.rb +8 -9
- data/lib/puppet/settings/directory_setting.rb +8 -0
- data/lib/puppet/settings/file_setting.rb +35 -1
- data/lib/puppet/settings/priority_setting.rb +42 -0
- data/lib/puppet/ssl.rb +4 -0
- data/lib/puppet/ssl/certificate.rb +18 -0
- data/lib/puppet/ssl/certificate_authority.rb +101 -72
- data/lib/puppet/ssl/certificate_authority/autosign_command.rb +44 -0
- data/lib/puppet/ssl/certificate_authority/interface.rb +21 -17
- data/lib/puppet/ssl/certificate_factory.rb +38 -12
- data/lib/puppet/ssl/certificate_request.rb +201 -47
- data/lib/puppet/ssl/certificate_request_attributes.rb +34 -0
- data/lib/puppet/ssl/certificate_revocation_list.rb +2 -2
- data/lib/puppet/ssl/host.rb +21 -10
- data/lib/puppet/ssl/inventory.rb +6 -10
- data/lib/puppet/ssl/key.rb +1 -1
- data/lib/puppet/ssl/oids.rb +78 -0
- data/lib/puppet/ssl/validator.rb +41 -97
- data/lib/puppet/ssl/validator/default_validator.rb +153 -0
- data/lib/puppet/ssl/validator/no_validator.rb +17 -0
- data/lib/puppet/status.rb +4 -0
- data/lib/puppet/test/test_helper.rb +5 -0
- data/lib/puppet/transaction.rb +13 -0
- data/lib/puppet/transaction/event.rb +8 -3
- data/lib/puppet/transaction/report.rb +6 -2
- data/lib/puppet/transaction/resource_harness.rb +173 -115
- data/lib/puppet/type.rb +30 -13
- data/lib/puppet/type/augeas.rb +12 -46
- data/lib/puppet/type/component.rb +1 -7
- data/lib/puppet/type/cron.rb +0 -0
- data/lib/puppet/type/exec.rb +13 -1
- data/lib/puppet/type/file.rb +19 -10
- data/lib/puppet/type/file/checksum.rb +0 -0
- data/lib/puppet/type/file/content.rb +3 -0
- data/lib/puppet/type/file/ensure.rb +33 -15
- data/lib/puppet/type/file/group.rb +0 -0
- data/lib/puppet/type/file/mode.rb +6 -2
- data/lib/puppet/type/file/owner.rb +0 -0
- data/lib/puppet/type/file/source.rb +65 -14
- data/lib/puppet/type/file/target.rb +6 -6
- data/lib/puppet/type/file/type.rb +0 -0
- data/lib/puppet/type/filebucket.rb +0 -0
- data/lib/puppet/type/group.rb +18 -0
- data/lib/puppet/type/host.rb +0 -0
- data/lib/puppet/type/k5login.rb +4 -4
- data/lib/puppet/type/mailalias.rb +0 -0
- data/lib/puppet/type/maillist.rb +0 -0
- data/lib/puppet/type/mount.rb +15 -1
- data/lib/puppet/type/package.rb +7 -1
- data/lib/puppet/type/port.rb +0 -0
- data/lib/puppet/type/schedule.rb +9 -4
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/sshkey.rb +0 -0
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +3 -0
- data/lib/puppet/type/yumrepo.rb +8 -6
- data/lib/puppet/type/zpool.rb +0 -0
- data/lib/puppet/util.rb +4 -31
- data/lib/puppet/util/adsi.rb +73 -17
- data/lib/puppet/util/autoload.rb +3 -3
- data/lib/puppet/util/backups.rb +4 -4
- data/lib/puppet/util/cacher.rb +7 -13
- data/lib/puppet/util/checksums.rb +2 -2
- data/lib/puppet/util/classgen.rb +3 -1
- data/lib/puppet/util/colors.rb +1 -0
- data/lib/puppet/util/command_line.rb +5 -0
- data/lib/puppet/util/docs.rb +33 -27
- data/lib/puppet/util/execution.rb +42 -18
- data/lib/puppet/util/filetype.rb +3 -3
- data/lib/puppet/util/instance_loader.rb +2 -2
- data/lib/puppet/util/instrumentation.rb +23 -42
- data/lib/puppet/util/instrumentation/data.rb +11 -4
- data/lib/puppet/util/instrumentation/indirection_probe.rb +11 -4
- data/lib/puppet/util/instrumentation/instrumentable.rb +7 -14
- data/lib/puppet/util/instrumentation/listener.rb +15 -8
- data/lib/puppet/util/instrumentation/listeners/log.rb +4 -10
- data/lib/puppet/util/instrumentation/listeners/performance.rb +8 -14
- data/lib/puppet/util/limits.rb +12 -0
- data/lib/puppet/util/lockfile.rb +2 -2
- data/lib/puppet/util/log.rb +14 -6
- data/lib/puppet/util/log/destinations.rb +23 -1
- data/lib/puppet/util/metric.rb +9 -3
- data/lib/puppet/util/monkey_patches.rb +7 -2
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/plugins.rb +1 -1
- data/lib/puppet/util/posix.rb +0 -0
- data/lib/puppet/util/profiler.rb +7 -2
- data/lib/puppet/util/provider_features.rb +2 -2
- data/lib/puppet/util/rdoc.rb +28 -30
- data/lib/puppet/util/rdoc/code_objects.rb +75 -25
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
- data/lib/puppet/util/rdoc/parser.rb +12 -487
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +477 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc1.rb +19 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +1 -1
- data/lib/puppet/util/storage.rb +2 -2
- data/lib/puppet/util/suidmanager.rb +1 -1
- data/lib/puppet/util/tag_set.rb +29 -0
- data/lib/puppet/util/tagging.rb +8 -24
- data/lib/puppet/util/watched_file.rb +1 -1
- data/lib/puppet/util/watcher.rb +1 -1
- data/lib/puppet/util/windows.rb +3 -0
- data/lib/puppet/util/windows/access_control_entry.rb +84 -0
- data/lib/puppet/util/windows/access_control_list.rb +106 -0
- data/lib/puppet/util/windows/file.rb +213 -0
- data/lib/puppet/util/windows/process.rb +199 -0
- data/lib/puppet/util/windows/root_certs.rb +52 -37
- data/lib/puppet/util/windows/security.rb +270 -245
- data/lib/puppet/util/windows/security_descriptor.rb +62 -0
- data/lib/puppet/util/windows/sid.rb +26 -4
- data/lib/puppet/version.rb +2 -2
- data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
- data/spec/fixtures/unit/indirector/{hiera → data_binding/hiera}/global.yaml +0 -0
- data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +1 -0
- data/spec/fixtures/unit/module/trailing-comma.json +24 -0
- data/spec/fixtures/unit/util/monkey_patches/x509.pem +32 -0
- data/spec/integration/application/apply_spec.rb +1 -1
- data/spec/integration/application/doc_spec.rb +1 -1
- data/spec/integration/configurer_spec.rb +4 -2
- data/spec/integration/data_binding.rb +100 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +16 -13
- data/spec/integration/indirector/direct_file_server_spec.rb +3 -5
- data/spec/integration/indirector/file_content/file_server_spec.rb +2 -2
- data/spec/integration/node/facts_spec.rb +1 -1
- data/spec/integration/node_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +90 -0
- data/spec/integration/parser/parser_spec.rb +2 -2
- data/spec/integration/provider/cron/crontab_spec.rb +3 -5
- data/spec/integration/resource/catalog_spec.rb +1 -1
- data/spec/integration/ssl/autosign_spec.rb +90 -0
- data/spec/integration/ssl/certificate_authority_spec.rb +62 -69
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
- data/spec/integration/ssl/host_spec.rb +1 -1
- data/spec/integration/transaction_spec.rb +13 -13
- data/spec/integration/type/exec_spec.rb +2 -2
- data/spec/integration/type/file_spec.rb +287 -45
- data/spec/integration/type/tidy_spec.rb +3 -3
- data/spec/integration/util/rdoc/parser_spec.rb +236 -35
- data/spec/integration/util/settings_spec.rb +1 -1
- data/spec/integration/util/windows/process_spec.rb +22 -0
- data/spec/integration/util/windows/security_spec.rb +316 -106
- data/spec/lib/matchers/containment_matchers.rb +52 -0
- data/spec/lib/puppet_spec/compiler.rb +6 -0
- data/spec/lib/puppet_spec/files.rb +20 -21
- data/spec/shared_behaviours/documentation_on_faces.rb +3 -3
- data/spec/shared_behaviours/file_server_terminus.rb +2 -2
- data/spec/shared_contexts/platform.rb +1 -0
- data/spec/spec_helper.rb +13 -1
- data/spec/unit/agent_spec.rb +0 -12
- data/spec/unit/application/agent_spec.rb +4 -4
- data/spec/unit/application/apply_spec.rb +18 -2
- data/spec/unit/application/cert_spec.rb +8 -6
- data/spec/unit/application/device_spec.rb +1 -1
- data/spec/unit/application/filebucket_spec.rb +1 -1
- data/spec/unit/application/inspect_spec.rb +1 -1
- data/spec/unit/application_spec.rb +24 -0
- data/spec/unit/configurer/downloader_spec.rb +8 -7
- data/spec/unit/configurer/fact_handler_spec.rb +23 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +7 -2
- data/spec/unit/configurer_spec.rb +15 -5
- data/spec/unit/{provider/confine → confine}/exists_spec.rb +12 -12
- data/spec/unit/{provider/confine → confine}/false_spec.rb +9 -9
- data/spec/unit/{provider/confine → confine}/feature_spec.rb +10 -10
- data/spec/unit/{provider/confine → confine}/true_spec.rb +7 -7
- data/spec/unit/{provider/confine → confine}/variable_spec.rb +16 -16
- data/spec/unit/{provider/confine_collection_spec.rb → confine_collection_spec.rb} +30 -30
- data/spec/unit/{provider/confine_spec.rb → confine_spec.rb} +11 -11
- data/spec/unit/{provider/confiner_spec.rb → confiner_spec.rb} +4 -4
- data/spec/unit/face/parser_spec.rb +54 -0
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_serving/base_spec.rb +32 -9
- data/spec/unit/file_serving/configuration_spec.rb +7 -7
- data/spec/unit/file_serving/content_spec.rb +12 -7
- data/spec/unit/file_serving/fileset_spec.rb +57 -27
- data/spec/unit/file_serving/metadata_spec.rb +74 -12
- data/spec/unit/file_serving/mount/file_spec.rb +10 -10
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +73 -0
- data/spec/unit/file_system/file_spec.rb +486 -0
- data/spec/unit/file_system/tempfile_spec.rb +48 -0
- data/spec/unit/graph/relationship_graph_spec.rb +0 -6
- data/spec/unit/hiera_puppet_spec.rb +2 -2
- data/spec/unit/indirector/catalog/compiler_spec.rb +15 -19
- data/spec/unit/indirector/certificate_status/file_spec.rb +30 -40
- data/spec/unit/indirector/data_binding/hiera_spec.rb +95 -2
- data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
- data/spec/unit/indirector/facts/facter_spec.rb +33 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +61 -52
- data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
- data/spec/unit/indirector/file_server_spec.rb +4 -4
- data/spec/unit/indirector/json_spec.rb +4 -4
- data/spec/unit/indirector/key/file_spec.rb +13 -14
- data/spec/unit/indirector/resource/ral_spec.rb +7 -0
- data/spec/unit/indirector/resource/store_configs_spec.rb +11 -0
- data/spec/unit/indirector/rest_spec.rb +7 -3
- data/spec/unit/indirector/ssl_file_spec.rb +14 -17
- data/spec/unit/indirector/yaml_spec.rb +4 -4
- data/spec/unit/module_spec.rb +43 -15
- data/spec/unit/module_tool/tar/gnu_spec.rb +2 -2
- data/spec/unit/module_tool/tar/solaris_spec.rb +2 -2
- data/spec/unit/module_tool/tar_spec.rb +45 -0
- data/spec/unit/network/authconfig_spec.rb +2 -1
- data/spec/unit/network/authentication_spec.rb +2 -2
- data/spec/unit/network/format_handler_spec.rb +2 -2
- data/spec/unit/network/formats_spec.rb +24 -0
- data/spec/unit/network/http/connection_spec.rb +76 -199
- data/spec/unit/network/http/handler_spec.rb +33 -34
- data/spec/unit/network/http_pool_spec.rb +8 -5
- data/spec/unit/node/environment_spec.rb +76 -90
- data/spec/unit/node/facts_spec.rb +20 -3
- data/spec/unit/node_spec.rb +43 -0
- data/spec/unit/parameter/boolean_spec.rb +22 -12
- data/spec/unit/parser/ast/resourceparam_spec.rb +51 -0
- data/spec/unit/parser/compiler_spec.rb +103 -35
- data/spec/unit/parser/eparser_adapter_spec.rb +12 -12
- data/spec/unit/parser/files_spec.rb +11 -11
- data/spec/unit/parser/functions/contain_spec.rb +185 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +13 -5
- data/spec/unit/parser/functions/generate_spec.rb +1 -1
- data/spec/unit/parser/functions_spec.rb +2 -2
- data/spec/unit/parser/lexer_spec.rb +1 -1
- data/spec/unit/parser/methods/each_spec.rb +1 -1
- data/spec/unit/parser/methods/{select_spec.rb → filter_spec.rb} +11 -11
- data/spec/unit/parser/methods/map_spec.rb +95 -0
- data/spec/unit/parser/methods/reduce_spec.rb +12 -11
- data/spec/unit/parser/methods/shared.rb +5 -5
- data/spec/unit/parser/methods/slice_spec.rb +13 -13
- data/spec/unit/parser/parser_spec.rb +1 -1
- data/spec/unit/parser/resource/param_spec.rb +44 -0
- data/spec/unit/parser/resource_spec.rb +16 -15
- data/spec/unit/pops/model/ast_transformer_spec.rb +18 -4
- data/spec/unit/pops/parser/lexer_spec.rb +22 -5
- data/spec/unit/pops/parser/parse_calls_spec.rb +5 -5
- data/spec/unit/pops/transformer/transform_calls_spec.rb +6 -6
- data/spec/unit/pops/transformer/transform_containers_spec.rb +2 -2
- data/spec/unit/pops/validator/validator_spec.rb +31 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +57 -2
- data/spec/unit/provider/exec/posix_spec.rb +8 -3
- data/spec/unit/provider/file/posix_spec.rb +2 -2
- data/spec/unit/provider/group/windows_adsi_spec.rb +70 -3
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
- data/spec/unit/provider/package/apt_spec.rb +1 -1
- data/spec/unit/provider/package/msi_spec.rb +15 -42
- data/spec/unit/provider/package/openbsd_spec.rb +3 -3
- data/spec/unit/provider/package/rpm_spec.rb +56 -13
- data/spec/unit/provider/package/windows_spec.rb +15 -19
- data/spec/unit/provider/service/base_spec.rb +1 -1
- data/spec/unit/provider/service/daemontools_spec.rb +18 -8
- data/spec/unit/provider/service/freebsd_spec.rb +3 -3
- data/spec/unit/provider/service/gentoo_spec.rb +5 -2
- data/spec/unit/provider/service/init_spec.rb +17 -17
- data/spec/unit/provider/service/launchd_spec.rb +76 -23
- data/spec/unit/provider/service/openbsd_spec.rb +125 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +12 -5
- data/spec/unit/provider/service/upstart_spec.rb +4 -4
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +5 -5
- data/spec/unit/provider/user/directoryservice_spec.rb +4 -4
- data/spec/unit/provider/zone/solaris_spec.rb +1 -1
- data/spec/unit/provider_spec.rb +2 -2
- data/spec/unit/reports/http_spec.rb +19 -34
- data/spec/unit/reports/store_spec.rb +2 -2
- data/spec/unit/resource/catalog_spec.rb +81 -11
- data/spec/unit/resource/status_spec.rb +11 -1
- data/spec/unit/resource/type_spec.rb +30 -1
- data/spec/unit/resource_spec.rb +40 -4
- data/spec/unit/settings/file_setting_spec.rb +2 -2
- data/spec/unit/settings/path_setting_spec.rb +2 -2
- data/spec/unit/settings/priority_setting_spec.rb +66 -0
- data/spec/unit/settings_spec.rb +16 -31
- data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +30 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +129 -134
- data/spec/unit/ssl/certificate_factory_spec.rb +18 -0
- data/spec/unit/ssl/certificate_request_attributes_spec.rb +61 -0
- data/spec/unit/ssl/certificate_request_spec.rb +103 -0
- data/spec/unit/ssl/certificate_spec.rb +31 -18
- data/spec/unit/ssl/host_spec.rb +34 -8
- data/spec/unit/ssl/inventory_spec.rb +27 -62
- data/spec/unit/ssl/key_spec.rb +4 -4
- data/spec/unit/ssl/oids_spec.rb +48 -0
- data/spec/unit/ssl/validator_spec.rb +49 -6
- data/spec/unit/status_spec.rb +9 -0
- data/spec/unit/transaction/event_spec.rb +1 -9
- data/spec/unit/transaction/report_spec.rb +20 -1
- data/spec/unit/transaction/resource_harness_spec.rb +60 -210
- data/spec/unit/transaction_spec.rb +54 -8
- data/spec/unit/type/component_spec.rb +2 -2
- data/spec/unit/type/exec_spec.rb +14 -7
- data/spec/unit/type/file/content_spec.rb +13 -2
- data/spec/unit/type/file/ctime_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +48 -2
- data/spec/unit/type/file/mtime_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +177 -7
- data/spec/unit/type/file_spec.rb +63 -71
- data/spec/unit/type/group_spec.rb +20 -0
- data/spec/unit/type/k5login_spec.rb +3 -3
- data/spec/unit/type/mount_spec.rb +53 -0
- data/spec/unit/type/nagios_spec.rb +216 -0
- data/spec/unit/type/package_spec.rb +7 -1
- data/spec/unit/type/schedule_spec.rb +6 -0
- data/spec/unit/type/service_spec.rb +3 -3
- data/spec/unit/type/tidy_spec.rb +14 -14
- data/spec/unit/type/user_spec.rb +9 -0
- data/spec/unit/type_spec.rb +86 -4
- data/spec/unit/util/adsi_spec.rb +120 -12
- data/spec/unit/util/autoload_spec.rb +14 -14
- data/spec/unit/util/backups_spec.rb +29 -21
- data/spec/unit/util/checksums_spec.rb +2 -1
- data/spec/unit/util/command_line_spec.rb +41 -0
- data/spec/unit/util/docs_spec.rb +91 -0
- data/spec/unit/util/execution_spec.rb +26 -2
- data/spec/unit/util/filetype_spec.rb +7 -7
- data/spec/unit/util/lockfile_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +32 -0
- data/spec/unit/util/monkey_patches_spec.rb +41 -0
- data/spec/unit/util/pidlock_spec.rb +6 -6
- data/spec/unit/util/rdoc/parser_spec.rb +15 -13
- data/spec/unit/util/rdoc_spec.rb +18 -24
- data/spec/unit/util/resource_template_spec.rb +3 -3
- data/spec/unit/util/selinux_spec.rb +4 -2
- data/spec/unit/util/storage_spec.rb +4 -4
- data/spec/unit/util/suidmanager_spec.rb +7 -0
- data/spec/unit/util/tag_set_spec.rb +46 -0
- data/spec/unit/util/tagging_spec.rb +82 -45
- data/spec/unit/util/watcher_spec.rb +4 -1
- data/spec/unit/util/windows/access_control_entry_spec.rb +67 -0
- data/spec/unit/util/windows/access_control_list_spec.rb +133 -0
- data/spec/unit/util/windows/root_certs_spec.rb +10 -8
- data/spec/unit/util/windows/security_descriptor_spec.rb +117 -0
- data/spec/unit/util/windows/sid_spec.rb +69 -0
- data/spec/unit/util_spec.rb +7 -7
- data/tasks/ci.rake +17 -36
- metadata +2811 -2746
- checksums.yaml +0 -7
- data/examples/mac_automount.pp +0 -16
- data/examples/mcx_dock_absent.pp +0 -4
- data/examples/mcx_dock_default.pp +0 -118
- data/examples/mcx_dock_full.pp +0 -125
- data/examples/mcx_dock_invalid.pp +0 -9
- data/examples/mcx_nogroup.pp +0 -118
- data/examples/mcx_notexists_absent.pp +0 -4
- data/ext/rack/README +0 -58
- data/ext/rack/manifest.pp +0 -59
- data/lib/puppet/external/lock.rb +0 -63
- data/lib/puppet/indirector/hiera.rb +0 -39
- data/lib/puppet/parser/functions/foreach.rb +0 -95
- data/spec/integration/network/server/webrick_spec.rb +0 -76
- data/spec/integration/parser/functions_spec.rb +0 -16
- data/spec/unit/indirector/hiera_spec.rb +0 -154
- data/spec/unit/parser/methods/collect_spec.rb +0 -153
- data/spec/unit/parser/methods/foreach_spec.rb +0 -91
- data/spec/unit/parser/methods/reject_spec.rb +0 -73
- data/spec/unit/resource/resource_type.json +0 -34
@@ -308,7 +308,7 @@ describe Puppet::Transaction do
|
|
308
308
|
transaction.evaluate
|
309
309
|
|
310
310
|
generated.each do |res|
|
311
|
-
res.must be_tagged(generator.tags)
|
311
|
+
res.must be_tagged(*generator.tags)
|
312
312
|
end
|
313
313
|
end
|
314
314
|
end
|
@@ -404,7 +404,6 @@ describe Puppet::Transaction do
|
|
404
404
|
it "should otherwise let the resource determine if it is missing tags" do
|
405
405
|
tags = ['one', 'two']
|
406
406
|
@transaction.tags = tags
|
407
|
-
@resource.expects(:tagged?).with(*tags).returns(false)
|
408
407
|
@transaction.should be_missing_tags(@resource)
|
409
408
|
end
|
410
409
|
end
|
@@ -478,6 +477,48 @@ describe Puppet::Transaction do
|
|
478
477
|
end
|
479
478
|
end
|
480
479
|
|
480
|
+
describe "during teardown" do
|
481
|
+
before :each do
|
482
|
+
@catalog = Puppet::Resource::Catalog.new
|
483
|
+
@transaction = Puppet::Transaction.new(@catalog, nil, Puppet::Graph::RandomPrioritizer.new)
|
484
|
+
end
|
485
|
+
|
486
|
+
it "should call ::post_resource_eval on provider classes that support it" do
|
487
|
+
@resource = Puppet::Type.type(:notify).new :title => "foo"
|
488
|
+
@catalog.add_resource @resource
|
489
|
+
|
490
|
+
# 'expects' will cause 'respond_to?(:post_resource_eval)' to return true
|
491
|
+
@resource.provider.class.expects(:post_resource_eval)
|
492
|
+
@transaction.evaluate
|
493
|
+
end
|
494
|
+
|
495
|
+
it "should call ::post_resource_eval even if other providers' ::post_resource_eval fails" do
|
496
|
+
@resource3 = Puppet::Type.type(:user).new :title => "bloo"
|
497
|
+
@resource3.provider.class.stubs(:post_resource_eval).raises
|
498
|
+
@resource4 = Puppet::Type.type(:notify).new :title => "blob"
|
499
|
+
@resource4.provider.class.stubs(:post_resource_eval).raises
|
500
|
+
@catalog.add_resource @resource3
|
501
|
+
@catalog.add_resource @resource4
|
502
|
+
|
503
|
+
# ruby's Set does not guarantee ordering, so both resource3 and resource4
|
504
|
+
# need to expect post_resource_eval, rather than just the 'first' one.
|
505
|
+
@resource3.provider.class.expects(:post_resource_eval)
|
506
|
+
@resource4.provider.class.expects(:post_resource_eval)
|
507
|
+
|
508
|
+
@transaction.evaluate
|
509
|
+
end
|
510
|
+
|
511
|
+
it "should call ::post_resource_eval even if one of the resources fails" do
|
512
|
+
@resource3 = Puppet::Type.type(:notify).new :title => "bloo"
|
513
|
+
@resource3.stubs(:retrieve_resource).raises
|
514
|
+
@catalog.add_resource @resource3
|
515
|
+
|
516
|
+
@resource3.provider.class.expects(:post_resource_eval)
|
517
|
+
|
518
|
+
@transaction.evaluate
|
519
|
+
end
|
520
|
+
end
|
521
|
+
|
481
522
|
describe 'when checking application run state' do
|
482
523
|
before do
|
483
524
|
@catalog = Puppet::Resource::Catalog.new
|
@@ -594,32 +635,37 @@ describe Puppet::Transaction, " when determining tags" do
|
|
594
635
|
|
595
636
|
it "should default to the tags specified in the :tags setting" do
|
596
637
|
Puppet[:tags] = "one"
|
597
|
-
@transaction.
|
638
|
+
@transaction.should be_tagged("one")
|
598
639
|
end
|
599
640
|
|
600
641
|
it "should split tags based on ','" do
|
601
642
|
Puppet[:tags] = "one,two"
|
602
|
-
@transaction.
|
643
|
+
@transaction.should be_tagged("one")
|
644
|
+
@transaction.should be_tagged("two")
|
603
645
|
end
|
604
646
|
|
605
647
|
it "should use any tags set after creation" do
|
606
648
|
Puppet[:tags] = ""
|
607
649
|
@transaction.tags = %w{one two}
|
608
|
-
@transaction.
|
650
|
+
@transaction.should be_tagged("one")
|
651
|
+
@transaction.should be_tagged("two")
|
609
652
|
end
|
610
653
|
|
611
654
|
it "should always convert assigned tags to an array" do
|
612
655
|
@transaction.tags = "one::two"
|
613
|
-
@transaction.
|
656
|
+
@transaction.should be_tagged("one::two")
|
614
657
|
end
|
615
658
|
|
616
659
|
it "should accept a comma-delimited string" do
|
617
660
|
@transaction.tags = "one, two"
|
618
|
-
@transaction.
|
661
|
+
@transaction.should be_tagged("one")
|
662
|
+
@transaction.should be_tagged("two")
|
619
663
|
end
|
620
664
|
|
621
665
|
it "should accept an empty string" do
|
666
|
+
@transaction.tags = "one, two"
|
667
|
+
@transaction.should be_tagged("one")
|
622
668
|
@transaction.tags = ""
|
623
|
-
@transaction.
|
669
|
+
@transaction.should_not be_tagged("one")
|
624
670
|
end
|
625
671
|
end
|
@@ -42,8 +42,8 @@ describe component do
|
|
42
42
|
component.new(:name => "Class[foo]").pathbuilder.must == ["Foo"]
|
43
43
|
end
|
44
44
|
|
45
|
-
it "should produce
|
46
|
-
component.new(:name => "Class[main]").pathbuilder.must == [""]
|
45
|
+
it "should produce the class name even for the class named main" do
|
46
|
+
component.new(:name => "Class[main]").pathbuilder.must == ["Main"]
|
47
47
|
end
|
48
48
|
|
49
49
|
it "should produce a resource reference if the component does not model a class" do
|
data/spec/unit/type/exec_spec.rb
CHANGED
@@ -8,6 +8,8 @@ describe Puppet::Type.type(:exec) do
|
|
8
8
|
Puppet.features.stubs(:root?).returns(true)
|
9
9
|
|
10
10
|
output = rest.delete(:output) || ''
|
11
|
+
|
12
|
+
output = Puppet::Util::Execution::ProcessOutput.new(output, exitstatus)
|
11
13
|
tries = rest[:tries] || 1
|
12
14
|
|
13
15
|
args = {
|
@@ -21,14 +23,12 @@ describe Puppet::Type.type(:exec) do
|
|
21
23
|
exec = Puppet::Type.type(:exec).new(args)
|
22
24
|
|
23
25
|
status = stub "process", :exitstatus => exitstatus
|
24
|
-
Puppet::Util::
|
26
|
+
Puppet::Util::Execution.expects(:execute).times(tries).
|
25
27
|
with() { |*args|
|
26
28
|
args[0] == command &&
|
27
|
-
args[1] ==
|
28
|
-
args[
|
29
|
-
|
30
|
-
args[3].has_key?(:custom_environment)
|
31
|
-
} .returns([output, status])
|
29
|
+
args[1][:override_locale] == false &&
|
30
|
+
args[1].has_key?(:custom_environment)
|
31
|
+
}.returns(output)
|
32
32
|
|
33
33
|
return exec
|
34
34
|
end
|
@@ -61,7 +61,7 @@ describe Puppet::Type.type(:exec) do
|
|
61
61
|
end
|
62
62
|
|
63
63
|
describe "when execing" do
|
64
|
-
it "should use the '
|
64
|
+
it "should use the 'execute' method to exec" do
|
65
65
|
exec_tester("true").refresh.should == :executed_command
|
66
66
|
end
|
67
67
|
|
@@ -753,4 +753,11 @@ describe Puppet::Type.type(:exec) do
|
|
753
753
|
type.new(:command => abs, :path => path).must be
|
754
754
|
end
|
755
755
|
end
|
756
|
+
describe "when providing a umask" do
|
757
|
+
it "should fail if an invalid umask is used" do
|
758
|
+
resource = Puppet::Type.type(:exec).new :command => @command
|
759
|
+
expect { resource[:umask] = '0028'}.to raise_error(Puppet::ResourceError, /umask specification is invalid/)
|
760
|
+
expect { resource[:umask] = '28' }.to raise_error(Puppet::ResourceError, /umask specification is invalid/)
|
761
|
+
end
|
762
|
+
end
|
756
763
|
end
|
@@ -84,6 +84,13 @@ describe content do
|
|
84
84
|
|
85
85
|
@content.should.must == string
|
86
86
|
end
|
87
|
+
|
88
|
+
it "should convert the value to ASCII-8BIT", :if => "".respond_to?(:encode) do
|
89
|
+
@content = content.new(:resource => @resource)
|
90
|
+
@content.should= "Let's make a \u{2603}"
|
91
|
+
|
92
|
+
@content.actual_content.should == "Let's make a \xE2\x98\x83".force_encoding(Encoding::ASCII_8BIT)
|
93
|
+
end
|
87
94
|
end
|
88
95
|
|
89
96
|
describe "when retrieving the current content" do
|
@@ -329,8 +336,10 @@ describe content do
|
|
329
336
|
end
|
330
337
|
|
331
338
|
it "should copy content from the source to the file" do
|
339
|
+
dest_file = Puppet::FileSystem::File.new(@filename)
|
332
340
|
@resource.write(@source)
|
333
|
-
|
341
|
+
|
342
|
+
dest_file.binread.should == @source_content
|
334
343
|
end
|
335
344
|
|
336
345
|
it "should return the checksum computed" do
|
@@ -358,8 +367,10 @@ describe content do
|
|
358
367
|
end
|
359
368
|
|
360
369
|
it "should write the contents to the file" do
|
370
|
+
dest_file = Puppet::FileSystem::File.new(@filename)
|
361
371
|
@resource.write(@source)
|
362
|
-
|
372
|
+
|
373
|
+
dest_file.binread.should == @source_content
|
363
374
|
end
|
364
375
|
|
365
376
|
it "should not write anything if source is not found" do
|
@@ -16,7 +16,7 @@ describe Puppet::Type.type(:file).attrclass(:ctime) do
|
|
16
16
|
@resource[:audit] = [:ctime]
|
17
17
|
|
18
18
|
# this .to_resource audit behavior is magical :-(
|
19
|
-
@resource.to_resource[:ctime].should == File.
|
19
|
+
@resource.to_resource[:ctime].should == Puppet::FileSystem::File.new(@filename).stat.ctime
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should return absent if auditing an absent file" do
|
@@ -18,6 +18,10 @@ describe Puppet::Type.type(:file).attrclass(:mode) do
|
|
18
18
|
expect { mode.value = '0755' }.not_to raise_error
|
19
19
|
end
|
20
20
|
|
21
|
+
it "should accept valid symbolic strings" do
|
22
|
+
expect { mode.value = 'g+w,u-x' }.not_to raise_error
|
23
|
+
end
|
24
|
+
|
21
25
|
it "should not accept strings other than octal numbers" do
|
22
26
|
expect do
|
23
27
|
mode.value = 'readable please!'
|
@@ -35,6 +39,10 @@ describe Puppet::Type.type(:file).attrclass(:mode) do
|
|
35
39
|
mode.munge('0644').should == '644'
|
36
40
|
end
|
37
41
|
|
42
|
+
it "should accept symbolic strings as arguments and return them intact" do
|
43
|
+
mode.munge('u=rw,go=r').should == 'u=rw,go=r'
|
44
|
+
end
|
45
|
+
|
38
46
|
it "should accept integers are arguments" do
|
39
47
|
mode.munge(0644).should == '644'
|
40
48
|
end
|
@@ -72,11 +80,34 @@ describe Puppet::Type.type(:file).attrclass(:mode) do
|
|
72
80
|
mode.must_not be_insync('755')
|
73
81
|
end
|
74
82
|
|
75
|
-
it "should return true if the file is a link and we are managing links", :
|
76
|
-
File.
|
83
|
+
it "should return true if the file is a link and we are managing links", :if => Puppet.features.manages_symlinks? do
|
84
|
+
Puppet::FileSystem::File.new('anything').symlink(path)
|
77
85
|
|
78
86
|
mode.must be_insync('644')
|
79
87
|
end
|
88
|
+
|
89
|
+
describe "with a symbolic mode" do
|
90
|
+
let(:resource_sym) { Puppet::Type.type(:file).new :path => path, :mode => 'u+w,g-w' }
|
91
|
+
let(:mode_sym) { resource_sym.property(:mode) }
|
92
|
+
|
93
|
+
it "should return true if the mode matches, regardless of other bits" do
|
94
|
+
FileUtils.touch(path)
|
95
|
+
|
96
|
+
mode_sym.must be_insync('644')
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should return false if the mode requires 0's where there are 1's" do
|
100
|
+
FileUtils.touch(path)
|
101
|
+
|
102
|
+
mode_sym.must_not be_insync('624')
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should return false if the mode requires 1's where there are 0's" do
|
106
|
+
FileUtils.touch(path)
|
107
|
+
|
108
|
+
mode_sym.must_not be_insync('044')
|
109
|
+
end
|
110
|
+
end
|
80
111
|
end
|
81
112
|
|
82
113
|
describe "#retrieve" do
|
@@ -145,4 +176,19 @@ describe Puppet::Type.type(:file).attrclass(:mode) do
|
|
145
176
|
end
|
146
177
|
end
|
147
178
|
end
|
179
|
+
|
180
|
+
describe "#sync with a symbolic mode" do
|
181
|
+
let(:resource_sym) { Puppet::Type.type(:file).new :path => path, :mode => 'u+w,g-w' }
|
182
|
+
let(:mode_sym) { resource_sym.property(:mode) }
|
183
|
+
|
184
|
+
before { FileUtils.touch(path) }
|
185
|
+
|
186
|
+
it "changes only the requested bits" do
|
187
|
+
# lower nibble must be set to 4 for the sake of passing on Windows
|
188
|
+
FileUtils.chmod 0464, path
|
189
|
+
mode_sym.sync
|
190
|
+
file = Puppet::FileSystem::File.new(path)
|
191
|
+
(file.stat.mode & 0777).to_s(8).should == "644"
|
192
|
+
end
|
193
|
+
end
|
148
194
|
end
|
@@ -16,7 +16,7 @@ describe Puppet::Type.type(:file).attrclass(:mtime) do
|
|
16
16
|
@resource[:audit] = [:mtime]
|
17
17
|
|
18
18
|
# this .to_resource audit behavior is magical :-(
|
19
|
-
@resource.to_resource[:mtime].should == File.
|
19
|
+
@resource.to_resource[:mtime].should == Puppet::FileSystem::File.new(@filename).stat.mtime
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should return absent if auditing an absent file" do
|
@@ -154,11 +154,10 @@ describe Puppet::Type.type(:file).attrclass(:source) do
|
|
154
154
|
|
155
155
|
describe "when copying the source values" do
|
156
156
|
before do
|
157
|
-
|
158
157
|
@resource = Puppet::Type.type(:file).new :path => @foobar
|
159
158
|
|
160
159
|
@source = source.new(:resource => @resource)
|
161
|
-
@metadata = stub 'metadata', :owner => 100, :group => 200, :mode =>
|
160
|
+
@metadata = stub 'metadata', :owner => 100, :group => 200, :mode => "173", :checksum => "{md5}asdfasdf", :ftype => "file", :source => @foobar
|
162
161
|
@source.stubs(:metadata).returns @metadata
|
163
162
|
|
164
163
|
Puppet.features.stubs(:root?).returns true
|
@@ -202,7 +201,7 @@ describe Puppet::Type.type(:file).attrclass(:source) do
|
|
202
201
|
@resource[:content].must == @metadata.checksum
|
203
202
|
end
|
204
203
|
|
205
|
-
it "should not copy the metadata's owner to the resource if
|
204
|
+
it "should not copy the metadata's owner, group, checksum and mode to the resource if they are already set" do
|
206
205
|
@resource[:owner] = 1
|
207
206
|
@resource[:group] = 2
|
208
207
|
@resource[:mode] = 3
|
@@ -217,26 +216,153 @@ describe Puppet::Type.type(:file).attrclass(:source) do
|
|
217
216
|
end
|
218
217
|
|
219
218
|
describe "and puppet is not running as root" do
|
220
|
-
|
221
|
-
Puppet.features.
|
219
|
+
before do
|
220
|
+
Puppet.features.stubs(:root?).returns false
|
221
|
+
end
|
222
222
|
|
223
|
+
it "should not try to set the owner" do
|
223
224
|
@source.copy_source_values
|
224
225
|
@resource[:owner].should be_nil
|
225
226
|
end
|
227
|
+
|
228
|
+
it "should not try to set the group" do
|
229
|
+
@source.copy_source_values
|
230
|
+
@resource[:group].should be_nil
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
context "when source_permissions is `use_when_creating`" do
|
235
|
+
before :each do
|
236
|
+
@resource[:source_permissions] = "use_when_creating"
|
237
|
+
Puppet.features.expects(:root?).returns true
|
238
|
+
@source.stubs(:local?).returns(false)
|
239
|
+
end
|
240
|
+
|
241
|
+
context "when managing a new file" do
|
242
|
+
it "should copy owner and group from local sources" do
|
243
|
+
@source.stubs(:local?).returns true
|
244
|
+
|
245
|
+
@source.copy_source_values
|
246
|
+
|
247
|
+
@resource[:owner].must == 100
|
248
|
+
@resource[:group].must == 200
|
249
|
+
@resource[:mode].must == "173"
|
250
|
+
end
|
251
|
+
|
252
|
+
it "copies the remote owner" do
|
253
|
+
@source.copy_source_values
|
254
|
+
|
255
|
+
@resource[:owner].must == 100
|
256
|
+
end
|
257
|
+
|
258
|
+
it "copies the remote group" do
|
259
|
+
@source.copy_source_values
|
260
|
+
|
261
|
+
@resource[:group].must == 200
|
262
|
+
end
|
263
|
+
|
264
|
+
it "copies the remote mode" do
|
265
|
+
@source.copy_source_values
|
266
|
+
|
267
|
+
@resource[:mode].must == "173"
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
271
|
+
context "when managing an existing file" do
|
272
|
+
before :each do
|
273
|
+
Puppet::FileSystem::File.stubs(:exist?).with(@resource[:path]).returns(true)
|
274
|
+
end
|
275
|
+
|
276
|
+
it "should not copy owner, group or mode from local sources" do
|
277
|
+
@source.stubs(:local?).returns true
|
278
|
+
|
279
|
+
@source.copy_source_values
|
280
|
+
|
281
|
+
@resource[:owner].must be_nil
|
282
|
+
@resource[:group].must be_nil
|
283
|
+
@resource[:mode].must be_nil
|
284
|
+
end
|
285
|
+
|
286
|
+
it "preserves the local owner" do
|
287
|
+
@source.copy_source_values
|
288
|
+
|
289
|
+
@resource[:owner].must be_nil
|
290
|
+
end
|
291
|
+
|
292
|
+
it "preserves the local group" do
|
293
|
+
@source.copy_source_values
|
294
|
+
|
295
|
+
@resource[:group].must be_nil
|
296
|
+
end
|
297
|
+
|
298
|
+
it "preserves the local mode" do
|
299
|
+
@source.copy_source_values
|
300
|
+
|
301
|
+
@resource[:mode].must be_nil
|
302
|
+
end
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
context "when source_permissions is `ignore`" do
|
307
|
+
before :each do
|
308
|
+
@resource[:source_permissions] = "ignore"
|
309
|
+
@source.stubs(:local?).returns(false)
|
310
|
+
Puppet.features.expects(:root?).returns true
|
311
|
+
end
|
312
|
+
|
313
|
+
it "should not copy owner, group or mode from local sources" do
|
314
|
+
@source.stubs(:local?).returns true
|
315
|
+
|
316
|
+
@source.copy_source_values
|
317
|
+
|
318
|
+
@resource[:owner].must be_nil
|
319
|
+
@resource[:group].must be_nil
|
320
|
+
@resource[:mode].must be_nil
|
321
|
+
end
|
322
|
+
|
323
|
+
it "preserves the local owner" do
|
324
|
+
@source.copy_source_values
|
325
|
+
|
326
|
+
@resource[:owner].must be_nil
|
327
|
+
end
|
328
|
+
|
329
|
+
it "preserves the local group" do
|
330
|
+
@source.copy_source_values
|
331
|
+
|
332
|
+
@resource[:group].must be_nil
|
333
|
+
end
|
334
|
+
|
335
|
+
it "preserves the local mode" do
|
336
|
+
@source.copy_source_values
|
337
|
+
|
338
|
+
@resource[:mode].must be_nil
|
339
|
+
end
|
226
340
|
end
|
227
341
|
|
228
342
|
describe "on Windows" do
|
229
343
|
before :each do
|
230
344
|
Puppet.features.stubs(:microsoft_windows?).returns true
|
231
345
|
end
|
346
|
+
let(:deprecation_message) { "Copying owner/mode/group from the" <<
|
347
|
+
" source file on Windows is deprecated;" <<
|
348
|
+
" use source_permissions => ignore." }
|
232
349
|
|
233
|
-
it "should
|
350
|
+
it "should copy only mode from remote sources" do
|
234
351
|
@source.stubs(:local?).returns false
|
235
352
|
|
236
353
|
@source.copy_source_values
|
237
354
|
|
238
355
|
@resource[:owner].must be_nil
|
239
356
|
@resource[:group].must be_nil
|
357
|
+
@resource[:mode].must == "173"
|
358
|
+
end
|
359
|
+
|
360
|
+
it "should copy mode from remote sources" do
|
361
|
+
@source.stubs(:local?).returns false
|
362
|
+
|
363
|
+
@source.copy_source_values
|
364
|
+
|
365
|
+
@resource[:mode].must == "173"
|
240
366
|
end
|
241
367
|
|
242
368
|
it "should copy owner and group from local sources" do
|
@@ -246,6 +372,51 @@ describe Puppet::Type.type(:file).attrclass(:source) do
|
|
246
372
|
|
247
373
|
@resource[:owner].must == 100
|
248
374
|
@resource[:group].must == 200
|
375
|
+
@resource[:mode].must == "173"
|
376
|
+
end
|
377
|
+
|
378
|
+
it "should issue deprecation warning when copying metadata from remote sources when group, owner, and mode are unspecified" do
|
379
|
+
@source.stubs(:local?).returns false
|
380
|
+
Puppet.expects(:deprecation_warning).with(deprecation_message).at_least_once
|
381
|
+
|
382
|
+
@source.copy_source_values
|
383
|
+
end
|
384
|
+
|
385
|
+
it "should issue deprecation warning when copying metadata from remote sources if only user is unspecified" do
|
386
|
+
@source.stubs(:local?).returns false
|
387
|
+
Puppet.expects(:deprecation_warning).with(deprecation_message).at_least_once
|
388
|
+
@resource[:group] = 2
|
389
|
+
@resource[:mode] = 3
|
390
|
+
|
391
|
+
@source.copy_source_values
|
392
|
+
end
|
393
|
+
|
394
|
+
it "should issue deprecation warning when copying metadata from remote sources if only group is unspecified" do
|
395
|
+
@source.stubs(:local?).returns false
|
396
|
+
Puppet.expects(:deprecation_warning).with(deprecation_message).at_least_once
|
397
|
+
@resource[:owner] = 1
|
398
|
+
@resource[:mode] = 3
|
399
|
+
|
400
|
+
@source.copy_source_values
|
401
|
+
end
|
402
|
+
|
403
|
+
it "should issue deprecation warning when copying metadata from remote sources if only mode is unspecified" do
|
404
|
+
@source.stubs(:local?).returns false
|
405
|
+
Puppet.expects(:deprecation_warning).with(deprecation_message).at_least_once
|
406
|
+
@resource[:owner] = 1
|
407
|
+
@resource[:group] = 2
|
408
|
+
|
409
|
+
@source.copy_source_values
|
410
|
+
end
|
411
|
+
|
412
|
+
it "should not issue deprecation warning when copying metadata from remote sources if group, owner, and mode are all specified" do
|
413
|
+
@source.stubs(:local?).returns false
|
414
|
+
Puppet.expects(:deprecation_warning).with(deprecation_message).never
|
415
|
+
@resource[:owner] = 1
|
416
|
+
@resource[:group] = 2
|
417
|
+
@resource[:mode] = 3
|
418
|
+
|
419
|
+
@source.copy_source_values
|
249
420
|
end
|
250
421
|
end
|
251
422
|
end
|
@@ -358,5 +529,4 @@ describe Puppet::Type.type(:file).attrclass(:source) do
|
|
358
529
|
end
|
359
530
|
end
|
360
531
|
end
|
361
|
-
|
362
532
|
end
|