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,65 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'tempfile'
|
6
|
+
require 'puppet/util/loadedfile'
|
7
|
+
|
8
|
+
describe Puppet::Util::LoadedFile do
|
9
|
+
before(:each) do
|
10
|
+
@f = Tempfile.new('loadedfile_test')
|
11
|
+
@f.puts "yayness"
|
12
|
+
@f.flush
|
13
|
+
|
14
|
+
@loaded = Puppet::Util::LoadedFile.new(@f.path)
|
15
|
+
|
16
|
+
fake_ctime = Time.now - (2 * Puppet[:filetimeout])
|
17
|
+
@stat = stub('stat', :ctime => fake_ctime)
|
18
|
+
@fake_now = Time.now + (2 * Puppet[:filetimeout])
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should recognize when the file has not changed" do
|
22
|
+
# Use fake "now" so that we can be sure changed? actually checks, without sleeping
|
23
|
+
# for Puppet[:filetimeout] seconds.
|
24
|
+
Time.stubs(:now).returns(@fake_now)
|
25
|
+
@loaded.changed?.should == false
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should recognize when the file has changed" do
|
29
|
+
# Fake File.stat so we don't have to depend on the filesystem granularity. Doing a flush()
|
30
|
+
# just didn't do the job.
|
31
|
+
File.stubs(:stat).returns(@stat)
|
32
|
+
# Use fake "now" so that we can be sure changed? actually checks, without sleeping
|
33
|
+
# for Puppet[:filetimeout] seconds.
|
34
|
+
Time.stubs(:now).returns(@fake_now)
|
35
|
+
@loaded.changed?.should be_an_instance_of(Time)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should not catch a change until the timeout has elapsed" do
|
39
|
+
# Fake File.stat so we don't have to depend on the filesystem granularity. Doing a flush()
|
40
|
+
# just didn't do the job.
|
41
|
+
File.stubs(:stat).returns(@stat)
|
42
|
+
@loaded.changed?.should be(false)
|
43
|
+
# Use fake "now" so that we can be sure changed? actually checks, without sleeping
|
44
|
+
# for Puppet[:filetimeout] seconds.
|
45
|
+
Time.stubs(:now).returns(@fake_now)
|
46
|
+
@loaded.changed?.should_not be(false)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should consider a file changed when that file is missing" do
|
50
|
+
@f.close!
|
51
|
+
# Use fake "now" so that we can be sure changed? actually checks, without sleeping
|
52
|
+
# for Puppet[:filetimeout] seconds.
|
53
|
+
Time.stubs(:now).returns(@fake_now)
|
54
|
+
@loaded.changed?.should_not be(false)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should disable checking if Puppet[:filetimeout] is negative" do
|
58
|
+
Puppet[:filetimeout] = -1
|
59
|
+
@loaded.changed?.should_not be(false)
|
60
|
+
end
|
61
|
+
|
62
|
+
after(:each) do
|
63
|
+
@f.close
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
|
4
|
+
|
5
|
+
require 'puppet/util/log'
|
6
|
+
|
7
|
+
describe Puppet::Util::Log do
|
8
|
+
describe "instances" do
|
9
|
+
before do
|
10
|
+
Puppet::Util::Log.stubs(:newmessage)
|
11
|
+
end
|
12
|
+
|
13
|
+
[:level, :message, :time, :remote].each do |attr|
|
14
|
+
it "should have a %s attribute" % attr do
|
15
|
+
log = Puppet::Util::Log.new :level => :notice, :message => "A test message"
|
16
|
+
log.should respond_to(attr)
|
17
|
+
log.should respond_to(attr.to_s + "=")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should fail if created without a level" do
|
22
|
+
lambda { Puppet::Util::Log.new(:message => "A test message") }.should raise_error(ArgumentError)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should fail if created without a message" do
|
26
|
+
lambda { Puppet::Util::Log.new(:level => :notice) }.should raise_error(ArgumentError)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should make available the level passed in at initialization" do
|
30
|
+
Puppet::Util::Log.new(:level => :notice, :message => "A test message").level.should == :notice
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should make available the message passed in at initialization" do
|
34
|
+
Puppet::Util::Log.new(:level => :notice, :message => "A test message").message.should == "A test message"
|
35
|
+
end
|
36
|
+
|
37
|
+
# LAK:NOTE I don't know why this behavior is here, I'm just testing what's in the code,
|
38
|
+
# at least at first.
|
39
|
+
it "should always convert messages to strings" do
|
40
|
+
Puppet::Util::Log.new(:level => :notice, :message => :foo).message.should == "foo"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should convert the level to a symbol if it's passed in as a string" do
|
44
|
+
Puppet::Util::Log.new(:level => "notice", :message => :foo).level.should == :notice
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should fail if the level is not a symbol or string" do
|
48
|
+
lambda { Puppet::Util::Log.new(:level => 50, :message => :foo) }.should raise_error(ArgumentError)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should fail if the provided level is not valid" do
|
52
|
+
Puppet::Util::Log.expects(:validlevel?).with(:notice).returns false
|
53
|
+
lambda { Puppet::Util::Log.new(:level => :notice, :message => :foo) }.should raise_error(ArgumentError)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should set its time to the initialization time" do
|
57
|
+
time = mock 'time'
|
58
|
+
Time.expects(:now).returns time
|
59
|
+
Puppet::Util::Log.new(:level => "notice", :message => :foo).time.should equal(time)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should make available any passed-in tags" do
|
63
|
+
log = Puppet::Util::Log.new(:level => "notice", :message => :foo, :tags => %w{foo bar})
|
64
|
+
log.tags.should be_include("foo")
|
65
|
+
log.tags.should be_include("bar")
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should use an passed-in source" do
|
69
|
+
Puppet::Util::Log.any_instance.expects(:source=).with "foo"
|
70
|
+
Puppet::Util::Log.new(:level => "notice", :message => :foo, :source => "foo")
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should default to 'Puppet' as its source" do
|
74
|
+
Puppet::Util::Log.new(:level => "notice", :message => :foo).source.should == "Puppet"
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should register itself with Log" do
|
78
|
+
Puppet::Util::Log.expects(:newmessage)
|
79
|
+
Puppet::Util::Log.new(:level => "notice", :message => :foo)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should have a method for determining if a tag is present" do
|
83
|
+
Puppet::Util::Log.new(:level => "notice", :message => :foo).should respond_to(:tagged?)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should match a tag if any of the tags are equivalent to the passed tag as a string" do
|
87
|
+
Puppet::Util::Log.new(:level => "notice", :message => :foo, :tags => %w{one two}).should be_tagged(:one)
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should tag itself with its log level" do
|
91
|
+
Puppet::Util::Log.new(:level => "notice", :message => :foo).should be_tagged(:notice)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should return its message when converted to a string" do
|
95
|
+
Puppet::Util::Log.new(:level => "notice", :message => :foo).to_s.should == "foo"
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should include its time, source, level, and message when prepared for reporting" do
|
99
|
+
log = Puppet::Util::Log.new(:level => "notice", :message => :foo)
|
100
|
+
report = log.to_report
|
101
|
+
report.should be_include("notice")
|
102
|
+
report.should be_include("foo")
|
103
|
+
report.should be_include(log.source)
|
104
|
+
report.should be_include(log.time.to_s)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
|
4
|
+
|
5
|
+
require 'puppet/util/metric'
|
6
|
+
|
7
|
+
describe Puppet::Util::Metric do
|
8
|
+
before do
|
9
|
+
@metric = Puppet::Util::Metric.new("foo")
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should be aliased to Puppet::Metric" do
|
13
|
+
Puppet::Util::Metric.should equal(Puppet::Metric)
|
14
|
+
end
|
15
|
+
|
16
|
+
[:type, :name, :value, :label, :basedir].each do |name|
|
17
|
+
it "should have a #{name} attribute" do
|
18
|
+
@metric.should respond_to(name)
|
19
|
+
@metric.should respond_to(name.to_s + "=")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should default to the :rrdir as the basedir "do
|
24
|
+
Puppet.settings.expects(:value).with(:rrddir).returns "myrrd"
|
25
|
+
@metric.basedir.should == "myrrd"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should use any provided basedir" do
|
29
|
+
@metric.basedir = "foo"
|
30
|
+
@metric.basedir.should == "foo"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should require a name at initialization" do
|
34
|
+
lambda { Puppet::Util::Metric.new }.should raise_error(ArgumentError)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should always convert its name to a string" do
|
38
|
+
Puppet::Util::Metric.new(:foo).name.should == "foo"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should support a label" do
|
42
|
+
Puppet::Util::Metric.new("foo", "mylabel").label.should == "mylabel"
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should autogenerate a label if none is provided" do
|
46
|
+
Puppet::Util::Metric.new("foo_bar").label.should == "Foo bar"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should have a method for adding values" do
|
50
|
+
@metric.should respond_to(:newvalue)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should have a method for returning values" do
|
54
|
+
@metric.should respond_to(:values)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should require a name and value for its values" do
|
58
|
+
lambda { @metric.newvalue }.should raise_error(ArgumentError)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should support a label for values" do
|
62
|
+
@metric.newvalue(:foo, 10, "label")
|
63
|
+
@metric.values[0][1].should == "label"
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should autogenerate value labels if none is provided" do
|
67
|
+
@metric.newvalue("foo_bar", 10)
|
68
|
+
@metric.values[0][1].should == "Foo bar"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should return its values sorted by label" do
|
72
|
+
@metric.newvalue(:foo, 10, "b")
|
73
|
+
@metric.newvalue(:bar, 10, "a")
|
74
|
+
|
75
|
+
@metric.values.should == [[:bar, "a", 10], [:foo, "b", 10]]
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should use an array indexer method to retrieve individual values" do
|
79
|
+
@metric.newvalue(:foo, 10)
|
80
|
+
@metric[:foo].should == 10
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should return nil if the named value cannot be found" do
|
84
|
+
@metric[:foo].should be_nil
|
85
|
+
end
|
86
|
+
|
87
|
+
# LAK: I'm not taking the time to develop these tests right now.
|
88
|
+
# I expect they should actually be extracted into a separate class
|
89
|
+
# anyway.
|
90
|
+
it "should be able to graph metrics using RRDTool"
|
91
|
+
|
92
|
+
it "should be able to create a new RRDTool database"
|
93
|
+
|
94
|
+
it "should be able to store metrics into an RRDTool database"
|
95
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-11-18.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
7
|
+
|
8
|
+
require 'puppet/util/nagios_maker'
|
9
|
+
|
10
|
+
describe Puppet::Util::NagiosMaker do
|
11
|
+
before do
|
12
|
+
@module = Puppet::Util::NagiosMaker
|
13
|
+
|
14
|
+
@nagtype = stub 'nagios type', :parameters => [], :namevar => :name
|
15
|
+
Nagios::Base.stubs(:type).with(:test).returns(@nagtype)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should be able to create a new nagios type" do
|
19
|
+
@module.should respond_to(:create_nagios_type)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should fail if it cannot find the named Naginator type" do
|
23
|
+
Nagios::Base.stubs(:type).returns(nil)
|
24
|
+
|
25
|
+
lambda { @module.create_nagios_type(:no_such_type) }.should raise_error(Puppet::DevError)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should create a new RAL type with the provided name prefixed with 'nagios_'" do
|
29
|
+
type = stub 'type', :newparam => nil, :newproperty => nil, :ensurable => nil, :provide => nil, :desc => nil
|
30
|
+
|
31
|
+
Puppet::Type.expects(:newtype).with(:nagios_test).returns(type)
|
32
|
+
@module.create_nagios_type(:test)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should mark the created type as ensurable" do
|
36
|
+
type = stub 'type', :newparam => nil, :newproperty => nil, :provide => nil, :desc => nil
|
37
|
+
|
38
|
+
type.expects(:ensurable)
|
39
|
+
|
40
|
+
Puppet::Type.expects(:newtype).with(:nagios_test).returns(type)
|
41
|
+
@module.create_nagios_type(:test)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should create a namevar parameter for the nagios type's name parameter" do
|
45
|
+
type = stub 'type', :newproperty => nil, :ensurable => nil, :provide => nil, :desc => nil
|
46
|
+
|
47
|
+
type.expects(:newparam).with(:name, :namevar => true)
|
48
|
+
|
49
|
+
Puppet::Type.expects(:newtype).with(:nagios_test).returns(type)
|
50
|
+
@module.create_nagios_type(:test)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should create a property for all non-namevar parameters" do
|
54
|
+
type = stub 'type', :newparam => nil, :ensurable => nil, :provide => nil, :desc => nil
|
55
|
+
|
56
|
+
@nagtype.stubs(:parameters).returns([:one, :two])
|
57
|
+
|
58
|
+
type.expects(:newproperty).with(:one)
|
59
|
+
type.expects(:newproperty).with(:two)
|
60
|
+
type.expects(:newproperty).with(:target)
|
61
|
+
|
62
|
+
Puppet::Type.expects(:newtype).with(:nagios_test).returns(type)
|
63
|
+
@module.create_nagios_type(:test)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should skip parameters that start with integers" do
|
67
|
+
type = stub 'type', :newparam => nil, :ensurable => nil, :provide => nil, :desc => nil
|
68
|
+
|
69
|
+
@nagtype.stubs(:parameters).returns(["2dcoords".to_sym, :other])
|
70
|
+
|
71
|
+
type.expects(:newproperty).with(:other)
|
72
|
+
type.expects(:newproperty).with(:target)
|
73
|
+
|
74
|
+
Puppet::Type.expects(:newtype).with(:nagios_test).returns(type)
|
75
|
+
@module.create_nagios_type(:test)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should deduplicate the parameter list" do
|
79
|
+
type = stub 'type', :newparam => nil, :ensurable => nil, :provide => nil, :desc => nil
|
80
|
+
|
81
|
+
@nagtype.stubs(:parameters).returns([:one, :one])
|
82
|
+
|
83
|
+
type.expects(:newproperty).with(:one)
|
84
|
+
type.expects(:newproperty).with(:target)
|
85
|
+
|
86
|
+
Puppet::Type.expects(:newtype).with(:nagios_test).returns(type)
|
87
|
+
@module.create_nagios_type(:test)
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should create a target property" do
|
91
|
+
type = stub 'type', :newparam => nil, :ensurable => nil, :provide => nil, :desc => nil
|
92
|
+
|
93
|
+
type.expects(:newproperty).with(:target)
|
94
|
+
|
95
|
+
Puppet::Type.expects(:newtype).with(:nagios_test).returns(type)
|
96
|
+
@module.create_nagios_type(:test)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe Puppet::Util::NagiosMaker, " when creating the naginator provider" do
|
101
|
+
before do
|
102
|
+
@module = Puppet::Util::NagiosMaker
|
103
|
+
|
104
|
+
@nagtype = stub 'nagios type', :parameters => [], :namevar => :name
|
105
|
+
Nagios::Base.stubs(:type).with(:test).returns(@nagtype)
|
106
|
+
|
107
|
+
@type = stub 'type', :newparam => nil, :ensurable => nil, :newproperty => nil, :desc => nil
|
108
|
+
Puppet::Type.stubs(:newtype).with(:nagios_test).returns(@type)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should add a naginator provider" do
|
112
|
+
@type.expects(:provide).with { |name, options| name == :naginator }
|
113
|
+
|
114
|
+
@module.create_nagios_type(:test)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should set Puppet::Provider::Naginator as the parent class of the provider" do
|
118
|
+
@type.expects(:provide).with { |name, options| options[:parent] == Puppet::Provider::Naginator }
|
119
|
+
|
120
|
+
@module.create_nagios_type(:test)
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should use /etc/nagios/$name.cfg as the default target" do
|
124
|
+
@type.expects(:provide).with { |name, options| options[:default_target] == "/etc/nagios/nagios_test.cfg" }
|
125
|
+
|
126
|
+
@module.create_nagios_type(:test)
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,256 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
|
4
|
+
|
5
|
+
require 'puppet/util/posix'
|
6
|
+
|
7
|
+
class PosixTest
|
8
|
+
include Puppet::Util::POSIX
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Puppet::Util::POSIX do
|
12
|
+
before do
|
13
|
+
@posix = PosixTest.new
|
14
|
+
end
|
15
|
+
|
16
|
+
[:group, :gr].each do |name|
|
17
|
+
it "should return :gid as the field for %s" % name do
|
18
|
+
@posix.idfield(name).should == :gid
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should return :getgrgid as the id method for %s" % name do
|
22
|
+
@posix.methodbyid(name).should == :getgrgid
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should return :getgrnam as the name method for %s" % name do
|
26
|
+
@posix.methodbyname(name).should == :getgrnam
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
[:user, :pw, :passwd].each do |name|
|
31
|
+
it "should return :uid as the field for %s" % name do
|
32
|
+
@posix.idfield(name).should == :uid
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should return :getpwuid as the id method for %s" % name do
|
36
|
+
@posix.methodbyid(name).should == :getpwuid
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return :getpwnam as the name method for %s" % name do
|
40
|
+
@posix.methodbyname(name).should == :getpwnam
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "when retrieving a posix field" do
|
45
|
+
before do
|
46
|
+
@thing = stub 'thing', :field => "asdf"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should fail if no id was passed" do
|
50
|
+
lambda { @posix.get_posix_field("asdf", "bar", nil) }.should raise_error(Puppet::DevError)
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "and the id is an integer" do
|
54
|
+
it "should log an error and return nil if the specified id is greater than the maximum allowed ID" do
|
55
|
+
Puppet.settings.expects(:value).with(:maximum_uid).returns 100
|
56
|
+
Puppet.expects(:err)
|
57
|
+
|
58
|
+
@posix.get_posix_field("asdf", "bar", 200).should be_nil
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should use the method return by :methodbyid and return the specified field" do
|
62
|
+
Etc.expects(:getgrgid).returns @thing
|
63
|
+
|
64
|
+
@thing.expects(:field).returns "myval"
|
65
|
+
|
66
|
+
@posix.get_posix_field(:gr, :field, 200).should == "myval"
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should return nil if the method throws an exception" do
|
70
|
+
Etc.expects(:getgrgid).raises ArgumentError
|
71
|
+
|
72
|
+
@thing.expects(:field).never
|
73
|
+
|
74
|
+
@posix.get_posix_field(:gr, :field, 200).should be_nil
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "and the id is not an integer" do
|
79
|
+
it "should use the method return by :methodbyid and return the specified field" do
|
80
|
+
Etc.expects(:getgrnam).returns @thing
|
81
|
+
|
82
|
+
@thing.expects(:field).returns "myval"
|
83
|
+
|
84
|
+
@posix.get_posix_field(:gr, :field, "asdf").should == "myval"
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should return nil if the method throws an exception" do
|
88
|
+
Etc.expects(:getgrnam).raises ArgumentError
|
89
|
+
|
90
|
+
@thing.expects(:field).never
|
91
|
+
|
92
|
+
@posix.get_posix_field(:gr, :field, "asdf").should be_nil
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "when returning the gid" do
|
98
|
+
before do
|
99
|
+
@posix.stubs(:get_posix_field)
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "and the group is an integer" do
|
103
|
+
it "should convert integers specified as a string into an integer" do
|
104
|
+
@posix.expects(:get_posix_field).with(:group, :name, 100)
|
105
|
+
|
106
|
+
@posix.gid("100")
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should look up the name for the group" do
|
110
|
+
@posix.expects(:get_posix_field).with(:group, :name, 100)
|
111
|
+
|
112
|
+
@posix.gid(100)
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should return nil if the group cannot be found" do
|
116
|
+
@posix.expects(:get_posix_field).once.returns nil
|
117
|
+
@posix.expects(:search_posix_field).never
|
118
|
+
|
119
|
+
@posix.gid(100).should be_nil
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should use the found name to look up the id" do
|
123
|
+
@posix.expects(:get_posix_field).with(:group, :name, 100).returns "asdf"
|
124
|
+
@posix.expects(:get_posix_field).with(:group, :gid, "asdf").returns 100
|
125
|
+
|
126
|
+
@posix.gid(100).should == 100
|
127
|
+
end
|
128
|
+
|
129
|
+
# LAK: This is because some platforms have a broken Etc module that always return
|
130
|
+
# the same group.
|
131
|
+
it "should use :search_posix_field if the discovered id does not match the passed-in id" do
|
132
|
+
@posix.expects(:get_posix_field).with(:group, :name, 100).returns "asdf"
|
133
|
+
@posix.expects(:get_posix_field).with(:group, :gid, "asdf").returns 50
|
134
|
+
|
135
|
+
@posix.expects(:search_posix_field).with(:group, :gid, 100).returns "asdf"
|
136
|
+
|
137
|
+
@posix.gid(100).should == "asdf"
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
describe "and the group is a string" do
|
142
|
+
it "should look up the gid for the group" do
|
143
|
+
@posix.expects(:get_posix_field).with(:group, :gid, "asdf")
|
144
|
+
|
145
|
+
@posix.gid("asdf")
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should return nil if the group cannot be found" do
|
149
|
+
@posix.expects(:get_posix_field).once.returns nil
|
150
|
+
@posix.expects(:search_posix_field).never
|
151
|
+
|
152
|
+
@posix.gid("asdf").should be_nil
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should use the found gid to look up the nam" do
|
156
|
+
@posix.expects(:get_posix_field).with(:group, :gid, "asdf").returns 100
|
157
|
+
@posix.expects(:get_posix_field).with(:group, :name, 100).returns "asdf"
|
158
|
+
|
159
|
+
@posix.gid("asdf").should == 100
|
160
|
+
end
|
161
|
+
|
162
|
+
it "should use :search_posix_field if the discovered name does not match the passed-in name" do
|
163
|
+
@posix.expects(:get_posix_field).with(:group, :gid, "asdf").returns 100
|
164
|
+
@posix.expects(:get_posix_field).with(:group, :name, 100).returns "boo"
|
165
|
+
|
166
|
+
@posix.expects(:search_posix_field).with(:group, :gid, "asdf").returns "asdf"
|
167
|
+
|
168
|
+
@posix.gid("asdf").should == "asdf"
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
describe "when returning the uid" do
|
174
|
+
before do
|
175
|
+
@posix.stubs(:get_posix_field)
|
176
|
+
end
|
177
|
+
|
178
|
+
describe "and the group is an integer" do
|
179
|
+
it "should convert integers specified as a string into an integer" do
|
180
|
+
@posix.expects(:get_posix_field).with(:passwd, :name, 100)
|
181
|
+
|
182
|
+
@posix.uid("100")
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should look up the name for the group" do
|
186
|
+
@posix.expects(:get_posix_field).with(:passwd, :name, 100)
|
187
|
+
|
188
|
+
@posix.uid(100)
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should return nil if the group cannot be found" do
|
192
|
+
@posix.expects(:get_posix_field).once.returns nil
|
193
|
+
@posix.expects(:search_posix_field).never
|
194
|
+
|
195
|
+
@posix.uid(100).should be_nil
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should use the found name to look up the id" do
|
199
|
+
@posix.expects(:get_posix_field).with(:passwd, :name, 100).returns "asdf"
|
200
|
+
@posix.expects(:get_posix_field).with(:passwd, :uid, "asdf").returns 100
|
201
|
+
|
202
|
+
@posix.uid(100).should == 100
|
203
|
+
end
|
204
|
+
|
205
|
+
# LAK: This is because some platforms have a broken Etc module that always return
|
206
|
+
# the same group.
|
207
|
+
it "should use :search_posix_field if the discovered id does not match the passed-in id" do
|
208
|
+
@posix.expects(:get_posix_field).with(:passwd, :name, 100).returns "asdf"
|
209
|
+
@posix.expects(:get_posix_field).with(:passwd, :uid, "asdf").returns 50
|
210
|
+
|
211
|
+
@posix.expects(:search_posix_field).with(:passwd, :uid, 100).returns "asdf"
|
212
|
+
|
213
|
+
@posix.uid(100).should == "asdf"
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
describe "and the group is a string" do
|
218
|
+
it "should look up the uid for the group" do
|
219
|
+
@posix.expects(:get_posix_field).with(:passwd, :uid, "asdf")
|
220
|
+
|
221
|
+
@posix.uid("asdf")
|
222
|
+
end
|
223
|
+
|
224
|
+
it "should return nil if the group cannot be found" do
|
225
|
+
@posix.expects(:get_posix_field).once.returns nil
|
226
|
+
@posix.expects(:search_posix_field).never
|
227
|
+
|
228
|
+
@posix.uid("asdf").should be_nil
|
229
|
+
end
|
230
|
+
|
231
|
+
it "should use the found uid to look up the nam" do
|
232
|
+
@posix.expects(:get_posix_field).with(:passwd, :uid, "asdf").returns 100
|
233
|
+
@posix.expects(:get_posix_field).with(:passwd, :name, 100).returns "asdf"
|
234
|
+
|
235
|
+
@posix.uid("asdf").should == 100
|
236
|
+
end
|
237
|
+
|
238
|
+
it "should use :search_posix_field if the discovered name does not match the passed-in name" do
|
239
|
+
@posix.expects(:get_posix_field).with(:passwd, :uid, "asdf").returns 100
|
240
|
+
@posix.expects(:get_posix_field).with(:passwd, :name, 100).returns "boo"
|
241
|
+
|
242
|
+
@posix.expects(:search_posix_field).with(:passwd, :uid, "asdf").returns "asdf"
|
243
|
+
|
244
|
+
@posix.uid("asdf").should == "asdf"
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
it "should be able to iteratively search for posix values" do
|
250
|
+
@posix.should respond_to(:search_posix_field)
|
251
|
+
end
|
252
|
+
|
253
|
+
describe "when searching for posix values iteratively" do
|
254
|
+
it "should iterate across all of the structs returned by Etc and return the appropriate field from the first matching value"
|
255
|
+
end
|
256
|
+
end
|