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,135 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/file_serving/configuration/parser'
|
6
|
+
|
7
|
+
describe Puppet::FileServing::Configuration::Parser do
|
8
|
+
it "should subclass the LoadedFile class" do
|
9
|
+
Puppet::FileServing::Configuration::Parser.superclass.should equal(Puppet::Util::LoadedFile)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
module FSConfigurationParserTesting
|
15
|
+
def mock_file_content(content)
|
16
|
+
# We want an array, but we actually want our carriage returns on all of it.
|
17
|
+
lines = content.split("\n").collect { |l| l + "\n" }
|
18
|
+
@filehandle.stubs(:each).multiple_yields(*lines)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe Puppet::FileServing::Configuration::Parser do
|
23
|
+
before :each do
|
24
|
+
@path = "/my/config.conf"
|
25
|
+
FileTest.stubs(:exists?).with(@path).returns(true)
|
26
|
+
FileTest.stubs(:readable?).with(@path).returns(true)
|
27
|
+
@filehandle = mock 'filehandle'
|
28
|
+
File.expects(:open).with(@path).yields(@filehandle)
|
29
|
+
@parser = Puppet::FileServing::Configuration::Parser.new(@path)
|
30
|
+
end
|
31
|
+
|
32
|
+
describe Puppet::FileServing::Configuration::Parser, " when parsing" do
|
33
|
+
include FSConfigurationParserTesting
|
34
|
+
|
35
|
+
before do
|
36
|
+
@parser.stubs(:add_modules_mount)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should allow comments" do
|
40
|
+
@filehandle.expects(:each).yields("# this is a comment\n")
|
41
|
+
proc { @parser.parse }.should_not raise_error
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should allow blank lines" do
|
45
|
+
@filehandle.expects(:each).yields("\n")
|
46
|
+
proc { @parser.parse }.should_not raise_error
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should create a new mount for each section in the configuration" do
|
50
|
+
mount1 = mock 'one'
|
51
|
+
mount2 = mock 'two'
|
52
|
+
Puppet::FileServing::Mount.expects(:new).with("one").returns(mount1)
|
53
|
+
Puppet::FileServing::Mount.expects(:new).with("two").returns(mount2)
|
54
|
+
mock_file_content "[one]\n[two]\n"
|
55
|
+
@parser.parse
|
56
|
+
end
|
57
|
+
|
58
|
+
# This test is almost the exact same as the previous one.
|
59
|
+
it "should return a hash of the created mounts" do
|
60
|
+
mount1 = mock 'one'
|
61
|
+
mount2 = mock 'two'
|
62
|
+
Puppet::FileServing::Mount.expects(:new).with("one").returns(mount1)
|
63
|
+
Puppet::FileServing::Mount.expects(:new).with("two").returns(mount2)
|
64
|
+
mock_file_content "[one]\n[two]\n"
|
65
|
+
|
66
|
+
@parser.parse.should == {"one" => mount1, "two" => mount2}
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should only allow mount names that are alphanumeric plus dashes" do
|
70
|
+
mock_file_content "[a*b]\n"
|
71
|
+
proc { @parser.parse }.should raise_error(ArgumentError)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should fail if the value for path/allow/deny starts with an equals sign" do
|
75
|
+
mock_file_content "[one]\npath = /testing"
|
76
|
+
proc { @parser.parse }.should raise_error(ArgumentError)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe Puppet::FileServing::Configuration::Parser, " when parsing mount attributes" do
|
81
|
+
include FSConfigurationParserTesting
|
82
|
+
|
83
|
+
before do
|
84
|
+
@mount = stub 'mount', :name => "one"
|
85
|
+
Puppet::FileServing::Mount.expects(:new).with("one").returns(@mount)
|
86
|
+
@parser.stubs(:add_modules_mount)
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should set the mount path to the path attribute from that section" do
|
90
|
+
mock_file_content "[one]\npath /some/path\n"
|
91
|
+
|
92
|
+
@mount.expects(:path=).with("/some/path")
|
93
|
+
@parser.parse
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should tell the mount to allow any allow values from the section" do
|
97
|
+
mock_file_content "[one]\nallow something\n"
|
98
|
+
|
99
|
+
@mount.expects(:info)
|
100
|
+
@mount.expects(:allow).with("something")
|
101
|
+
@parser.parse
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should tell the mount to deny any deny values from the section" do
|
105
|
+
mock_file_content "[one]\ndeny something\n"
|
106
|
+
|
107
|
+
@mount.expects(:info)
|
108
|
+
@mount.expects(:deny).with("something")
|
109
|
+
@parser.parse
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should fail on any attributes other than path, allow, and deny" do
|
113
|
+
mock_file_content "[one]\ndo something\n"
|
114
|
+
|
115
|
+
proc { @parser.parse }.should raise_error(ArgumentError)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe Puppet::FileServing::Configuration::Parser, " when parsing the modules mount" do
|
120
|
+
include FSConfigurationParserTesting
|
121
|
+
|
122
|
+
before do
|
123
|
+
@mount = stub 'mount', :name => "modules"
|
124
|
+
Puppet::FileServing::Mount.expects(:new).with("modules").returns(@mount)
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should warn if a path is set" do
|
128
|
+
mock_file_content "[modules]\npath /some/path\n"
|
129
|
+
|
130
|
+
@modules.expects(:path=).never
|
131
|
+
Puppet.expects(:warning)
|
132
|
+
@parser.parse
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/file_serving/content'
|
6
|
+
|
7
|
+
describe Puppet::FileServing::Content do
|
8
|
+
it "should should be a subclass of FileBase" do
|
9
|
+
Puppet::FileServing::Content.superclass.should equal(Puppet::FileServing::FileBase)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should indirect file_content" do
|
13
|
+
Puppet::FileServing::Content.indirection.name.should == :file_content
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should should include the IndirectionHooks module in its indirection" do
|
17
|
+
Puppet::FileServing::Content.indirection.metaclass.included_modules.should include(Puppet::FileServing::IndirectionHooks)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe Puppet::FileServing::Content, " when returning the contents" do
|
22
|
+
before do
|
23
|
+
@path = "/my/base"
|
24
|
+
@content = Puppet::FileServing::Content.new("sub/path", :links => :follow, :path => @path)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should fail if the file is a symlink and links are set to :manage" do
|
28
|
+
@content.links = :manage
|
29
|
+
File.expects(:lstat).with(@path).returns stub("stat", :ftype => "symlink")
|
30
|
+
proc { @content.content }.should raise_error(ArgumentError)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should fail if a path is not set" do
|
34
|
+
proc { @content.content() }.should raise_error(Errno::ENOENT)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should raise Errno::ENOENT if the file is absent" do
|
38
|
+
@content.path = "/there/is/absolutely/no/chance/that/this/path/exists"
|
39
|
+
proc { @content.content() }.should raise_error(Errno::ENOENT)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should return the contents of the path if the file exists" do
|
43
|
+
File.expects(:stat).with(@path).returns stub("stat", :ftype => "file")
|
44
|
+
File.expects(:read).with(@path).returns(:mycontent)
|
45
|
+
@content.content.should == :mycontent
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe Puppet::FileServing::Content, " when converting to yaml" do
|
50
|
+
it "should fail if no path has been set" do
|
51
|
+
@content = Puppet::FileServing::Content.new("some/key")
|
52
|
+
proc { @content.to_yaml }.should raise_error(ArgumentError)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should return the file contents" do
|
56
|
+
@content = Puppet::FileServing::Content.new("some/path")
|
57
|
+
@content.path = "/base/path"
|
58
|
+
@content.expects(:content).returns(:content)
|
59
|
+
@content.to_yaml.should == :content
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe Puppet::FileServing::Content, " when converting from yaml" do
|
64
|
+
# LAK:FIXME This isn't in the right place, but we need some kind of
|
65
|
+
# control somewhere that requires that all REST connections only pull
|
66
|
+
# from the file-server, thus guaranteeing they go through our authorization
|
67
|
+
# hook.
|
68
|
+
it "should set the URI scheme to 'puppetmounts'" do
|
69
|
+
pending "We need to figure out where this should be"
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/file_serving/file_base'
|
6
|
+
|
7
|
+
describe Puppet::FileServing::FileBase do
|
8
|
+
it "should accept a key in the form of a URI" do
|
9
|
+
Puppet::FileServing::FileBase.new("puppet://host/module/dir/file").key.should == "puppet://host/module/dir/file"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should allow specification of whether links should be managed" do
|
13
|
+
Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :manage).links.should == :manage
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should consider :ignore links equivalent to :manage links" do
|
17
|
+
Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :ignore).links.should == :manage
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should fail if :links is set to anything other than :manage, :follow, or :ignore" do
|
21
|
+
proc { Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :links => :else) }.should raise_error(ArgumentError)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should default to :manage for :links" do
|
25
|
+
Puppet::FileServing::FileBase.new("puppet://host/module/dir/file").links.should == :manage
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should allow specification of a path" do
|
29
|
+
FileTest.stubs(:exists?).returns(true)
|
30
|
+
Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :path => "/my/file").path.should == "/my/file"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should allow specification of a relative path" do
|
34
|
+
FileTest.stubs(:exists?).returns(true)
|
35
|
+
Puppet::FileServing::FileBase.new("puppet://host/module/dir/file", :relative_path => "my/file").relative_path.should == "my/file"
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should have a means of determining if the file exists" do
|
39
|
+
Puppet::FileServing::FileBase.new("blah").should respond_to(:exist?)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should correctly indicate if the file is present" do
|
43
|
+
File.expects(:lstat).with("/my/file").returns(mock("stat"))
|
44
|
+
Puppet::FileServing::FileBase.new("blah", :path => "/my/file").exist?.should be_true
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should correctly indicate if the file is asbsent" do
|
48
|
+
File.expects(:lstat).with("/my/file").raises RuntimeError
|
49
|
+
Puppet::FileServing::FileBase.new("blah", :path => "/my/file").exist?.should be_false
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "when setting the base path" do
|
53
|
+
before do
|
54
|
+
@file = Puppet::FileServing::FileBase.new("puppet://host/module/dir/file")
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should require that the base path be fully qualified" do
|
58
|
+
FileTest.stubs(:exists?).returns(true)
|
59
|
+
proc { @file.path = "unqualified/file" }.should raise_error(ArgumentError)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "when setting the relative path" do
|
64
|
+
it "should require that the relative path be unqualified" do
|
65
|
+
@file = Puppet::FileServing::FileBase.new("puppet://host/module/dir/file")
|
66
|
+
FileTest.stubs(:exists?).returns(true)
|
67
|
+
proc { @file.relative_path = "/qualified/file" }.should raise_error(ArgumentError)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "when determining the full file path" do
|
72
|
+
before do
|
73
|
+
@file = Puppet::FileServing::FileBase.new("mykey", :path => "/this/file")
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should return the path if there is no relative path" do
|
77
|
+
@file.full_path.should == "/this/file"
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should return the path if the relative_path is set to ''" do
|
81
|
+
@file.relative_path = ""
|
82
|
+
@file.full_path.should == "/this/file"
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should return the path joined with the relative path if there is a relative path and it is not set to '/' or ''" do
|
86
|
+
@file.relative_path = "not/qualified"
|
87
|
+
@file.full_path.should == "/this/file/not/qualified"
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should should fail if there is no path set" do
|
91
|
+
@file = Puppet::FileServing::FileBase.new("not/qualified")
|
92
|
+
proc { @file.full_path }.should raise_error(ArgumentError)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "when stat'ing files" do
|
97
|
+
before do
|
98
|
+
@file = Puppet::FileServing::FileBase.new("mykey", :path => "/this/file")
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should stat the file's full path" do
|
102
|
+
@file.stubs(:full_path).returns("/this/file")
|
103
|
+
File.expects(:lstat).with("/this/file").returns stub("stat", :ftype => "file")
|
104
|
+
@file.stat
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should fail if the file does not exist" do
|
108
|
+
@file.stubs(:full_path).returns("/this/file")
|
109
|
+
File.expects(:lstat).with("/this/file").raises(Errno::ENOENT)
|
110
|
+
proc { @file.stat }.should raise_error(Errno::ENOENT)
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should use :lstat if :links is set to :manage" do
|
114
|
+
File.expects(:lstat).with("/this/file").returns stub("stat", :ftype => "file")
|
115
|
+
@file.stat
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should use :stat if :links is set to :follow" do
|
119
|
+
File.expects(:stat).with("/this/file").returns stub("stat", :ftype => "file")
|
120
|
+
@file.links = :follow
|
121
|
+
@file.stat
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,239 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/file_serving/fileset'
|
6
|
+
|
7
|
+
describe Puppet::FileServing::Fileset, " when initializing" do
|
8
|
+
it "should require a path" do
|
9
|
+
proc { Puppet::FileServing::Fileset.new }.should raise_error(ArgumentError)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should fail if its path is not fully qualified" do
|
13
|
+
proc { Puppet::FileServing::Fileset.new("some/file") }.should raise_error(ArgumentError)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should fail if its path does not exist" do
|
17
|
+
File.expects(:lstat).with("/some/file").returns nil
|
18
|
+
proc { Puppet::FileServing::Fileset.new("/some/file") }.should raise_error(ArgumentError)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should accept a 'recurse' option" do
|
22
|
+
File.expects(:lstat).with("/some/file").returns stub("stat")
|
23
|
+
set = Puppet::FileServing::Fileset.new("/some/file", :recurse => true)
|
24
|
+
set.recurse.should be_true
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should accept an 'ignore' option" do
|
28
|
+
File.expects(:lstat).with("/some/file").returns stub("stat")
|
29
|
+
set = Puppet::FileServing::Fileset.new("/some/file", :ignore => ".svn")
|
30
|
+
set.ignore.should == [".svn"]
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should accept a 'links' option" do
|
34
|
+
File.expects(:lstat).with("/some/file").returns stub("stat")
|
35
|
+
set = Puppet::FileServing::Fileset.new("/some/file", :links => :manage)
|
36
|
+
set.links.should == :manage
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should fail if 'links' is set to anything other than :manage or :follow" do
|
40
|
+
proc { Puppet::FileServing::Fileset.new("/some/file", :links => :whatever) }.should raise_error(ArgumentError)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should default to 'false' for recurse" do
|
44
|
+
File.expects(:lstat).with("/some/file").returns stub("stat")
|
45
|
+
Puppet::FileServing::Fileset.new("/some/file").recurse.should == false
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should default to an empty ignore list" do
|
49
|
+
File.expects(:lstat).with("/some/file").returns stub("stat")
|
50
|
+
Puppet::FileServing::Fileset.new("/some/file").ignore.should == []
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should default to :manage for links" do
|
54
|
+
File.expects(:lstat).with("/some/file").returns stub("stat")
|
55
|
+
Puppet::FileServing::Fileset.new("/some/file").links.should == :manage
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe Puppet::FileServing::Fileset, " when determining whether to recurse" do
|
60
|
+
before do
|
61
|
+
@path = "/my/path"
|
62
|
+
File.expects(:lstat).with(@path).returns stub("stat")
|
63
|
+
@fileset = Puppet::FileServing::Fileset.new(@path)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should always recurse if :recurse is set to 'true'" do
|
67
|
+
@fileset.recurse = true
|
68
|
+
@fileset.recurse?(0).should be_true
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should never recurse if :recurse is set to 'false'" do
|
72
|
+
@fileset.recurse = false
|
73
|
+
@fileset.recurse?(-1).should be_false
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should recurse if :recurse is set to an integer and the current depth is less than that integer" do
|
77
|
+
@fileset.recurse = 1
|
78
|
+
@fileset.recurse?(0).should be_true
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should recurse if :recurse is set to an integer and the current depth is equal to that integer" do
|
82
|
+
@fileset.recurse = 1
|
83
|
+
@fileset.recurse?(1).should be_true
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should not recurse if :recurse is set to an integer and the current depth is greater than that integer" do
|
87
|
+
@fileset.recurse = 1
|
88
|
+
@fileset.recurse?(2).should be_false
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should not recurse if :recurse is set to 0" do
|
92
|
+
@fileset.recurse = 0
|
93
|
+
@fileset.recurse?(-1).should be_false
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe Puppet::FileServing::Fileset, " when recursing" do
|
98
|
+
before do
|
99
|
+
@path = "/my/path"
|
100
|
+
File.expects(:lstat).with(@path).returns stub("stat", :directory? => true)
|
101
|
+
@fileset = Puppet::FileServing::Fileset.new(@path)
|
102
|
+
|
103
|
+
@dirstat = stub 'dirstat', :directory? => true
|
104
|
+
@filestat = stub 'filestat', :directory? => false
|
105
|
+
end
|
106
|
+
|
107
|
+
def mock_dir_structure(path, stat_method = :lstat)
|
108
|
+
File.stubs(stat_method).with(path).returns(@dirstat)
|
109
|
+
Dir.stubs(:entries).with(path).returns(%w{one two .svn CVS})
|
110
|
+
|
111
|
+
# Keep track of the files we're stubbing.
|
112
|
+
@files = %w{.}
|
113
|
+
|
114
|
+
%w{one two .svn CVS}.each do |subdir|
|
115
|
+
@files << subdir # relative path
|
116
|
+
subpath = File.join(path, subdir)
|
117
|
+
File.stubs(stat_method).with(subpath).returns(@dirstat)
|
118
|
+
Dir.stubs(:entries).with(subpath).returns(%w{.svn CVS file1 file2})
|
119
|
+
%w{file1 file2 .svn CVS}.each do |file|
|
120
|
+
@files << File.join(subdir, file) # relative path
|
121
|
+
File.stubs(stat_method).with(File.join(subpath, file)).returns(@filestat)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should recurse through the whole file tree if :recurse is set to 'true'" do
|
127
|
+
mock_dir_structure(@path)
|
128
|
+
@fileset.stubs(:recurse?).returns(true)
|
129
|
+
@fileset.files.sort.should == @files.sort
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should not recurse if :recurse is set to 'false'" do
|
133
|
+
mock_dir_structure(@path)
|
134
|
+
@fileset.stubs(:recurse?).returns(false)
|
135
|
+
@fileset.files.should == %w{.}
|
136
|
+
end
|
137
|
+
|
138
|
+
# It seems like I should stub :recurse? here, or that I shouldn't stub the
|
139
|
+
# examples above, but...
|
140
|
+
it "should recurse to the level set if :recurse is set to an integer" do
|
141
|
+
mock_dir_structure(@path)
|
142
|
+
@fileset.recurse = 1
|
143
|
+
@fileset.files.should == %w{. one two .svn CVS}
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should ignore the '.' and '..' directories in subdirectories" do
|
147
|
+
mock_dir_structure(@path)
|
148
|
+
@fileset.recurse = true
|
149
|
+
@fileset.files.sort.should == @files.sort
|
150
|
+
end
|
151
|
+
|
152
|
+
it "should ignore files that match a single pattern in the ignore list" do
|
153
|
+
mock_dir_structure(@path)
|
154
|
+
@fileset.recurse = true
|
155
|
+
@fileset.ignore = ".svn"
|
156
|
+
@fileset.files.find { |file| file.include?(".svn") }.should be_nil
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should ignore files that match any of multiple patterns in the ignore list" do
|
160
|
+
mock_dir_structure(@path)
|
161
|
+
@fileset.recurse = true
|
162
|
+
@fileset.ignore = %w{.svn CVS}
|
163
|
+
@fileset.files.find { |file| file.include?(".svn") or file.include?("CVS") }.should be_nil
|
164
|
+
end
|
165
|
+
|
166
|
+
it "should use File.stat if :links is set to :follow" do
|
167
|
+
mock_dir_structure(@path, :stat)
|
168
|
+
@fileset.recurse = true
|
169
|
+
@fileset.links = :follow
|
170
|
+
@fileset.files.sort.should == @files.sort
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should use File.lstat if :links is set to :manage" do
|
174
|
+
mock_dir_structure(@path, :lstat)
|
175
|
+
@fileset.recurse = true
|
176
|
+
@fileset.links = :manage
|
177
|
+
@fileset.files.sort.should == @files.sort
|
178
|
+
end
|
179
|
+
|
180
|
+
it "should succeed when paths have regexp significant characters" do
|
181
|
+
@path = "/my/path/rV1x2DafFr0R6tGG+1bbk++++TM"
|
182
|
+
File.expects(:lstat).with(@path).returns stub("stat", :directory? => true)
|
183
|
+
@fileset = Puppet::FileServing::Fileset.new(@path)
|
184
|
+
mock_dir_structure(@path)
|
185
|
+
@fileset.recurse = true
|
186
|
+
@fileset.files.sort.should == @files.sort
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
describe Puppet::FileServing::Fileset, " when following links that point to missing files" do
|
191
|
+
before do
|
192
|
+
@path = "/my/path"
|
193
|
+
File.expects(:lstat).with(@path).returns stub("stat", :directory? => true)
|
194
|
+
@fileset = Puppet::FileServing::Fileset.new(@path)
|
195
|
+
@fileset.links = :follow
|
196
|
+
@fileset.recurse = true
|
197
|
+
|
198
|
+
@stat = stub 'stat', :directory? => true
|
199
|
+
|
200
|
+
File.expects(:stat).with(@path).returns(@stat)
|
201
|
+
File.expects(:stat).with(File.join(@path, "mylink")).raises(Errno::ENOENT)
|
202
|
+
Dir.stubs(:entries).with(@path).returns(["mylink"])
|
203
|
+
end
|
204
|
+
|
205
|
+
it "should not fail" do
|
206
|
+
proc { @fileset.files }.should_not raise_error
|
207
|
+
end
|
208
|
+
|
209
|
+
it "should still manage the link" do
|
210
|
+
@fileset.files.sort.should == %w{. mylink}.sort
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
describe Puppet::FileServing::Fileset, " when ignoring" do
|
215
|
+
before do
|
216
|
+
@path = "/my/path"
|
217
|
+
File.expects(:lstat).with(@path).returns stub("stat", :directory? => true)
|
218
|
+
@fileset = Puppet::FileServing::Fileset.new(@path)
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should use ruby's globbing to determine what files should be ignored" do
|
222
|
+
@fileset.ignore = ".svn"
|
223
|
+
File.expects(:fnmatch?).with(".svn", "my_file")
|
224
|
+
@fileset.ignore?("my_file")
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should ignore files whose paths match a single provided ignore value" do
|
228
|
+
@fileset.ignore = ".svn"
|
229
|
+
File.stubs(:fnmatch?).with(".svn", "my_file").returns true
|
230
|
+
@fileset.ignore?("my_file").should be_true
|
231
|
+
end
|
232
|
+
|
233
|
+
it "should ignore files whose paths match any of multiple provided ignore values" do
|
234
|
+
@fileset.ignore = [".svn", "CVS"]
|
235
|
+
File.stubs(:fnmatch?).with(".svn", "my_file").returns false
|
236
|
+
File.stubs(:fnmatch?).with("CVS", "my_file").returns true
|
237
|
+
@fileset.ignore?("my_file").should be_true
|
238
|
+
end
|
239
|
+
end
|