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,108 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#--
|
3
|
+
# Copyright (C) 2008 Jeffrey J McCune.
|
4
|
+
|
5
|
+
# This program and entire repository is free software; you can
|
6
|
+
# redistribute it and/or modify it under the terms of the GNU
|
7
|
+
# General Public License as published by the Free Software
|
8
|
+
# Foundation; either version 2 of the License, or any later version.
|
9
|
+
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program; if not, write to the Free Software
|
17
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
18
|
+
|
19
|
+
# Author: Jeff McCune <mccune.jeff@gmail.com>
|
20
|
+
|
21
|
+
# Most of this code copied from /spec/type/service.rb
|
22
|
+
|
23
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
24
|
+
|
25
|
+
require 'puppet/type/mcx'
|
26
|
+
|
27
|
+
mcx_type = Puppet::Type.type(:mcx)
|
28
|
+
|
29
|
+
describe mcx_type, "when validating attributes" do
|
30
|
+
|
31
|
+
properties = [:ensure, :content]
|
32
|
+
parameters = [:name, :ds_type, :ds_name]
|
33
|
+
|
34
|
+
parameters.each do |p|
|
35
|
+
it "should have a #{p} parameter" do
|
36
|
+
mcx_type.attrclass(p).ancestors.should be_include(Puppet::Parameter)
|
37
|
+
end
|
38
|
+
it "should have documentation for its #{p} parameter" do
|
39
|
+
mcx_type.attrclass(p).doc.should be_instance_of(String)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
properties.each do |p|
|
44
|
+
it "should have a #{p} property" do
|
45
|
+
mcx_type.attrclass(p).ancestors.should be_include(Puppet::Property)
|
46
|
+
end
|
47
|
+
it "should have documentation for its #{p} property" do
|
48
|
+
mcx_type.attrclass(p).doc.should be_instance_of(String)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
describe mcx_type, "default values" do
|
55
|
+
|
56
|
+
before :each do
|
57
|
+
provider_class = mcx_type.provider(mcx_type.providers[0])
|
58
|
+
mcx_type.stubs(:defaultprovider).returns provider_class
|
59
|
+
end
|
60
|
+
|
61
|
+
after :each do
|
62
|
+
mcx_type.clear
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should be nil for :ds_type" do
|
66
|
+
mcx_type.create(:name => '/Foo/bar')[:ds_type].should be_nil
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should be nil for :ds_name" do
|
70
|
+
mcx_type.create(:name => '/Foo/bar')[:ds_name].should be_nil
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should be nil for :content" do
|
74
|
+
mcx_type.create(:name => '/Foo/bar')[:content].should be_nil
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
describe mcx_type, "when validating properties" do
|
80
|
+
|
81
|
+
before :each do
|
82
|
+
provider_class = mcx_type.provider(mcx_type.providers[0])
|
83
|
+
mcx_type.stubs(:defaultprovider).returns provider_class
|
84
|
+
end
|
85
|
+
|
86
|
+
after :each do
|
87
|
+
mcx_type.clear
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should be able to create an instance" do
|
91
|
+
lambda {
|
92
|
+
mcx_type.create(:name => '/Foo/bar')
|
93
|
+
}.should_not raise_error
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should support :present as a value to :ensure" do
|
97
|
+
lambda {
|
98
|
+
mcx_type.create(:name => "/Foo/bar", :ensure => :present)
|
99
|
+
}.should_not raise_error
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should support :absent as a value to :ensure" do
|
103
|
+
lambda {
|
104
|
+
mcx_type.create(:name => "/Foo/bar", :ensure => :absent)
|
105
|
+
}.should_not raise_error
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
@@ -0,0 +1,219 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Type.type(:mount) do
|
6
|
+
it "should have a :refreshable feature that requires the :remount method" do
|
7
|
+
Puppet::Type.type(:mount).provider_feature(:refreshable).methods.should == [:remount]
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should have no default value for :ensure" do
|
11
|
+
mount = Puppet::Type.type(:mount).create(:name => "yay")
|
12
|
+
mount.should(:ensure).should be_nil
|
13
|
+
end
|
14
|
+
|
15
|
+
after { Puppet::Type.type(:mount).clear }
|
16
|
+
end
|
17
|
+
|
18
|
+
describe Puppet::Type.type(:mount), "when validating attributes" do
|
19
|
+
[:name, :remounts].each do |param|
|
20
|
+
it "should have a #{param} parameter" do
|
21
|
+
Puppet::Type.type(:mount).attrtype(param).should == :param
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
[:ensure, :device, :blockdevice, :fstype, :options, :pass, :dump, :atboot, :target].each do |param|
|
26
|
+
it "should have a #{param} property" do
|
27
|
+
Puppet::Type.type(:mount).attrtype(param).should == :property
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe Puppet::Type.type(:mount)::Ensure, "when validating values" do
|
33
|
+
before do
|
34
|
+
@provider = stub 'provider', :class => Puppet::Type.type(:mount).defaultprovider, :clear => nil
|
35
|
+
Puppet::Type.type(:mount).defaultprovider.expects(:new).returns(@provider)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should support :present as a value to :ensure" do
|
39
|
+
Puppet::Type.type(:mount).create(:name => "yay", :ensure => :present)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should alias :unmounted to :present as a value to :ensure" do
|
43
|
+
mount = Puppet::Type.type(:mount).create(:name => "yay", :ensure => :unmounted)
|
44
|
+
mount.should(:ensure).should == :present
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should support :absent as a value to :ensure" do
|
48
|
+
Puppet::Type.type(:mount).create(:name => "yay", :ensure => :absent)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should support :mounted as a value to :ensure" do
|
52
|
+
Puppet::Type.type(:mount).create(:name => "yay", :ensure => :mounted)
|
53
|
+
end
|
54
|
+
|
55
|
+
after { Puppet::Type.type(:mount).clear }
|
56
|
+
end
|
57
|
+
|
58
|
+
describe Puppet::Type.type(:mount)::Ensure do
|
59
|
+
before :each do
|
60
|
+
@provider = stub 'provider', :class => Puppet::Type.type(:mount).defaultprovider, :clear => nil, :satisfies? => true, :name => :mock
|
61
|
+
Puppet::Type.type(:mount).defaultprovider.stubs(:new).returns(@provider)
|
62
|
+
@mount = Puppet::Type.type(:mount).create(:name => "yay", :check => :ensure)
|
63
|
+
|
64
|
+
@ensure = @mount.property(:ensure)
|
65
|
+
end
|
66
|
+
|
67
|
+
after :each do
|
68
|
+
Puppet::Type.type(:mount).clear
|
69
|
+
end
|
70
|
+
|
71
|
+
def mount_stub(params)
|
72
|
+
Puppet::Type.type(:mount).validproperties.each do |prop|
|
73
|
+
unless params[prop]
|
74
|
+
params[prop] = :absent
|
75
|
+
@mount[prop] = :absent
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
params.each do |param, value|
|
80
|
+
@provider.stubs(param).returns(value)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe Puppet::Type.type(:mount)::Ensure, "when retrieving its current state" do
|
85
|
+
|
86
|
+
it "should return the provider's value if it is :absent" do
|
87
|
+
@provider.expects(:ensure).returns(:absent)
|
88
|
+
@ensure.retrieve.should == :absent
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should return :mounted if the provider indicates it is mounted and the value is not :absent" do
|
92
|
+
@provider.expects(:ensure).returns(:present)
|
93
|
+
@provider.expects(:mounted?).returns(true)
|
94
|
+
@ensure.retrieve.should == :mounted
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should return :present if the provider indicates it is not mounted and the value is not :absent" do
|
98
|
+
@provider.expects(:ensure).returns(:present)
|
99
|
+
@provider.expects(:mounted?).returns(false)
|
100
|
+
@ensure.retrieve.should == :present
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe Puppet::Type.type(:mount)::Ensure, "when changing the host" do
|
105
|
+
|
106
|
+
it "should destroy itself if it should be absent" do
|
107
|
+
@provider.stubs(:mounted?).returns(false)
|
108
|
+
@provider.expects(:destroy)
|
109
|
+
@ensure.should = :absent
|
110
|
+
@ensure.sync
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should unmount itself before destroying if it is mounted and should be absent" do
|
114
|
+
@provider.expects(:mounted?).returns(true)
|
115
|
+
@provider.expects(:unmount)
|
116
|
+
@provider.expects(:destroy)
|
117
|
+
@ensure.should = :absent
|
118
|
+
@ensure.sync
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should create itself if it is absent and should be present" do
|
122
|
+
@provider.stubs(:mounted?).returns(false)
|
123
|
+
@provider.expects(:create)
|
124
|
+
@ensure.should = :present
|
125
|
+
@ensure.sync
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should unmount itself if it is mounted and should be present" do
|
129
|
+
@provider.stubs(:mounted?).returns(true)
|
130
|
+
|
131
|
+
# The interface here is just too much work to test right now.
|
132
|
+
@ensure.stubs(:syncothers)
|
133
|
+
@provider.expects(:unmount)
|
134
|
+
@ensure.should = :present
|
135
|
+
@ensure.sync
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should create and mount itself if it does not exist and should be mounted" do
|
139
|
+
@provider.stubs(:ensure).returns(:absent)
|
140
|
+
@provider.stubs(:mounted?).returns(false)
|
141
|
+
@provider.expects(:create)
|
142
|
+
@ensure.stubs(:syncothers)
|
143
|
+
@provider.expects(:mount)
|
144
|
+
@ensure.should = :mounted
|
145
|
+
@ensure.sync
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should mount itself if it is present and should be mounted" do
|
149
|
+
@provider.stubs(:ensure).returns(:present)
|
150
|
+
@provider.stubs(:mounted?).returns(false)
|
151
|
+
@ensure.stubs(:syncothers)
|
152
|
+
@provider.expects(:mount)
|
153
|
+
@ensure.should = :mounted
|
154
|
+
@ensure.sync
|
155
|
+
end
|
156
|
+
|
157
|
+
it "should create but not mount itself if it is absent and mounted and should be mounted" do
|
158
|
+
@provider.stubs(:ensure).returns(:absent)
|
159
|
+
@provider.stubs(:mounted?).returns(true)
|
160
|
+
@ensure.stubs(:syncothers)
|
161
|
+
@provider.expects(:create)
|
162
|
+
@ensure.should = :mounted
|
163
|
+
@ensure.sync
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
describe Puppet::Type.type(:mount), "when responding to events" do
|
168
|
+
|
169
|
+
it "should remount if it is currently mounted" do
|
170
|
+
@provider.expects(:mounted?).returns(true)
|
171
|
+
@provider.expects(:remount)
|
172
|
+
|
173
|
+
@mount.refresh
|
174
|
+
end
|
175
|
+
|
176
|
+
it "should not remount if it is not currently mounted" do
|
177
|
+
@provider.expects(:mounted?).returns(false)
|
178
|
+
@provider.expects(:remount).never
|
179
|
+
|
180
|
+
@mount.refresh
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should not remount swap filesystems" do
|
184
|
+
@mount[:fstype] = "swap"
|
185
|
+
@provider.expects(:remount).never
|
186
|
+
|
187
|
+
@mount.refresh
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
describe Puppet::Type.type(:mount), "when modifying an existing mount entry" do
|
193
|
+
before do
|
194
|
+
@provider = stub 'provider', :class => Puppet::Type.type(:mount).defaultprovider, :clear => nil, :satisfies? => true, :name => :mock, :remount => nil
|
195
|
+
Puppet::Type.type(:mount).defaultprovider.stubs(:new).returns(@provider)
|
196
|
+
@mount = Puppet::Type.type(:mount).create(:name => "yay", :ensure => :mounted)
|
197
|
+
|
198
|
+
{:device => "/foo/bar", :blockdevice => "/other/bar", :target => "/what/ever", :fstype => 'eh', :options => "", :pass => 0, :dump => 0, :atboot => 0,
|
199
|
+
:ensure => :mounted}.each do
|
200
|
+
|param, value|
|
201
|
+
@mount.provider.stubs(param).returns value
|
202
|
+
@mount[param] = value
|
203
|
+
end
|
204
|
+
|
205
|
+
@mount.provider.stubs(:mounted?).returns true
|
206
|
+
|
207
|
+
@catalog = Puppet::Node::Catalog.new
|
208
|
+
@catalog.add_resource @mount
|
209
|
+
end
|
210
|
+
|
211
|
+
it "should use the provider to change the dump value" do
|
212
|
+
@mount.provider.expects(:dump).returns 0
|
213
|
+
@mount.provider.expects(:dump=).with(1)
|
214
|
+
|
215
|
+
@mount[:dump] = 1
|
216
|
+
|
217
|
+
@catalog.apply
|
218
|
+
end
|
219
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/external/nagios'
|
6
|
+
|
7
|
+
describe "Nagios resource types" do
|
8
|
+
Nagios::Base.eachtype do |name, nagios_type|
|
9
|
+
puppet_type = Puppet::Type.type("nagios_" + name.to_s)
|
10
|
+
|
11
|
+
it "should have a valid type for #{name}" do
|
12
|
+
puppet_type.should_not be_nil
|
13
|
+
end
|
14
|
+
|
15
|
+
next unless puppet_type
|
16
|
+
|
17
|
+
describe puppet_type do
|
18
|
+
it "should be defined as a Puppet resource type" do
|
19
|
+
puppet_type.should_not be_nil
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should have documentation" do
|
23
|
+
puppet_type.instance_variable_get("@doc").should_not == ""
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should have %s as its namevar" % nagios_type.namevar do
|
27
|
+
puppet_type.namevar.should == nagios_type.namevar
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should have documentation for its %s parameter" % nagios_type.namevar do
|
31
|
+
puppet_type.attrclass(nagios_type.namevar).instance_variable_get("@doc").should_not be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should have an ensure property" do
|
35
|
+
puppet_type.should be_validproperty(:ensure)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should have a target property" do
|
39
|
+
puppet_type.should be_validproperty(:target)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should have documentation for its target property" do
|
43
|
+
puppet_type.attrclass(:target).instance_variable_get("@doc").should_not be_nil
|
44
|
+
end
|
45
|
+
|
46
|
+
nagios_type.parameters.reject { |param| param == nagios_type.namevar or param.to_s =~ /^[0-9]/ }.each do |param|
|
47
|
+
it "should have a %s property" % param do
|
48
|
+
puppet_type.should be_validproperty(param)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should have documentation for its %s property" % param do
|
52
|
+
puppet_type.attrclass(param).instance_variable_get("@doc").should_not be_nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
nagios_type.parameters.find_all { |param| param.to_s =~ /^[0-9]/ }.each do |param|
|
57
|
+
it "should have not have a %s property" % param do
|
58
|
+
puppet_type.should_not be_validproperty(:param)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/type'
|
6
|
+
|
7
|
+
describe Puppet::Type.type(:file).attrclass(:noop) do
|
8
|
+
before do
|
9
|
+
@file = Puppet::Type.newfile :path => "/what/ever"
|
10
|
+
end
|
11
|
+
|
12
|
+
after { Puppet::Type::File.clear }
|
13
|
+
|
14
|
+
it "should accept true as a value" do
|
15
|
+
lambda { @file[:noop] = true }.should_not raise_error
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should accept false as a value" do
|
19
|
+
lambda { @file[:noop] = false }.should_not raise_error
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "when set on a resource" do
|
23
|
+
it "should default to the :noop setting" do
|
24
|
+
Puppet.settings.expects(:value).with(:noop).returns "myval"
|
25
|
+
@file.noop.should == "myval"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should prefer true values from the attribute" do
|
29
|
+
@file[:noop] = true
|
30
|
+
@file.noop.should be_true
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should prefer false values from the attribute" do
|
34
|
+
@file[:noop] = false
|
35
|
+
@file.noop.should be_false
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,246 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Puppet::Type.type(:package) do
|
6
|
+
it "should have an :installable feature that requires the :install method" do
|
7
|
+
Puppet::Type.type(:package).provider_feature(:installable).methods.should == [:install]
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should have an :uninstallable feature that requires the :uninstall method" do
|
11
|
+
Puppet::Type.type(:package).provider_feature(:uninstallable).methods.should == [:uninstall]
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have an :upgradeable feature that requires :update and :latest methods" do
|
15
|
+
Puppet::Type.type(:package).provider_feature(:upgradeable).methods.should == [:update, :latest]
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have a :purgeable feature that requires the :purge latest method" do
|
19
|
+
Puppet::Type.type(:package).provider_feature(:purgeable).methods.should == [:purge]
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should have a :versionable feature" do
|
23
|
+
Puppet::Type.type(:package).provider_feature(:versionable).should_not be_nil
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should default to being installed" do
|
27
|
+
pkg = Puppet::Type.type(:package).create(:name => "yay")
|
28
|
+
pkg.should(:ensure).should == :present
|
29
|
+
end
|
30
|
+
|
31
|
+
after { Puppet::Type.type(:package).clear }
|
32
|
+
end
|
33
|
+
|
34
|
+
describe Puppet::Type.type(:package), "when validating attributes" do
|
35
|
+
[:name, :source, :instance, :status, :adminfile, :responsefile, :configfiles, :category, :platform, :root, :vendor, :description, :allowcdrom].each do |param|
|
36
|
+
it "should have a #{param} parameter" do
|
37
|
+
Puppet::Type.type(:package).attrtype(param).should == :param
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should have an ensure property" do
|
42
|
+
Puppet::Type.type(:package).attrtype(:ensure).should == :property
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe Puppet::Type.type(:package), "when validating attribute values" do
|
47
|
+
before do
|
48
|
+
@provider = stub 'provider', :class => Puppet::Type.type(:package).defaultprovider, :clear => nil
|
49
|
+
Puppet::Type.type(:package).defaultprovider.expects(:new).returns(@provider)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should support :present as a value to :ensure" do
|
53
|
+
Puppet::Type.type(:package).create(:name => "yay", :ensure => :present)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should alias :installed to :present as a value to :ensure" do
|
57
|
+
pkg = Puppet::Type.type(:package).create(:name => "yay", :ensure => :installed)
|
58
|
+
pkg.should(:ensure).should == :present
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should support :absent as a value to :ensure" do
|
62
|
+
Puppet::Type.type(:package).create(:name => "yay", :ensure => :absent)
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should support :purged as a value to :ensure if the provider has the :purgeable feature" do
|
66
|
+
@provider.expects(:satisfies?).with(:purgeable).returns(true)
|
67
|
+
Puppet::Type.type(:package).create(:name => "yay", :ensure => :purged)
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should not support :purged as a value to :ensure if the provider does not have the :purgeable feature" do
|
71
|
+
@provider.expects(:satisfies?).with(:purgeable).returns(false)
|
72
|
+
proc { Puppet::Type.type(:package).create(:name => "yay", :ensure => :purged) }.should raise_error(Puppet::Error)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should support :latest as a value to :ensure if the provider has the :upgradeable feature" do
|
76
|
+
@provider.expects(:satisfies?).with(:upgradeable).returns(true)
|
77
|
+
Puppet::Type.type(:package).create(:name => "yay", :ensure => :latest)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should not support :latest as a value to :ensure if the provider does not have the :upgradeable feature" do
|
81
|
+
@provider.expects(:satisfies?).with(:upgradeable).returns(false)
|
82
|
+
proc { Puppet::Type.type(:package).create(:name => "yay", :ensure => :latest) }.should raise_error(Puppet::Error)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should support version numbers as a value to :ensure if the provider has the :versionable feature" do
|
86
|
+
@provider.expects(:satisfies?).with(:versionable).returns(true)
|
87
|
+
Puppet::Type.type(:package).create(:name => "yay", :ensure => "1.0")
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should not support version numbers as a value to :ensure if the provider does not have the :versionable feature" do
|
91
|
+
@provider.expects(:satisfies?).with(:versionable).returns(false)
|
92
|
+
proc { Puppet::Type.type(:package).create(:name => "yay", :ensure => "1.0") }.should raise_error(Puppet::Error)
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should accept any string as an argument to :source" do
|
96
|
+
proc { Puppet::Type.type(:package).create(:name => "yay", :source => "stuff") }.should_not raise_error(Puppet::Error)
|
97
|
+
end
|
98
|
+
|
99
|
+
after { Puppet::Type.type(:package).clear }
|
100
|
+
end
|
101
|
+
|
102
|
+
module PackageEvaluationTesting
|
103
|
+
def setprops(properties)
|
104
|
+
@provider.stubs(:properties).returns(properties)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe Puppet::Type.type(:package) do
|
109
|
+
before :each do
|
110
|
+
@provider = stub 'provider', :class => Puppet::Type.type(:package).defaultprovider, :clear => nil, :satisfies? => true, :name => :mock
|
111
|
+
Puppet::Type.type(:package).defaultprovider.stubs(:new).returns(@provider)
|
112
|
+
Puppet::Type.type(:package).defaultprovider.stubs(:instances).returns([])
|
113
|
+
@package = Puppet::Type.type(:package).create(:name => "yay")
|
114
|
+
|
115
|
+
@catalog = Puppet::Node::Catalog.new
|
116
|
+
@catalog.add_resource(@package)
|
117
|
+
end
|
118
|
+
|
119
|
+
after :each do
|
120
|
+
@catalog.clear(true)
|
121
|
+
Puppet::Type.type(:package).clear
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
describe Puppet::Type.type(:package), "when it should be purged" do
|
126
|
+
include PackageEvaluationTesting
|
127
|
+
|
128
|
+
before { @package[:ensure] = :purged }
|
129
|
+
|
130
|
+
it "should do nothing if it is :purged" do
|
131
|
+
@provider.expects(:properties).returns(:ensure => :purged)
|
132
|
+
@catalog.apply
|
133
|
+
end
|
134
|
+
|
135
|
+
[:absent, :installed, :present, :latest].each do |state|
|
136
|
+
it "should purge if it is #{state.to_s}" do
|
137
|
+
@provider.stubs(:properties).returns(:ensure => state)
|
138
|
+
@provider.expects(:purge)
|
139
|
+
@catalog.apply
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
describe Puppet::Type.type(:package), "when it should be absent" do
|
145
|
+
include PackageEvaluationTesting
|
146
|
+
|
147
|
+
before { @package[:ensure] = :absent }
|
148
|
+
|
149
|
+
[:purged, :absent].each do |state|
|
150
|
+
it "should do nothing if it is #{state.to_s}" do
|
151
|
+
@provider.expects(:properties).returns(:ensure => state)
|
152
|
+
@catalog.apply
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
[:installed, :present, :latest].each do |state|
|
157
|
+
it "should uninstall if it is #{state.to_s}" do
|
158
|
+
@provider.stubs(:properties).returns(:ensure => state)
|
159
|
+
@provider.expects(:uninstall)
|
160
|
+
@catalog.apply
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
describe Puppet::Type.type(:package), "when it should be present" do
|
166
|
+
include PackageEvaluationTesting
|
167
|
+
|
168
|
+
before { @package[:ensure] = :present }
|
169
|
+
|
170
|
+
[:present, :latest, "1.0"].each do |state|
|
171
|
+
it "should do nothing if it is #{state.to_s}" do
|
172
|
+
@provider.expects(:properties).returns(:ensure => state)
|
173
|
+
@catalog.apply
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
[:purged, :absent].each do |state|
|
178
|
+
it "should install if it is #{state.to_s}" do
|
179
|
+
@provider.stubs(:properties).returns(:ensure => state)
|
180
|
+
@provider.expects(:install)
|
181
|
+
@catalog.apply
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
describe Puppet::Type.type(:package), "when it should be latest" do
|
187
|
+
include PackageEvaluationTesting
|
188
|
+
|
189
|
+
before { @package[:ensure] = :latest }
|
190
|
+
|
191
|
+
[:purged, :absent].each do |state|
|
192
|
+
it "should upgrade if it is #{state.to_s}" do
|
193
|
+
@provider.stubs(:properties).returns(:ensure => state)
|
194
|
+
@provider.expects(:update)
|
195
|
+
@catalog.apply
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
it "should upgrade if the current version is not equal to the latest version" do
|
200
|
+
@provider.stubs(:properties).returns(:ensure => "1.0")
|
201
|
+
@provider.stubs(:latest).returns("2.0")
|
202
|
+
@provider.expects(:update)
|
203
|
+
@catalog.apply
|
204
|
+
end
|
205
|
+
|
206
|
+
it "should do nothing if it is equal to the latest version" do
|
207
|
+
@provider.stubs(:properties).returns(:ensure => "1.0")
|
208
|
+
@provider.stubs(:latest).returns("1.0")
|
209
|
+
@provider.expects(:update).never
|
210
|
+
@catalog.apply
|
211
|
+
end
|
212
|
+
|
213
|
+
it "should do nothing if the provider returns :present as the latest version" do
|
214
|
+
@provider.stubs(:properties).returns(:ensure => :present)
|
215
|
+
@provider.stubs(:latest).returns("1.0")
|
216
|
+
@provider.expects(:update).never
|
217
|
+
@catalog.apply
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
describe Puppet::Type.type(:package), "when it should be a specific version" do
|
222
|
+
include PackageEvaluationTesting
|
223
|
+
|
224
|
+
before { @package[:ensure] = "1.0" }
|
225
|
+
|
226
|
+
[:purged, :absent].each do |state|
|
227
|
+
it "should install if it is #{state.to_s}" do
|
228
|
+
@provider.stubs(:properties).returns(:ensure => state)
|
229
|
+
@provider.expects(:install)
|
230
|
+
@catalog.apply
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
it "should do nothing if the current version is equal to the desired version" do
|
235
|
+
@provider.stubs(:properties).returns(:ensure => "1.0")
|
236
|
+
@provider.expects(:install).never
|
237
|
+
@catalog.apply
|
238
|
+
end
|
239
|
+
|
240
|
+
it "should install if the current version is not equal to the specified version" do
|
241
|
+
@provider.stubs(:properties).returns(:ensure => "2.0")
|
242
|
+
@provider.expects(:install)
|
243
|
+
@catalog.apply
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|