puppet 0.24.6 → 0.24.7
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/CHANGELOG +115 -0
- data/Rakefile +43 -14
- data/bin/puppetca +6 -5
- data/bin/puppetdoc +109 -15
- data/bin/ralsh +3 -1
- data/conf/redhat/puppet.spec +74 -48
- data/examples/mcx_dock_absent.pp +4 -0
- data/examples/mcx_dock_default.pp +118 -0
- data/examples/mcx_dock_full.pp +125 -0
- data/examples/mcx_dock_invalid.pp +9 -0
- data/examples/mcx_nogroup.pp +118 -0
- data/examples/mcx_notexists_absent.pp +4 -0
- data/ext/emacs/puppet-mode.el +1 -1
- data/lib/puppet.rb +1 -1
- data/lib/puppet/external/nagios/base.rb +114 -71
- data/lib/puppet/feature/base.rb +6 -0
- data/lib/puppet/indirector/yaml.rb +12 -3
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/network/client/master.rb +1 -1
- data/lib/puppet/network/xmlrpc/client.rb +3 -1
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast.rb +15 -0
- data/lib/puppet/parser/ast/astarray.rb +1 -2
- data/lib/puppet/parser/ast/casestatement.rb +2 -0
- data/lib/puppet/parser/ast/collection.rb +2 -0
- data/lib/puppet/parser/ast/comparison_operator.rb +4 -0
- data/lib/puppet/parser/ast/definition.rb +2 -0
- data/lib/puppet/parser/ast/else.rb +3 -0
- data/lib/puppet/parser/ast/function.rb +19 -12
- data/lib/puppet/parser/ast/hostclass.rb +9 -1
- data/lib/puppet/parser/ast/ifstatement.rb +3 -0
- data/lib/puppet/parser/ast/node.rb +3 -0
- data/lib/puppet/parser/ast/resource.rb +3 -0
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -0
- data/lib/puppet/parser/ast/resource_override.rb +3 -0
- data/lib/puppet/parser/ast/vardef.rb +3 -0
- data/lib/puppet/parser/functions.rb +14 -0
- data/lib/puppet/parser/functions/inline_template.rb +21 -0
- data/lib/puppet/parser/functions/template.rb +3 -2
- data/lib/puppet/parser/lexer.rb +56 -7
- data/lib/puppet/parser/parser.rb +114 -98
- data/lib/puppet/parser/parser_support.rb +24 -4
- data/lib/puppet/parser/resource/reference.rb +4 -3
- data/lib/puppet/parser/templatewrapper.rb +30 -22
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/list.rb +7 -2
- data/lib/puppet/property/ordered_list.rb +22 -0
- data/lib/puppet/provider/augeas/augeas.rb +189 -0
- data/lib/puppet/provider/computer/computer.rb +22 -0
- data/lib/puppet/provider/confine.rb +4 -1
- data/lib/puppet/provider/confine/variable.rb +13 -2
- data/lib/puppet/provider/confine_collection.rb +4 -1
- data/lib/puppet/provider/confiner.rb +1 -1
- data/lib/puppet/provider/group/directoryservice.rb +6 -3
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/group/ldap.rb +11 -9
- data/lib/puppet/provider/group/netinfo.rb +8 -4
- data/lib/puppet/provider/group/pw.rb +5 -1
- data/lib/puppet/provider/host/netinfo.rb +5 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +315 -0
- data/lib/puppet/provider/mcx/mcxcontent.rb +201 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +210 -107
- data/lib/puppet/provider/nameservice/netinfo.rb +7 -2
- data/lib/puppet/provider/package/appdmg.rb +0 -3
- data/lib/puppet/provider/package/apt.rb +6 -0
- data/lib/puppet/provider/package/rpm.rb +2 -0
- data/lib/puppet/provider/package/yum.rb +5 -1
- data/lib/puppet/provider/package/yumhelper.py +9 -0
- data/lib/puppet/provider/service/base.rb +9 -6
- data/lib/puppet/provider/service/daemontools.rb +25 -15
- data/lib/puppet/provider/service/debian.rb +6 -2
- data/lib/puppet/provider/service/freebsd.rb +5 -2
- data/lib/puppet/provider/service/gentoo.rb +6 -3
- data/lib/puppet/provider/service/init.rb +31 -21
- data/lib/puppet/provider/service/launchd.rb +195 -0
- data/lib/puppet/provider/service/redhat.rb +5 -2
- data/lib/puppet/provider/service/runit.rb +30 -20
- data/lib/puppet/provider/service/smf.rb +7 -4
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +21 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/netinfo.rb +9 -3
- data/lib/puppet/provider/user/user_role_add.rb +43 -6
- data/lib/puppet/provider/zfs/solaris.rb +45 -0
- data/lib/puppet/provider/zone/solaris.rb +8 -4
- data/lib/puppet/provider/zpool/solaris.rb +116 -0
- data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
- data/lib/puppet/rails/database/schema.rb +1 -0
- data/lib/puppet/rails/host.rb +4 -0
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reports/tagmail.rb +15 -6
- data/lib/puppet/transaction/change.rb +3 -5
- data/lib/puppet/transportable.rb +1 -0
- data/lib/puppet/type/augeas.rb +155 -0
- data/lib/puppet/type/computer.rb +62 -0
- data/lib/puppet/type/exec.rb +2 -1
- data/lib/puppet/type/file.rb +1 -1
- data/lib/puppet/type/file/ensure.rb +8 -5
- data/lib/puppet/type/file/mode.rb +0 -14
- data/lib/puppet/type/file/owner.rb +32 -64
- data/lib/puppet/type/file/selcontext.rb +3 -8
- data/lib/puppet/type/group.rb +27 -45
- data/lib/puppet/type/k5login.rb +1 -1
- data/lib/puppet/type/macauthorization.rb +141 -0
- data/lib/puppet/type/mcx.rb +115 -0
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/nagios_hostdependency.rb +3 -0
- data/lib/puppet/type/ssh_authorized_key.rb +16 -0
- data/lib/puppet/type/tidy.rb +43 -14
- data/lib/puppet/type/user.rb +25 -1
- data/lib/puppet/type/zfs.rb +51 -0
- data/lib/puppet/type/zone.rb +8 -0
- data/lib/puppet/type/zpool.rb +93 -0
- data/lib/puppet/util.rb +17 -38
- data/lib/puppet/util/file_locking.rb +44 -0
- data/lib/puppet/util/filetype.rb +3 -3
- data/lib/puppet/util/log.rb +1 -16
- data/lib/puppet/util/metric.rb +0 -5
- data/lib/puppet/util/rdoc.rb +85 -0
- data/lib/puppet/util/rdoc/code_objects.rb +219 -0
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +829 -0
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1051 -0
- data/lib/puppet/util/rdoc/parser.rb +437 -0
- data/lib/puppet/util/selinux.rb +135 -63
- data/lib/puppet/util/settings.rb +136 -126
- data/lib/puppet/util/storage.rb +4 -2
- data/spec/Rakefile +91 -0
- data/spec/integration/checksum.rb +47 -0
- data/spec/integration/defaults.rb +47 -0
- data/spec/integration/file_serving/configuration.rb +43 -0
- data/spec/integration/file_serving/content.rb +18 -0
- data/spec/integration/file_serving/metadata.rb +18 -0
- data/spec/integration/indirector/direct_file_server.rb +80 -0
- data/spec/integration/indirector/file_content/file_server.rb +18 -0
- data/spec/integration/indirector/file_metadata/file_server.rb +18 -0
- data/spec/integration/indirector/module_files.rb +57 -0
- data/spec/integration/indirector/node/ldap.rb +15 -0
- data/spec/integration/indirector/rest.rb +464 -0
- data/spec/integration/network/server/mongrel.rb +48 -0
- data/spec/integration/network/server/webrick.rb +48 -0
- data/spec/integration/node.rb +93 -0
- data/spec/integration/node/catalog.rb +54 -0
- data/spec/integration/node/facts.rb +45 -0
- data/spec/integration/provider/package.rb +26 -0
- data/spec/integration/provider/service/init.rb +32 -0
- data/spec/integration/reference/providers.rb +17 -0
- data/spec/integration/reports.rb +14 -0
- data/spec/integration/transaction/report.rb +26 -0
- data/spec/integration/type/package.rb +22 -0
- data/spec/integration/util/file_locking.rb +36 -0
- data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +46 -0
- data/spec/monkey_patches/alias_should_to_must.rb +5 -0
- data/spec/shared_behaviours/file_server_terminus.rb +42 -0
- data/spec/shared_behaviours/file_serving.rb +64 -0
- data/spec/shared_behaviours/memory_terminus.rb +32 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +36 -0
- data/spec/unit/executables/client/certhandler.rb +122 -0
- data/spec/unit/file_serving/configuration.rb +224 -0
- data/spec/unit/file_serving/configuration/parser.rb +135 -0
- data/spec/unit/file_serving/content.rb +71 -0
- data/spec/unit/file_serving/file_base.rb +124 -0
- data/spec/unit/file_serving/fileset.rb +239 -0
- data/spec/unit/file_serving/indirection_hooks.rb +124 -0
- data/spec/unit/file_serving/metadata.rb +187 -0
- data/spec/unit/file_serving/mount.rb +143 -0
- data/spec/unit/file_serving/terminus_helper.rb +76 -0
- data/spec/unit/indirector.rb +152 -0
- data/spec/unit/indirector/catalog/compiler.rb +156 -0
- data/spec/unit/indirector/catalog/yaml.rb +25 -0
- data/spec/unit/indirector/checksum/file.rb +139 -0
- data/spec/unit/indirector/code.rb +33 -0
- data/spec/unit/indirector/direct_file_server.rb +89 -0
- data/spec/unit/indirector/envelope.rb +47 -0
- data/spec/unit/indirector/exec.rb +51 -0
- data/spec/unit/indirector/facts/facter.rb +76 -0
- data/spec/unit/indirector/facts/yaml.rb +26 -0
- data/spec/unit/indirector/file.rb +154 -0
- data/spec/unit/indirector/file_content/file.rb +18 -0
- data/spec/unit/indirector/file_content/file_server.rb +18 -0
- data/spec/unit/indirector/file_content/modules.rb +18 -0
- data/spec/unit/indirector/file_content/rest.rb +11 -0
- data/spec/unit/indirector/file_metadata/file.rb +52 -0
- data/spec/unit/indirector/file_metadata/file_server.rb +18 -0
- data/spec/unit/indirector/file_metadata/modules.rb +42 -0
- data/spec/unit/indirector/file_metadata/rest.rb +9 -0
- data/spec/unit/indirector/file_server.rb +184 -0
- data/spec/unit/indirector/indirection.rb +731 -0
- data/spec/unit/indirector/ldap.rb +143 -0
- data/spec/unit/indirector/memory.rb +29 -0
- data/spec/unit/indirector/module_files.rb +259 -0
- data/spec/unit/indirector/node/exec.rb +69 -0
- data/spec/unit/indirector/node/ldap.rb +424 -0
- data/spec/unit/indirector/node/memory.rb +19 -0
- data/spec/unit/indirector/node/plain.rb +19 -0
- data/spec/unit/indirector/node/rest.rb +13 -0
- data/spec/unit/indirector/node/yaml.rb +25 -0
- data/spec/unit/indirector/plain.rb +29 -0
- data/spec/unit/indirector/report/processor.rb +81 -0
- data/spec/unit/indirector/request.rb +87 -0
- data/spec/unit/indirector/rest.rb +372 -0
- data/spec/unit/indirector/ssl_rsa/file.rb +116 -0
- data/spec/unit/indirector/terminus.rb +245 -0
- data/spec/unit/indirector/yaml.rb +145 -0
- data/spec/unit/module.rb +247 -0
- data/spec/unit/network/client.rb +45 -0
- data/spec/unit/network/client/master.rb +442 -0
- data/spec/unit/network/handler/fileserver.rb +179 -0
- data/spec/unit/network/http.rb +35 -0
- data/spec/unit/network/http/mongrel.rb +117 -0
- data/spec/unit/network/http/mongrel/rest.rb +377 -0
- data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
- data/spec/unit/network/http/webrick.rb +127 -0
- data/spec/unit/network/http/webrick/rest.rb +323 -0
- data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
- data/spec/unit/network/http_pool.rb +238 -0
- data/spec/unit/network/server.rb +316 -0
- data/spec/unit/network/xmlrpc/client.rb +13 -0
- data/spec/unit/node.rb +167 -0
- data/spec/unit/node/catalog.rb +864 -0
- data/spec/unit/node/environment.rb +37 -0
- data/spec/unit/node/facts.rb +44 -0
- data/spec/unit/other/checksum.rb +92 -0
- data/spec/unit/other/pgraph.rb +210 -0
- data/spec/unit/other/transaction.rb +33 -0
- data/spec/unit/other/transbucket.rb +172 -0
- data/spec/unit/other/transobject.rb +92 -0
- data/spec/unit/parameter.rb +24 -0
- data/spec/unit/parser/ast.rb +37 -0
- data/spec/unit/parser/ast/arithmetic_operator.rb +73 -0
- data/spec/unit/parser/ast/astarray.rb +66 -0
- data/spec/unit/parser/ast/boolean_operator.rb +53 -0
- data/spec/unit/parser/ast/collexpr.rb +92 -0
- data/spec/unit/parser/ast/comparison_operator.rb +92 -0
- data/spec/unit/parser/ast/definition.rb +195 -0
- data/spec/unit/parser/ast/function.rb +77 -0
- data/spec/unit/parser/ast/hostclass.rb +148 -0
- data/spec/unit/parser/ast/minus.rb +36 -0
- data/spec/unit/parser/ast/node.rb +125 -0
- data/spec/unit/parser/ast/nop.rb +20 -0
- data/spec/unit/parser/ast/not.rb +30 -0
- data/spec/unit/parser/ast/resource_override.rb +51 -0
- data/spec/unit/parser/ast/resource_reference.rb +63 -0
- data/spec/unit/parser/ast/vardef.rb +47 -0
- data/spec/unit/parser/collector.rb +426 -0
- data/spec/unit/parser/compiler.rb +561 -0
- data/spec/unit/parser/functions.rb +83 -0
- data/spec/unit/parser/functions/inline_template.rb +59 -0
- data/spec/unit/parser/functions/template.rb +62 -0
- data/spec/unit/parser/interpreter.rb +138 -0
- data/spec/unit/parser/lexer.rb +646 -0
- data/spec/unit/parser/parser.rb +228 -0
- data/spec/unit/parser/resource.rb +336 -0
- data/spec/unit/parser/resource/reference.rb +95 -0
- data/spec/unit/parser/scope.rb +87 -0
- data/spec/unit/parser/templatewrapper.rb +129 -0
- data/spec/unit/property.rb +35 -0
- data/spec/unit/property/keyvalue.rb +168 -0
- data/spec/unit/property/list.rb +156 -0
- data/spec/unit/property/ordered_list.rb +64 -0
- data/spec/unit/provider/augeas/augeas.rb +238 -0
- data/spec/unit/provider/confine.rb +78 -0
- data/spec/unit/provider/confine/exists.rb +81 -0
- data/spec/unit/provider/confine/false.rb +53 -0
- data/spec/unit/provider/confine/feature.rb +60 -0
- data/spec/unit/provider/confine/true.rb +53 -0
- data/spec/unit/provider/confine/variable.rb +107 -0
- data/spec/unit/provider/confine_collection.rb +134 -0
- data/spec/unit/provider/confiner.rb +63 -0
- data/spec/unit/provider/group/groupadd.rb +31 -0
- data/spec/unit/provider/group/ldap.rb +105 -0
- data/spec/unit/provider/ldap.rb +248 -0
- data/spec/unit/provider/macauthorization.rb +147 -0
- data/spec/unit/provider/mcx/mcxcontent.rb +175 -0
- data/spec/unit/provider/mount.rb +130 -0
- data/spec/unit/provider/mount/parsed.rb +185 -0
- data/spec/unit/provider/package/apt.rb +138 -0
- data/spec/unit/provider/package/dpkg.rb +163 -0
- data/spec/unit/provider/package/gem.rb +87 -0
- data/spec/unit/provider/package/hpux.rb +52 -0
- data/spec/unit/provider/selboolean.rb +37 -0
- data/spec/unit/provider/selmodule-example.pp +0 -0
- data/spec/unit/provider/selmodule.rb +66 -0
- data/spec/unit/provider/service/daemontools.rb +124 -0
- data/spec/unit/provider/service/launchd.rb +134 -0
- data/spec/unit/provider/service/runit.rb +117 -0
- data/spec/unit/provider/ssh_authorized_key/parsed.rb +102 -0
- data/spec/unit/provider/user/hpux.rb +25 -0
- data/spec/unit/provider/user/ldap.rb +279 -0
- data/spec/unit/provider/user/user_role_add.rb +249 -0
- data/spec/unit/provider/user/useradd.rb +115 -0
- data/spec/unit/provider/zfs/solaris.rb +87 -0
- data/spec/unit/provider/zone/solaris.rb +42 -0
- data/spec/unit/provider/zpool/solaris.rb +179 -0
- data/spec/unit/rails.rb +125 -0
- data/spec/unit/relationship.rb +149 -0
- data/spec/unit/reports.rb +61 -0
- data/spec/unit/resource_reference.rb +73 -0
- data/spec/unit/simple_graph.rb +280 -0
- data/spec/unit/transaction/change.rb +187 -0
- data/spec/unit/transaction/event.rb +25 -0
- data/spec/unit/transaction/report.rb +40 -0
- data/spec/unit/type.rb +64 -0
- data/spec/unit/type/augeas.rb +113 -0
- data/spec/unit/type/computer.rb +82 -0
- data/spec/unit/type/exec.rb +91 -0
- data/spec/unit/type/file.rb +155 -0
- data/spec/unit/type/file/ensure.rb +21 -0
- data/spec/unit/type/file/group.rb +118 -0
- data/spec/unit/type/file/owner.rb +132 -0
- data/spec/unit/type/file/selinux.rb +82 -0
- data/spec/unit/type/group.rb +40 -0
- data/spec/unit/type/macauthorization.rb +78 -0
- data/spec/unit/type/mcx.rb +108 -0
- data/spec/unit/type/mount.rb +219 -0
- data/spec/unit/type/nagios.rb +63 -0
- data/spec/unit/type/noop_metaparam.rb +38 -0
- data/spec/unit/type/package.rb +246 -0
- data/spec/unit/type/resources.rb +27 -0
- data/spec/unit/type/schedule.rb +339 -0
- data/spec/unit/type/selboolean.rb +47 -0
- data/spec/unit/type/selmodule.rb +18 -0
- data/spec/unit/type/service.rb +254 -0
- data/spec/unit/type/ssh_authorized_key.rb +106 -0
- data/spec/unit/type/tidy.rb +68 -0
- data/spec/unit/type/user.rb +260 -0
- data/spec/unit/type/zfs.rb +45 -0
- data/spec/unit/type/zone.rb +20 -0
- data/spec/unit/type/zpool.rb +110 -0
- data/spec/unit/util/checksums.rb +99 -0
- data/spec/unit/util/constant_inflector.rb +70 -0
- data/spec/unit/util/file_locking.rb +115 -0
- data/spec/unit/util/ldap/connection.rb +169 -0
- data/spec/unit/util/ldap/generator.rb +54 -0
- data/spec/unit/util/ldap/manager.rb +654 -0
- data/spec/unit/util/loadedfile.rb +65 -0
- data/spec/unit/util/log.rb +107 -0
- data/spec/unit/util/metric.rb +95 -0
- data/spec/unit/util/nagios_maker.rb +128 -0
- data/spec/unit/util/posix.rb +256 -0
- data/spec/unit/util/resource_template.rb +58 -0
- data/spec/unit/util/selinux.rb +219 -0
- data/spec/unit/util/settings.rb +847 -0
- data/spec/unit/util/storage.rb +248 -0
- data/spec/unit/util/tagging.rb +92 -0
- data/spec/unit/util/uri_helper.rb +41 -0
- data/spec/unit/util/user_attr.rb +47 -0
- data/spec/unit/util/warnings.rb +35 -0
- data/test/certmgr/support.rb +0 -6
- data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -0
- data/test/data/snippets/multilinecomments.pp +6 -0
- data/test/data/snippets/multipleclass.pp +9 -0
- data/test/language/functions.rb +11 -1
- data/test/language/snippets.rb +16 -0
- data/test/lib/puppettest/runnable_test.rb +1 -1
- data/test/network/handler/fileserver.rb +5 -0
- data/test/other/report.rb +0 -4
- data/test/ral/type/resources.rb +2 -19
- data/test/util/settings.rb +4 -4
- data/test/util/storage.rb +0 -24
- data/test/util/utiltest.rb +0 -33
- metadata +319 -26
- data/conf/debian/README.source +0 -2
- data/conf/debian/TODO.Debian +0 -1
- data/conf/debian/changelog +0 -257
- data/conf/debian/compat +0 -1
- data/conf/debian/control +0 -45
- data/conf/debian/copyright +0 -17
- data/conf/debian/docs +0 -1
- data/conf/debian/fileserver.conf +0 -12
- data/conf/debian/puppet.NEWS +0 -63
- data/conf/debian/puppet.conf +0 -8
- data/conf/debian/puppet.dirs +0 -7
- data/conf/debian/puppet.files +0 -6
- data/conf/debian/puppet.init +0 -64
- data/conf/debian/puppet.logrotate +0 -11
- data/conf/debian/puppet.postinst +0 -9
- data/conf/debian/puppet.postrm +0 -21
- data/conf/debian/puppet.preinst +0 -25
- data/conf/debian/puppetmaster.files +0 -4
- data/conf/debian/puppetmaster.init +0 -58
- data/conf/debian/rules +0 -115
- data/conf/debian/watch +0 -2
- data/lib/puppet/type/nagios_hostgroupescalation.rb +0 -3
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/transaction/event'
|
6
|
+
|
7
|
+
describe Puppet::Transaction::Event do
|
8
|
+
Event = Puppet::Transaction::Event
|
9
|
+
|
10
|
+
it "should require a name and a source" do
|
11
|
+
lambda { Event.new }.should raise_error(ArgumentError)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have a name getter" do
|
15
|
+
Event.new(:foo, "bar").name.should == :foo
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have a source accessor" do
|
19
|
+
Event.new(:foo, "bar").source.should == "bar"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should be able to produce a string containing the event name and the source" do
|
23
|
+
Event.new(:event, :source).to_s.should == "source -> event"
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-10-12.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/transaction/report'
|
9
|
+
|
10
|
+
describe Puppet::Transaction::Report, " when being indirect" do
|
11
|
+
it "should redirect :find to the indirection" do
|
12
|
+
@indirection = stub 'indirection', :name => :report
|
13
|
+
Puppet::Transaction::Report.stubs(:indirection).returns(@indirection)
|
14
|
+
@indirection.expects(:find)
|
15
|
+
Puppet::Transaction::Report.find(:report)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should redirect :save to the indirection" do
|
19
|
+
Facter.stubs(:value).returns("eh")
|
20
|
+
@indirection = stub 'indirection', :name => :report
|
21
|
+
Puppet::Transaction::Report.stubs(:indirection).returns(@indirection)
|
22
|
+
report = Puppet::Transaction::Report.new
|
23
|
+
@indirection.expects(:save)
|
24
|
+
report.save
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should default to the 'processor' terminus" do
|
28
|
+
Puppet::Transaction::Report.indirection.terminus_class.should == :processor
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should delegate its name attribute to its host method" do
|
32
|
+
report = Puppet::Transaction::Report.new
|
33
|
+
report.expects(:host).returns "me"
|
34
|
+
report.name.should == "me"
|
35
|
+
end
|
36
|
+
|
37
|
+
after do
|
38
|
+
Puppet::Indirector::Indirection.clear_cache
|
39
|
+
end
|
40
|
+
end
|
data/spec/unit/type.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Type do
|
6
|
+
describe "when retrieving current properties" do
|
7
|
+
# Use 'mount' as an example, because it doesn't override 'retrieve'
|
8
|
+
before do
|
9
|
+
@resource = Puppet::Type.type(:mount).create(:name => "foo", :fstype => "bar", :pass => 1, :ensure => :present)
|
10
|
+
@properties = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
after { Puppet::Type.type(:mount).clear }
|
14
|
+
|
15
|
+
it "should return a hash containing values for all set properties" do
|
16
|
+
values = @resource.retrieve
|
17
|
+
[@resource.property(:fstype), @resource.property(:pass)].each { |property| values.should be_include(property) }
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should not call retrieve on non-ensure properties if the resource is absent" do
|
21
|
+
@resource.property(:ensure).expects(:retrieve).returns :absent
|
22
|
+
@resource.property(:fstype).expects(:retrieve).never
|
23
|
+
@resource.retrieve[@resource.property(:fstype)]
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should set all values to :absent if the resource is absent" do
|
27
|
+
@resource.property(:ensure).expects(:retrieve).returns :absent
|
28
|
+
@resource.retrieve[@resource.property(:fstype)].should == :absent
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should include the result of retrieving each property's current value if the resource is present" do
|
32
|
+
@resource.property(:ensure).expects(:retrieve).returns :present
|
33
|
+
@resource.property(:fstype).expects(:retrieve).returns 15
|
34
|
+
@resource.retrieve[@resource.property(:fstype)].should == 15
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
describe "when in a catalog" do
|
40
|
+
before do
|
41
|
+
@catalog = Puppet::Node::Catalog.new
|
42
|
+
@container = Puppet::Type.type(:component).create(:name => "container")
|
43
|
+
@one = Puppet::Type.type(:file).create(:path => "/file/one")
|
44
|
+
@two = Puppet::Type.type(:file).create(:path => "/file/two")
|
45
|
+
@catalog.add_resource @container
|
46
|
+
@catalog.add_resource @one
|
47
|
+
@catalog.add_resource @two
|
48
|
+
@catalog.add_edge @container, @one
|
49
|
+
@catalog.add_edge @container, @two
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should have no parent if there is no in edge" do
|
53
|
+
@container.parent.should be_nil
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should set its parent to its in edge" do
|
57
|
+
@one.parent.ref.should == @container.ref
|
58
|
+
end
|
59
|
+
|
60
|
+
after do
|
61
|
+
@catalog.clear(true)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
augeas = Puppet::Type.type(:augeas)
|
6
|
+
|
7
|
+
describe augeas do
|
8
|
+
describe "when augeas is present" do
|
9
|
+
confine "Augeas is unavailable" => Puppet.features.augeas?
|
10
|
+
|
11
|
+
it "should have a default provider inheriting from Puppet::Provider" do
|
12
|
+
augeas.defaultprovider.ancestors.should be_include(Puppet::Provider)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have a valid provider" do
|
16
|
+
augeas.create(:name => "foo").provider.class.ancestors.should be_include(Puppet::Provider)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "basic structure" do
|
21
|
+
it "should be able to create a instance" do
|
22
|
+
provider_class = Puppet::Type::Augeas.provider(Puppet::Type::Augeas.providers[0])
|
23
|
+
Puppet::Type::Augeas.expects(:defaultprovider).returns provider_class
|
24
|
+
augeas.create(:name => "bar").should_not be_nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should have an parse_commands feature" do
|
28
|
+
augeas.provider_feature(:parse_commands).should_not be_nil
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should have an need_to_run? feature" do
|
32
|
+
augeas.provider_feature(:need_to_run?).should_not be_nil
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should have an execute_changes feature" do
|
36
|
+
augeas.provider_feature(:execute_changes).should_not be_nil
|
37
|
+
end
|
38
|
+
|
39
|
+
properties = [:returns]
|
40
|
+
params = [:name, :context, :onlyif, :changes, :root, :load_path, :type_check]
|
41
|
+
|
42
|
+
properties.each do |property|
|
43
|
+
it "should have a %s property" % property do
|
44
|
+
augeas.attrclass(property).ancestors.should be_include(Puppet::Property)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should have documentation for its %s property" % property do
|
48
|
+
augeas.attrclass(property).doc.should be_instance_of(String)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
params.each do |param|
|
53
|
+
it "should have a %s parameter" % param do
|
54
|
+
augeas.attrclass(param).ancestors.should be_include(Puppet::Parameter)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should have documentation for its %s parameter" % param do
|
58
|
+
augeas.attrclass(param).doc.should be_instance_of(String)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "default values" do
|
64
|
+
before do
|
65
|
+
provider_class = augeas.provider(augeas.providers[0])
|
66
|
+
augeas.expects(:defaultprovider).returns provider_class
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should be blank for context" do
|
70
|
+
augeas.create(:name => :context)[:context].should == ""
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should be blank for onlyif" do
|
74
|
+
augeas.create(:name => :onlyif)[:onlyif].should == ""
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should be blank for load_path" do
|
78
|
+
augeas.create(:name => :load_path)[:load_path].should == ""
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should be / for root" do
|
82
|
+
augeas.create(:name => :root)[:root].should == "/"
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should be false for type_check" do
|
86
|
+
augeas.create(:name => :type_check)[:type_check].should == :false
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "provider interaction" do
|
91
|
+
it "should munge the changes" do
|
92
|
+
provider = stub("provider", :parse_commands => "Jar Jar Binks")
|
93
|
+
resource = stub('resource', :resource => nil, :provider => provider, :line => nil, :file => nil)
|
94
|
+
changes = augeas.attrclass(:changes).new(:resource => resource)
|
95
|
+
changes.value= "Testing 123"
|
96
|
+
changes.value.should == "Jar Jar Binks"
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should return 0 if it does not need to run" do
|
100
|
+
provider = stub("provider", :need_to_run? => false)
|
101
|
+
resource = stub('resource', :resource => nil, :provider => provider, :line => nil, :file => nil)
|
102
|
+
changes = augeas.attrclass(:returns).new(:resource => resource)
|
103
|
+
changes.retrieve.should == 0
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should return :need_to_run if it needs to run" do
|
107
|
+
provider = stub("provider", :need_to_run? => true)
|
108
|
+
resource = stub('resource', :resource => nil, :provider => provider, :line => nil, :file => nil)
|
109
|
+
changes = augeas.attrclass(:returns).new(:resource => resource)
|
110
|
+
changes.retrieve.should == :need_to_run
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
computer = Puppet::Type.type(:computer)
|
6
|
+
|
7
|
+
describe Puppet.type(:computer), " when checking computer objects" do
|
8
|
+
before do
|
9
|
+
provider_class = Puppet::Type::Computer.provider(Puppet::Type::Computer.providers[0])
|
10
|
+
Puppet::Type::Computer.expects(:defaultprovider).returns provider_class
|
11
|
+
@resource = Puppet::Type::Computer.create(
|
12
|
+
:name => "puppetcomputertest",
|
13
|
+
:en_address => "aa:bb:cc:dd:ee:ff",
|
14
|
+
:ip_address => "1.2.3.4")
|
15
|
+
@properties = {}
|
16
|
+
@ensure = Puppet::Type::Computer.attrclass(:ensure).new(:resource => @resource)
|
17
|
+
end
|
18
|
+
|
19
|
+
after do
|
20
|
+
computer.clear
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should be able to create a instance" do
|
24
|
+
provider_class = Puppet::Type::Computer.provider(Puppet::Type::Computer.providers[0])
|
25
|
+
Puppet::Type::Computer.expects(:defaultprovider).returns provider_class
|
26
|
+
computer.create(:name => "bar").should_not be_nil
|
27
|
+
end
|
28
|
+
|
29
|
+
properties = [:en_address, :ip_address]
|
30
|
+
params = [:name]
|
31
|
+
|
32
|
+
properties.each do |property|
|
33
|
+
it "should have a %s property" % property do
|
34
|
+
computer.attrclass(property).ancestors.should be_include(Puppet::Property)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have documentation for its %s property" % property do
|
38
|
+
computer.attrclass(property).doc.should be_instance_of(String)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should accept :absent as a value" do
|
42
|
+
prop = computer.attrclass(property).new(:resource => @resource)
|
43
|
+
prop.should = :absent
|
44
|
+
prop.should.must == :absent
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
params.each do |param|
|
49
|
+
it "should have a %s parameter" % param do
|
50
|
+
computer.attrclass(param).ancestors.should be_include(Puppet::Parameter)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should have documentation for its %s parameter" % param do
|
54
|
+
computer.attrclass(param).doc.should be_instance_of(String)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "default values" do
|
59
|
+
before do
|
60
|
+
provider_class = computer.provider(computer.providers[0])
|
61
|
+
computer.expects(:defaultprovider).returns provider_class
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should be nil for en_address" do
|
65
|
+
computer.create(:name => :en_address)[:en_address].should == nil
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should be nil for ip_address" do
|
69
|
+
computer.create(:name => :ip_address)[:ip_address].should == nil
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "when managing the ensure property" do
|
74
|
+
it "should support a :present value" do
|
75
|
+
lambda { @ensure.should = :present }.should_not raise_error
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should support an :absent value" do
|
79
|
+
lambda { @ensure.should = :absent }.should_not raise_error
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
module ExecModuleTesting
|
6
|
+
def create_resource(command, output, exitstatus)
|
7
|
+
@user_name = 'some_user_name'
|
8
|
+
@group_name = 'some_group_name'
|
9
|
+
Puppet.features.stubs(:root?).returns(true)
|
10
|
+
@execer = Puppet::Type.type(:exec).create(:name => command, :path => %w{/usr/bin /bin}, :user => @user_name, :group => @group_name)
|
11
|
+
|
12
|
+
status = stub "process"
|
13
|
+
status.stubs(:exitstatus).returns(exitstatus)
|
14
|
+
|
15
|
+
Puppet::Util::SUIDManager.expects(:run_and_capture).with([command], @user_name, @group_name).returns([output, status])
|
16
|
+
end
|
17
|
+
|
18
|
+
def create_logging_resource(command, output, exitstatus, logoutput, loglevel)
|
19
|
+
create_resource(command, output, exitstatus)
|
20
|
+
@execer[:logoutput] = logoutput
|
21
|
+
@execer[:loglevel] = loglevel
|
22
|
+
end
|
23
|
+
|
24
|
+
def expect_output(output, loglevel)
|
25
|
+
output.split(/\n/).each do |line|
|
26
|
+
@execer.property(:returns).expects(loglevel).with(line)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe Puppet::Type.type(:exec), " when execing" do
|
32
|
+
include ExecModuleTesting
|
33
|
+
|
34
|
+
it "should use the 'run_and_capture' method to exec" do
|
35
|
+
command = "true"
|
36
|
+
create_resource(command, "", 0)
|
37
|
+
|
38
|
+
@execer.refresh.should == :executed_command
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should report a failure" do
|
42
|
+
command = "false"
|
43
|
+
create_resource(command, "", 1)
|
44
|
+
|
45
|
+
proc { @execer.refresh }.should raise_error(Puppet::Error)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should log the output on success" do
|
49
|
+
#Puppet::Util::Log.newdestination :console
|
50
|
+
command = "false"
|
51
|
+
output = "output1\noutput2\n"
|
52
|
+
create_logging_resource(command, output, 0, true, :err)
|
53
|
+
expect_output(output, :err)
|
54
|
+
@execer.refresh
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should log the output on failure" do
|
58
|
+
#Puppet::Util::Log.newdestination :console
|
59
|
+
command = "false"
|
60
|
+
output = "output1\noutput2\n"
|
61
|
+
create_logging_resource(command, output, 1, true, :err)
|
62
|
+
expect_output(output, :err)
|
63
|
+
|
64
|
+
proc { @execer.refresh }.should raise_error(Puppet::Error)
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
describe Puppet::Type.type(:exec), " when logoutput=>on_failure is set," do
|
71
|
+
include ExecModuleTesting
|
72
|
+
|
73
|
+
it "should log the output on failure" do
|
74
|
+
#Puppet::Util::Log.newdestination :console
|
75
|
+
command = "false"
|
76
|
+
output = "output1\noutput2\n"
|
77
|
+
create_logging_resource(command, output, 1, :on_failure, :err)
|
78
|
+
expect_output(output, :err)
|
79
|
+
|
80
|
+
proc { @execer.refresh }.should raise_error(Puppet::Error)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "shouldn't log the output on success" do
|
84
|
+
#Puppet::Util::Log.newdestination :console
|
85
|
+
command = "true"
|
86
|
+
output = "output1\noutput2\n"
|
87
|
+
create_logging_resource(command, output, 0, :on_failure, :err)
|
88
|
+
@execer.property(:returns).expects(:err).never
|
89
|
+
@execer.refresh
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Type.type(:file) do
|
6
|
+
before do
|
7
|
+
@path = Tempfile.new("puppetspec")
|
8
|
+
@path.close!()
|
9
|
+
@path = @path.path
|
10
|
+
@file = Puppet::Type::File.create(:name => @path)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when used with content and replace=>false" do
|
14
|
+
before do
|
15
|
+
@file[:content] = "foo"
|
16
|
+
@file[:replace] = false
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should be insync if the file exists and the content is different" do
|
20
|
+
File.open(@path, "w") do |f| f.puts "bar" end
|
21
|
+
@file.property(:content).insync?("bar").should be_true
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should be insync if the file exists and the content is right" do
|
25
|
+
File.open(@path, "w") do |f| f.puts "foo" end
|
26
|
+
@file.property(:content).insync?("foo").should be_true
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should not be insync if the file does not exist" do
|
30
|
+
@file.property(:content).insync?(:nil).should be_false
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "when specifying a source" do
|
35
|
+
before do
|
36
|
+
@file[:source] = "/bar"
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should raise if source doesn't exist" do
|
40
|
+
@file.property(:source).expects(:found?).returns(false)
|
41
|
+
lambda { @file.retrieve }.should raise_error(Puppet::Error)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should have a checksum type of md5 and warn if retrieving with mtime" do
|
45
|
+
File.open(@path, "w") do |f| f.puts "foo" end
|
46
|
+
@file.property(:checksum).expects(:warning).with("Files with source set must use md5 as checksum. Forcing to md5 from %s for %s" % [:mtime, @path])
|
47
|
+
@file[:checksum] = :mtime
|
48
|
+
@file.property(:checksum).checktype.should == :md5
|
49
|
+
@file.property(:checksum).retrieve.should == "{md5}d3b07384d113edec49eaa6238ad5ff00"
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should have a checksum type of md5 and warn if retrieving with md5lite" do
|
53
|
+
File.open(@path, "w") do |f| f.puts "foo" end
|
54
|
+
@file.property(:checksum).expects(:warning).with("Files with source set must use md5 as checksum. Forcing to md5 from %s for %s" % [:md5lite, @path])
|
55
|
+
@file[:checksum] = :md5lite
|
56
|
+
@file.property(:checksum).checktype.should == :md5
|
57
|
+
@file.property(:checksum).retrieve.should == "{md5}d3b07384d113edec49eaa6238ad5ff00"
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
it "should have a checksum type of md5 if getsum called with mtime" do
|
62
|
+
File.open(@path, "w") do |f| f.puts "foo" end
|
63
|
+
@file[:checksum] = :md5
|
64
|
+
@file.property(:checksum).checktype.should == :md5
|
65
|
+
@file.property(:checksum).getsum(:mtime).should == "{md5}d3b07384d113edec49eaa6238ad5ff00"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should not warn if sumtype set to md5" do
|
69
|
+
File.open(@path, "w") do |f| f.puts "foo" end
|
70
|
+
@file.property(:checksum).expects(:warning).never
|
71
|
+
@file[:checksum] = :md5
|
72
|
+
@file.property(:checksum).checktype.should == :md5
|
73
|
+
@file.property(:checksum).retrieve.should == "{md5}d3b07384d113edec49eaa6238ad5ff00"
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "when retrieving remote files" do
|
79
|
+
before do
|
80
|
+
@filesource = Puppet::Type::File::FileSource.new
|
81
|
+
@filesource.server = mock 'fileserver'
|
82
|
+
|
83
|
+
@file.stubs(:uri2obj).returns(@filesource)
|
84
|
+
|
85
|
+
@file[:source] = "puppet:///test"
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should fail without writing if it cannot retrieve remote contents" do
|
89
|
+
# create the file, because we only get the problem when it starts
|
90
|
+
# out absent.
|
91
|
+
File.open(@file[:path], "w") { |f| f.puts "a" }
|
92
|
+
@file.expects(:write).never
|
93
|
+
|
94
|
+
@filesource.server.stubs(:describe).returns("493\tfile\t100\t0\t{md5}3f5fef3bddbc4398c46a7bd7ba7b3af7")
|
95
|
+
@filesource.server.stubs(:retrieve).raises(RuntimeError)
|
96
|
+
@file.property(:source).retrieve
|
97
|
+
lambda { @file.property(:source).sync }.should raise_error(Puppet::Error)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should fail if it cannot describe remote contents" do
|
101
|
+
@filesource.server.stubs(:describe).raises(Puppet::Network::XMLRPCClientError.new("Testing"))
|
102
|
+
lambda { @file.retrieve }.should raise_error(Puppet::Error)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should fail during eval_generate if no remote sources exist" do
|
106
|
+
file = Puppet::Type.type(:file).create :path => "/foobar", :source => "/this/file/does/not/exist", :recurse => true
|
107
|
+
|
108
|
+
lambda { file.eval_generate }.should raise_error(Puppet::Error)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe "when managing links" do
|
113
|
+
require 'puppettest/support/assertions'
|
114
|
+
include PuppetTest
|
115
|
+
require 'tempfile'
|
116
|
+
|
117
|
+
before do
|
118
|
+
@basedir = tempfile
|
119
|
+
Dir.mkdir(@basedir)
|
120
|
+
@file = File.join(@basedir, "file")
|
121
|
+
@link = File.join(@basedir, "link")
|
122
|
+
|
123
|
+
File.open(@file, "w", 0644) { |f| f.puts "yayness"; f.flush }
|
124
|
+
File.symlink(@file, @link)
|
125
|
+
|
126
|
+
@resource = Puppet.type(:file).create(
|
127
|
+
:path => @link,
|
128
|
+
:mode => "755"
|
129
|
+
)
|
130
|
+
@catalog = Puppet::Node::Catalog.new
|
131
|
+
@catalog.add_resource @resource
|
132
|
+
end
|
133
|
+
|
134
|
+
after do
|
135
|
+
remove_tmp_files
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should default to managing the link" do
|
139
|
+
@catalog.apply
|
140
|
+
# I convert them to strings so they display correctly if there's an error.
|
141
|
+
("%o" % (File.stat(@file).mode & 007777)).should == "%o" % 0644
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should be able to follow links" do
|
145
|
+
@resource[:links] = :follow
|
146
|
+
@catalog.apply
|
147
|
+
|
148
|
+
("%o" % (File.stat(@file).mode & 007777)).should == "%o" % 0755
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
after do
|
153
|
+
Puppet::Type::File.clear
|
154
|
+
end
|
155
|
+
end
|