puppet 0.23.0 → 0.23.1
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 +58 -0
- data/Rakefile +1 -1
- data/bin/filebucket +6 -6
- data/bin/puppetca +11 -1
- data/bin/puppetmasterd +7 -6
- data/conf/redhat/client.init +1 -0
- data/conf/redhat/{puppetd.conf → puppet.conf} +1 -1
- data/conf/redhat/puppet.spec +43 -31
- data/conf/redhat/server.init +1 -0
- data/lib/puppet.rb +3 -3
- data/lib/puppet/configuration.rb +16 -5
- data/lib/puppet/metatype/attributes.rb +12 -19
- data/lib/puppet/metatype/evaluation.rb +10 -1
- data/lib/puppet/metatype/instances.rb +39 -15
- data/lib/puppet/metatype/manager.rb +1 -28
- data/lib/puppet/metatype/metaparams.rb +20 -16
- data/lib/puppet/metatype/providers.rb +8 -2
- data/lib/puppet/metatype/schedules.rb +14 -19
- data/lib/puppet/{modules.rb → module.rb} +2 -0
- data/lib/puppet/network/authstore.rb +5 -1
- data/lib/puppet/network/client/dipper.rb +2 -2
- data/lib/puppet/network/client/master.rb +18 -9
- data/lib/puppet/network/handler/fileserver.rb +3 -6
- data/lib/puppet/network/handler/report.rb +2 -1
- data/lib/puppet/network/server/mongrel.rb +4 -2
- data/lib/puppet/network/xmlrpc/client.rb +10 -3
- data/lib/puppet/parameter.rb +11 -4
- data/lib/puppet/parser/ast/collexpr.rb +10 -10
- data/lib/puppet/parser/ast/hostclass.rb +2 -2
- data/lib/puppet/parser/ast/resourceparam.rb +4 -3
- data/lib/puppet/parser/ast/resourceref.rb +16 -2
- data/lib/puppet/parser/collector.rb +8 -4
- data/lib/puppet/parser/functions.rb +5 -2
- data/lib/puppet/parser/interpreter.rb +48 -9
- data/lib/puppet/parser/lexer.rb +2 -1
- data/lib/puppet/parser/parser.rb +669 -589
- data/lib/puppet/parser/resource.rb +20 -11
- data/lib/puppet/parser/resource/param.rb +21 -10
- data/lib/puppet/parser/resource/reference.rb +2 -2
- data/lib/puppet/parser/scope.rb +22 -10
- data/lib/puppet/{type/property.rb → property.rb} +48 -15
- data/lib/puppet/propertychange.rb +3 -3
- data/lib/puppet/provider/cron/crontab.rb +38 -36
- data/lib/puppet/provider/host/netinfo.rb +1 -2
- data/lib/puppet/provider/mailalias/aliases.rb +31 -0
- data/lib/puppet/provider/maillist/mailman.rb +113 -0
- data/lib/puppet/provider/mount.rb +5 -11
- data/lib/puppet/provider/mount/parsed.rb +2 -2
- data/lib/puppet/provider/package/appdmg.rb +1 -2
- data/lib/puppet/provider/package/apt.rb +3 -1
- data/lib/puppet/provider/package/aptrpm.rb +14 -4
- data/lib/puppet/provider/package/blastwave.rb +6 -4
- data/lib/puppet/provider/package/dpkg.rb +12 -4
- data/lib/puppet/provider/package/pkgdmg.rb +2 -2
- data/lib/puppet/provider/package/rpm.rb +11 -1
- data/lib/puppet/provider/package/rug.rb +1 -0
- data/lib/puppet/provider/package/urpmi.rb +11 -1
- data/lib/puppet/provider/package/yum.rb +12 -2
- data/lib/puppet/provider/parsedfile.rb +36 -6
- data/lib/puppet/rails.rb +9 -2
- data/lib/puppet/rails/param_name.rb +2 -3
- data/lib/puppet/rails/param_value.rb +20 -1
- data/lib/puppet/rails/resource.rb +8 -2
- data/lib/puppet/reference/configuration.rb +14 -16
- data/lib/puppet/reference/type.rb +4 -4
- data/lib/puppet/transaction.rb +4 -4
- data/lib/puppet/type.rb +19 -6
- data/lib/puppet/type/component.rb +9 -3
- data/lib/puppet/type/cron.rb +10 -4
- data/lib/puppet/type/exec.rb +9 -5
- data/lib/puppet/type/group.rb +2 -3
- data/lib/puppet/type/mailalias.rb +50 -0
- data/lib/puppet/type/maillist.rb +57 -0
- data/lib/puppet/type/mount.rb +25 -11
- data/lib/puppet/type/package.rb +6 -27
- data/lib/puppet/type/pfile.rb +5 -6
- data/lib/puppet/type/pfile/source.rb +8 -2
- data/lib/puppet/type/pfilebucket.rb +4 -3
- data/lib/puppet/type/resources.rb +1 -3
- data/lib/puppet/type/schedule.rb +16 -16
- data/lib/puppet/type/service.rb +4 -1
- data/lib/puppet/type/tidy.rb +1 -2
- data/lib/puppet/type/user.rb +2 -3
- data/lib/puppet/type/yumrepo.rb +2 -2
- data/lib/puppet/util.rb +29 -4
- data/lib/puppet/util/autoload.rb +45 -16
- data/lib/puppet/util/fileparsing.rb +23 -6
- data/lib/puppet/util/filetype.rb +12 -1
- data/lib/puppet/util/log.rb +2 -2
- data/lib/puppet/util/log_paths.rb +16 -0
- data/lib/puppet/util/reference.rb +2 -2
- data/test/language/ast/hostclass.rb +21 -4
- data/test/language/ast/resourceref.rb +95 -0
- data/test/language/functions.rb +5 -5
- data/test/language/interpreter.rb +129 -1
- data/test/language/node.rb +13 -2
- data/test/language/resource.rb +26 -1
- data/test/language/scope.rb +25 -5
- data/test/lib/puppettest/support/collection.rb +2 -2
- data/test/network/client/master.rb +28 -42
- data/test/network/server/mongrel_test.rb +7 -1
- data/test/other/propertychange.rb +2 -2
- data/test/other/transactions.rb +44 -5
- data/test/puppet/modules.rb +2 -1
- data/test/rails/ast.rb +7 -8
- data/test/rails/collection.rb +2 -2
- data/test/rails/railsresource.rb +21 -5
- data/test/ral/manager/attributes.rb +33 -1
- data/test/ral/manager/instances.rb +33 -6
- data/test/ral/manager/type.rb +29 -49
- data/test/ral/providers/cron/crontab.rb +61 -13
- data/test/ral/providers/mailalias/aliases.rb +57 -0
- data/test/ral/providers/mount/parsed.rb +4 -4
- data/test/ral/providers/package/apt.rb +13 -1
- data/test/ral/providers/parsedfile.rb +20 -7
- data/test/ral/types/cron.rb +17 -1
- data/test/ral/types/mailalias.rb +50 -0
- data/test/ral/types/mount.rb +35 -2
- data/test/ral/types/package.rb +10 -2
- data/test/ral/types/parameter.rb +4 -4
- data/test/ral/types/property.rb +39 -1
- data/test/util/autoload.rb +33 -18
- data/test/util/filetype.rb +49 -3
- metadata +13 -6
- data/lib/puppet/element.rb +0 -52
@@ -0,0 +1,57 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift("../../../lib") if __FILE__ =~ /\.rb$/
|
4
|
+
|
5
|
+
require 'puppettest'
|
6
|
+
require 'puppettest/fileparsing'
|
7
|
+
require 'puppet/type/mailalias'
|
8
|
+
|
9
|
+
class TestMailaliasAliasesProvider < Test::Unit::TestCase
|
10
|
+
include PuppetTest
|
11
|
+
include PuppetTest::FileParsing
|
12
|
+
|
13
|
+
def setup
|
14
|
+
super
|
15
|
+
@provider = Puppet.type(:mailalias).provider(:aliases)
|
16
|
+
|
17
|
+
@oldfiletype = @provider.filetype
|
18
|
+
|
19
|
+
@alias = mkalias
|
20
|
+
end
|
21
|
+
|
22
|
+
def teardown
|
23
|
+
Puppet::Util::FileType.filetype(:ram).clear
|
24
|
+
@provider.filetype = @oldfiletype
|
25
|
+
@provider.clear
|
26
|
+
super
|
27
|
+
end
|
28
|
+
|
29
|
+
def mkalias(name = "me")
|
30
|
+
if defined? @pcount
|
31
|
+
@pcount += 1
|
32
|
+
else
|
33
|
+
@pcount = 1
|
34
|
+
end
|
35
|
+
args = {
|
36
|
+
:name => name,
|
37
|
+
:recipient => %w{here there}
|
38
|
+
}
|
39
|
+
|
40
|
+
fakeresource = fakeresource(:mailalias, args[:name])
|
41
|
+
|
42
|
+
key = @provider.new(fakeresource)
|
43
|
+
args.each do |p,v|
|
44
|
+
key.send(p.to_s + "=", v)
|
45
|
+
end
|
46
|
+
|
47
|
+
return key
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_data_parsing_and_generating
|
51
|
+
fakedata("data/types/mailalias").each { |file|
|
52
|
+
fakedataparse(file)
|
53
|
+
}
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# $Id: aliases.rb 2676 2007-07-10 23:24:34Z luke $
|
@@ -195,13 +195,13 @@ class TestParsedMounts < Test::Unit::TestCase
|
|
195
195
|
obj.unmount
|
196
196
|
}
|
197
197
|
assert(! obj.mounted?, "FS still mounted")
|
198
|
-
# Check the actual output of
|
199
|
-
assert(! obj.
|
198
|
+
# Check the actual output of mountcmd
|
199
|
+
assert(! obj.mountcmd().include?(fs), "%s is still listed in mountcmd" % fs)
|
200
200
|
assert_nothing_raised {
|
201
201
|
obj.mount
|
202
202
|
}
|
203
203
|
assert(obj.mounted?, "FS not mounted")
|
204
|
-
assert(obj.
|
204
|
+
assert(obj.mountcmd().include?(fs), "%s is not listed in mountcmd" % fs)
|
205
205
|
|
206
206
|
# Now try remounting
|
207
207
|
assert_nothing_raised("Could not remount filesystem") do
|
@@ -225,4 +225,4 @@ class TestParsedMounts < Test::Unit::TestCase
|
|
225
225
|
end
|
226
226
|
end
|
227
227
|
|
228
|
-
# $Id: parsed.rb
|
228
|
+
# $Id: parsed.rb 2716 2007-07-19 20:01:47Z luke $
|
@@ -66,6 +66,12 @@ class AptPackageProviderTest < PuppetTest::TestCase
|
|
66
66
|
'--purge',
|
67
67
|
'faff'
|
68
68
|
).returns(0)
|
69
|
+
pkg.provider.expects(
|
70
|
+
:dpkg
|
71
|
+
).with(
|
72
|
+
'--purge',
|
73
|
+
'faff'
|
74
|
+
).returns(0)
|
69
75
|
|
70
76
|
pkg.evaluate.each { |state| state.transaction = self; state.forward }
|
71
77
|
end
|
@@ -134,6 +140,12 @@ class AptPackageProviderTest < PuppetTest::TestCase
|
|
134
140
|
'--purge',
|
135
141
|
'faff'
|
136
142
|
).returns(0)
|
143
|
+
pkg.provider.expects(
|
144
|
+
:dpkg
|
145
|
+
).with(
|
146
|
+
'--purge',
|
147
|
+
'faff'
|
148
|
+
).returns(0)
|
137
149
|
|
138
150
|
pkg.evaluate.each { |state| state.transaction = self; state.forward }
|
139
151
|
end
|
@@ -155,4 +167,4 @@ class AptPackageProviderTest < PuppetTest::TestCase
|
|
155
167
|
end
|
156
168
|
end
|
157
169
|
|
158
|
-
# $Id: apt.rb
|
170
|
+
# $Id: apt.rb 2714 2007-07-19 18:12:20Z luke $
|
@@ -197,15 +197,13 @@ class TestParsedFile < Test::Unit::TestCase
|
|
197
197
|
prov.default_target = :default
|
198
198
|
|
199
199
|
# Create a couple of demo files
|
200
|
-
prov.target_object(:file1).write "bill b c"
|
200
|
+
prov.target_object(:file1).write "bill b c\njill b d"
|
201
201
|
|
202
|
-
prov.target_object(:
|
203
|
-
|
204
|
-
prov.target_object(:default).write "will b d"
|
202
|
+
prov.target_object(:default).write "will b d\n"
|
205
203
|
|
206
204
|
# Create some resources for some of those demo files
|
207
|
-
resource = mkresource "bill", :target => :file1
|
208
|
-
default = mkresource "will", :target => :default
|
205
|
+
resource = mkresource "bill", :target => :file1, :one => "b", :two => "c"
|
206
|
+
default = mkresource "will", :target => :default, :one => "b", :two => "d"
|
209
207
|
|
210
208
|
resources = {"bill" => resource, "will" => default}
|
211
209
|
|
@@ -215,6 +213,7 @@ class TestParsedFile < Test::Unit::TestCase
|
|
215
213
|
|
216
214
|
# Make sure we prefetched our resources.
|
217
215
|
assert_equal("b", resource.provider.one, "did not prefetch resource from file1")
|
216
|
+
assert_equal("c", resource.provider.two, "did not prefetch resource from file1")
|
218
217
|
assert_equal("b", default.provider.one, "did not prefetch resource from default")
|
219
218
|
assert_equal("d", default.provider.two, "did not prefetch resource from default")
|
220
219
|
|
@@ -232,6 +231,20 @@ class TestParsedFile < Test::Unit::TestCase
|
|
232
231
|
assert(providers.find { |provider| provider.name == name},
|
233
232
|
"Did not return %s in list" % name)
|
234
233
|
end
|
234
|
+
|
235
|
+
# Now modify our resources and write them out, making sure that prefetching
|
236
|
+
# hasn't somehow destroyed this ability
|
237
|
+
resource[:one] = "a"
|
238
|
+
default[:one] = "a"
|
239
|
+
|
240
|
+
|
241
|
+
assert_apply(resource)
|
242
|
+
assert_apply(default)
|
243
|
+
|
244
|
+
assert_equal("bill a c\njill b d\n", prov.target_object(:file1).read,
|
245
|
+
"Did not write changed resource correctly")
|
246
|
+
assert_equal("will a d\n", prov.target_object(:default).read,
|
247
|
+
"Did not write changed default resource correctly")
|
235
248
|
end
|
236
249
|
|
237
250
|
# Make sure we can correctly prefetch on a target.
|
@@ -690,5 +703,5 @@ class TestParsedFile < Test::Unit::TestCase
|
|
690
703
|
end
|
691
704
|
end
|
692
705
|
|
693
|
-
# $Id: parsedfile.rb
|
706
|
+
# $Id: parsedfile.rb 2676 2007-07-10 23:24:34Z luke $
|
694
707
|
|
data/test/ral/types/cron.rb
CHANGED
@@ -487,7 +487,23 @@ class TestCron < Test::Unit::TestCase
|
|
487
487
|
"target did not default to user with crontab")
|
488
488
|
end
|
489
489
|
end
|
490
|
+
|
491
|
+
# #705 - make sure extra spaces don't screw things up
|
492
|
+
def test_spaces_in_command
|
493
|
+
string = "echo multiple spaces"
|
494
|
+
cron = @crontype.create(:name => "testing", :command => string)
|
495
|
+
assert_apply(cron)
|
496
|
+
|
497
|
+
cron.class.clear
|
498
|
+
cron = @crontype.create(:name => "testing", :command => string)
|
499
|
+
# Now make sure that it's correctly in sync
|
500
|
+
cron.provider.class.prefetch("testing" => cron)
|
501
|
+
properties = cron.retrieve
|
502
|
+
command, result = properties.find { |prop, value| prop.name == :command }
|
503
|
+
assert_equal(string, result, "Cron did not pick up extra spaces in command")
|
504
|
+
assert(command.insync?(string), "Command changed with multiple spaces")
|
505
|
+
end
|
490
506
|
end
|
491
507
|
|
492
508
|
|
493
|
-
# $Id: cron.rb
|
509
|
+
# $Id: cron.rb 2697 2007-07-14 21:13:04Z luke $
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$:.unshift("../../lib") if __FILE__ =~ /\.rb$/
|
4
|
+
|
5
|
+
require 'puppettest'
|
6
|
+
require 'mocha'
|
7
|
+
|
8
|
+
class TestMailAlias < Test::Unit::TestCase
|
9
|
+
include PuppetTest
|
10
|
+
|
11
|
+
def setup
|
12
|
+
super
|
13
|
+
@type = Puppet::Type.type(:mailalias)
|
14
|
+
|
15
|
+
@provider = @type.defaultprovider
|
16
|
+
|
17
|
+
# Make sure they aren't using something funky like netinfo
|
18
|
+
unless @provider.name == :aliases
|
19
|
+
@type.defaultprovider = @type.provider(:aliases)
|
20
|
+
end
|
21
|
+
|
22
|
+
cleanup do @type.defaultprovider = nil end
|
23
|
+
|
24
|
+
if @provider.respond_to?(:default_target=)
|
25
|
+
@default_file = @provider.default_target
|
26
|
+
cleanup do
|
27
|
+
@provider.default_target = @default_file
|
28
|
+
end
|
29
|
+
@target = tempfile()
|
30
|
+
@provider.default_target = @target
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# This isn't much of a test, but then, it's not much of a type.
|
35
|
+
def test_recipient_arrays
|
36
|
+
resource = @type.create(:name => "luke", :recipient => "yay", :target => tempfile)
|
37
|
+
resource.provider.expects(:recipient).returns([:absent])
|
38
|
+
values = nil
|
39
|
+
assert_nothing_raised("Could not retrieve mailalias") do
|
40
|
+
values = resource.retrieve.inject({}) { |hash, a| hash[a[0].name] = a[1]; hash }
|
41
|
+
end
|
42
|
+
assert_equal([:absent], values[:recipient])
|
43
|
+
resource.property(:recipient).expects(:set).with(%w{yay})
|
44
|
+
assert_nothing_raised("Could not sync mailalias") do
|
45
|
+
resource.property(:recipient).sync
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# $Id: mailalias.rb 2676 2007-07-10 23:24:34Z luke $
|
data/test/ral/types/mount.rb
CHANGED
@@ -3,9 +3,10 @@
|
|
3
3
|
$:.unshift("../../lib") if __FILE__ =~ /\.rb$/
|
4
4
|
|
5
5
|
require 'puppettest'
|
6
|
+
require 'mocha'
|
6
7
|
|
7
8
|
unless Facter.value(:operatingsystem) == "Darwin"
|
8
|
-
class TestMounts <
|
9
|
+
class TestMounts < PuppetTest::TestCase
|
9
10
|
include PuppetTest
|
10
11
|
|
11
12
|
p = Puppet::Type.type(:mount).provide :fake, :parent => PuppetTest::FakeParsedProvider do
|
@@ -323,7 +324,39 @@ class TestMounts < Test::Unit::TestCase
|
|
323
324
|
|
324
325
|
assert_nil(mount.should(:ensure), "Found default for ensure")
|
325
326
|
end
|
327
|
+
|
328
|
+
def disabled_test_retrieving_a_single_mount
|
329
|
+
@mount.defaultprovider = nil
|
330
|
+
|
331
|
+
provider = @mount.defaultprovider
|
332
|
+
assert(provider, "Could not retrieve default provider")
|
333
|
+
|
334
|
+
mount = Puppet::Type.type(:mount).create(:name => "/", :check => :all)
|
335
|
+
values = nil
|
336
|
+
assert_nothing_raised("Could not retrieve values for /") do
|
337
|
+
values = mount.retrieve
|
338
|
+
end
|
339
|
+
values.each do |property, value|
|
340
|
+
assert(value != :absent, "Got :absent for %s" % property.name)
|
341
|
+
end
|
342
|
+
end
|
343
|
+
|
344
|
+
# #726 - when filesystems are mounted but absent, Puppet does not write them out.
|
345
|
+
def test_mounted_but_absent
|
346
|
+
mount = @mount.create(:name => "/testing", :ensure => :mounted, :provider => :fake, :device => "/dev/something")
|
347
|
+
|
348
|
+
class << mount.provider
|
349
|
+
def mounted?
|
350
|
+
true
|
351
|
+
end
|
352
|
+
end
|
353
|
+
|
354
|
+
mount.provider.destroy
|
355
|
+
mount.provider.expects(:create)
|
356
|
+
mount.provider.expects(:mount).never
|
357
|
+
assert_apply(mount)
|
358
|
+
end
|
326
359
|
end
|
327
360
|
end
|
328
361
|
|
329
|
-
# $Id: mount.rb
|
362
|
+
# $Id: mount.rb 2723 2007-07-20 16:46:54Z luke $
|
data/test/ral/types/package.rb
CHANGED
@@ -70,7 +70,7 @@ class TestPackages < Test::Unit::TestCase
|
|
70
70
|
when "Solaris": :sun
|
71
71
|
end
|
72
72
|
|
73
|
-
unless default = Puppet.type(:package).defaultprovider
|
73
|
+
unless default = Puppet::Type.type(:package).defaultprovider
|
74
74
|
$stderr.puts "no default provider for %s" %
|
75
75
|
Facter["operatingsystem"].value
|
76
76
|
return
|
@@ -137,6 +137,14 @@ class TestPackages < Test::Unit::TestCase
|
|
137
137
|
end
|
138
138
|
end
|
139
139
|
end
|
140
|
+
|
141
|
+
# #716
|
142
|
+
def test_purge_is_not_installed
|
143
|
+
package = @type.create(:ensure => :installed, :name => "whatever")
|
144
|
+
|
145
|
+
property = package.property(:ensure)
|
146
|
+
assert(! property.insync?(:purged), "Package in state 'purged' was considered in sync")
|
147
|
+
end
|
140
148
|
end
|
141
149
|
|
142
|
-
# $Id: package.rb
|
150
|
+
# $Id: package.rb 2709 2007-07-19 00:14:15Z luke $
|
data/test/ral/types/parameter.rb
CHANGED
@@ -123,7 +123,7 @@ class TestParameter < Test::Unit::TestCase
|
|
123
123
|
assert(obj, "did not get alias parameter")
|
124
124
|
assert(obj.shadow, "shadow was not created for alias param")
|
125
125
|
|
126
|
-
assert(obj.is_a?(Puppet::
|
126
|
+
assert(obj.is_a?(Puppet::Property),
|
127
127
|
"alias instance is not a property")
|
128
128
|
assert_instance_of(param, obj, "alias is an instance of the wrong class")
|
129
129
|
|
@@ -141,7 +141,7 @@ class TestParameter < Test::Unit::TestCase
|
|
141
141
|
assert(obj.shadow, "shadow was not created for alias param")
|
142
142
|
|
143
143
|
assert_instance_of(param, obj, "alias is an instance of the wrong class")
|
144
|
-
assert(obj.is_a?(Puppet::
|
144
|
+
assert(obj.is_a?(Puppet::Property),
|
145
145
|
"alias instance is not a property")
|
146
146
|
|
147
147
|
# Now change the alias and make sure it works out well
|
@@ -152,7 +152,7 @@ class TestParameter < Test::Unit::TestCase
|
|
152
152
|
obj = params[:alias]
|
153
153
|
assert(obj, "did not get alias parameter")
|
154
154
|
assert_instance_of(param, obj, "alias is now an instance of the wrong class")
|
155
|
-
assert(obj.is_a?(Puppet::
|
155
|
+
assert(obj.is_a?(Puppet::Property),
|
156
156
|
"alias instance is now not a property")
|
157
157
|
end
|
158
158
|
|
@@ -169,4 +169,4 @@ class TestParameter < Test::Unit::TestCase
|
|
169
169
|
end
|
170
170
|
end
|
171
171
|
|
172
|
-
# $Id: parameter.rb
|
172
|
+
# $Id: parameter.rb 2647 2007-07-04 22:25:23Z luke $
|
data/test/ral/types/property.rb
CHANGED
@@ -345,6 +345,44 @@ class TestProperty < Test::Unit::TestCase
|
|
345
345
|
$setting.clear
|
346
346
|
end
|
347
347
|
end
|
348
|
+
|
349
|
+
# Make sure we can specify that we want to use the whole array, rather
|
350
|
+
# than just individual values.
|
351
|
+
def test_array_handling
|
352
|
+
property = newproperty(:arraytests)
|
353
|
+
|
354
|
+
prov, model = newmodel(:array_testing)
|
355
|
+
inst = newinst(property, model)
|
356
|
+
|
357
|
+
# Make sure it defaults to first
|
358
|
+
assert_equal(:first, property.array_matching, "Property did not default to matching first value in an array")
|
359
|
+
assert(! inst.match_all?, "match_all? returned true when array_matching is :first")
|
360
|
+
|
361
|
+
vals = %w{one two three}
|
362
|
+
inst.should = vals
|
363
|
+
|
364
|
+
# Make sure we only get the first value back
|
365
|
+
assert_equal("one", inst.should, "Returned wrong value when array_matching == first")
|
366
|
+
|
367
|
+
# And make sure any of these values is considered in sync
|
368
|
+
vals.each do |value|
|
369
|
+
assert(inst.insync?(value), "#{value} was not considered in sync when array_matching == first")
|
370
|
+
end
|
371
|
+
|
372
|
+
# Now change it to all
|
373
|
+
property.array_matching = :all
|
374
|
+
assert_equal(:all, property.array_matching, "Property did not change value of array_matching")
|
375
|
+
assert(inst.match_all?, "match_all? returned false when array_matching is :all")
|
376
|
+
|
377
|
+
# Make sure we only get the first value back
|
378
|
+
assert_equal(vals, inst.should, "Returned wrong value when array_matching == all")
|
379
|
+
|
380
|
+
# And make sure any of these values is considered in sync
|
381
|
+
%w{one two three}.each do |value|
|
382
|
+
assert(! inst.insync?(value), "individual value #{value} was considered in sync when array_matching == all")
|
383
|
+
end
|
384
|
+
assert(inst.insync?(vals), "value array was not considered in sync when array_matching == all")
|
385
|
+
end
|
348
386
|
end
|
349
387
|
|
350
|
-
# $Id: property.rb
|
388
|
+
# $Id: property.rb 2674 2007-07-10 19:30:39Z luke $
|
data/test/util/autoload.rb
CHANGED
@@ -30,12 +30,7 @@ TestAutoload.newthing(:#{name.to_s})
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
def
|
34
|
-
super
|
35
|
-
self.class.clear
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_load
|
33
|
+
def mk_loader(name)
|
39
34
|
dir = tempfile()
|
40
35
|
$: << dir
|
41
36
|
cleanup do
|
@@ -44,19 +39,26 @@ TestAutoload.newthing(:#{name.to_s})
|
|
44
39
|
|
45
40
|
Dir.mkdir(dir)
|
46
41
|
|
47
|
-
rbdir = File.join(dir,
|
42
|
+
rbdir = File.join(dir, name.to_s)
|
48
43
|
|
49
44
|
Dir.mkdir(rbdir)
|
50
45
|
|
51
|
-
# An object for specifying autoload
|
52
|
-
klass = self.class
|
53
|
-
|
54
46
|
loader = nil
|
55
47
|
assert_nothing_raised {
|
56
|
-
loader = Puppet::Util::Autoload.new(
|
48
|
+
loader = Puppet::Util::Autoload.new(self.class, name)
|
57
49
|
}
|
50
|
+
return rbdir, loader
|
51
|
+
end
|
52
|
+
|
53
|
+
def teardown
|
54
|
+
super
|
55
|
+
Puppet::Util::Autoload.clear
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_load
|
59
|
+
dir, loader = mk_loader(:yayness)
|
58
60
|
|
59
|
-
assert_equal(loader.object_id, Puppet::Util::Autoload[
|
61
|
+
assert_equal(loader.object_id, Puppet::Util::Autoload[self.class].object_id,
|
60
62
|
"Did not retrieve loader object by class")
|
61
63
|
|
62
64
|
# Make sure we don't fail on missing files
|
@@ -66,9 +68,9 @@ TestAutoload.newthing(:#{name.to_s})
|
|
66
68
|
}
|
67
69
|
|
68
70
|
# Now create a couple of files for testing
|
69
|
-
path = File.join(
|
71
|
+
path = File.join(dir, "mything.rb")
|
70
72
|
mkfile(:mything, path)
|
71
|
-
opath = File.join(
|
73
|
+
opath = File.join(dir, "othing.rb")
|
72
74
|
mkfile(:othing, opath)
|
73
75
|
|
74
76
|
# Now try to actually load it.
|
@@ -79,12 +81,12 @@ TestAutoload.newthing(:#{name.to_s})
|
|
79
81
|
|
80
82
|
assert(loader.loaded?(:mything), "Not considered loaded")
|
81
83
|
|
82
|
-
assert(
|
84
|
+
assert(self.class.thing?(:mything),
|
83
85
|
"Did not get loaded thing")
|
84
86
|
|
85
87
|
# Now clear everything, and test loadall
|
86
88
|
assert_nothing_raised {
|
87
|
-
|
89
|
+
Puppet::Util::Autoload.clear
|
88
90
|
}
|
89
91
|
|
90
92
|
self.class.clear
|
@@ -95,10 +97,23 @@ TestAutoload.newthing(:#{name.to_s})
|
|
95
97
|
|
96
98
|
[:mything, :othing].each do |thing|
|
97
99
|
assert(loader.loaded?(thing), "#{thing.to_s} not considered loaded")
|
100
|
+
assert(loader.loaded?("%s.rb" % thing), "#{thing.to_s} not considered loaded with .rb")
|
101
|
+
assert(Puppet::Util::Autoload.loaded?("yayness/%s" % thing), "%s not considered loaded by the main class" % thing)
|
102
|
+
assert(Puppet::Util::Autoload.loaded?("yayness/%s.rb" % thing), "%s not considered loaded by the main class with .rb" % thing)
|
98
103
|
|
99
|
-
|
104
|
+
loaded = Puppet::Util::Autoload.loaded?("yayness/%s.rb" % thing)
|
105
|
+
assert_equal("%s/%s.rb" % [dir, thing], loaded[:file], "File path was not set correctly in loaded store")
|
106
|
+
assert_equal(self.class, loaded[:autoloader], "Loader was not set correctly in loaded store")
|
107
|
+
|
108
|
+
assert(self.class.thing?(thing),
|
100
109
|
"Did not get loaded #{thing.to_s}")
|
101
110
|
end
|
111
|
+
|
112
|
+
Puppet::Util::Autoload.clear
|
113
|
+
[:mything, :othing].each do |thing|
|
114
|
+
assert(! loader.loaded?(thing), "#{thing.to_s} considered loaded after clear")
|
115
|
+
assert(! Puppet::Util::Autoload.loaded?("yayness/%s" % thing), "%s considered loaded by the main class after clear" % thing)
|
116
|
+
end
|
102
117
|
end
|
103
118
|
|
104
119
|
# Make sure that autoload dynamically modifies $: with the libdir as
|
@@ -112,4 +127,4 @@ TestAutoload.newthing(:#{name.to_s})
|
|
112
127
|
end
|
113
128
|
end
|
114
129
|
|
115
|
-
# $Id: autoload.rb
|
130
|
+
# $Id: autoload.rb 2668 2007-07-10 04:00:28Z luke $
|