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.

Files changed (125) hide show
  1. data/CHANGELOG +58 -0
  2. data/Rakefile +1 -1
  3. data/bin/filebucket +6 -6
  4. data/bin/puppetca +11 -1
  5. data/bin/puppetmasterd +7 -6
  6. data/conf/redhat/client.init +1 -0
  7. data/conf/redhat/{puppetd.conf → puppet.conf} +1 -1
  8. data/conf/redhat/puppet.spec +43 -31
  9. data/conf/redhat/server.init +1 -0
  10. data/lib/puppet.rb +3 -3
  11. data/lib/puppet/configuration.rb +16 -5
  12. data/lib/puppet/metatype/attributes.rb +12 -19
  13. data/lib/puppet/metatype/evaluation.rb +10 -1
  14. data/lib/puppet/metatype/instances.rb +39 -15
  15. data/lib/puppet/metatype/manager.rb +1 -28
  16. data/lib/puppet/metatype/metaparams.rb +20 -16
  17. data/lib/puppet/metatype/providers.rb +8 -2
  18. data/lib/puppet/metatype/schedules.rb +14 -19
  19. data/lib/puppet/{modules.rb → module.rb} +2 -0
  20. data/lib/puppet/network/authstore.rb +5 -1
  21. data/lib/puppet/network/client/dipper.rb +2 -2
  22. data/lib/puppet/network/client/master.rb +18 -9
  23. data/lib/puppet/network/handler/fileserver.rb +3 -6
  24. data/lib/puppet/network/handler/report.rb +2 -1
  25. data/lib/puppet/network/server/mongrel.rb +4 -2
  26. data/lib/puppet/network/xmlrpc/client.rb +10 -3
  27. data/lib/puppet/parameter.rb +11 -4
  28. data/lib/puppet/parser/ast/collexpr.rb +10 -10
  29. data/lib/puppet/parser/ast/hostclass.rb +2 -2
  30. data/lib/puppet/parser/ast/resourceparam.rb +4 -3
  31. data/lib/puppet/parser/ast/resourceref.rb +16 -2
  32. data/lib/puppet/parser/collector.rb +8 -4
  33. data/lib/puppet/parser/functions.rb +5 -2
  34. data/lib/puppet/parser/interpreter.rb +48 -9
  35. data/lib/puppet/parser/lexer.rb +2 -1
  36. data/lib/puppet/parser/parser.rb +669 -589
  37. data/lib/puppet/parser/resource.rb +20 -11
  38. data/lib/puppet/parser/resource/param.rb +21 -10
  39. data/lib/puppet/parser/resource/reference.rb +2 -2
  40. data/lib/puppet/parser/scope.rb +22 -10
  41. data/lib/puppet/{type/property.rb → property.rb} +48 -15
  42. data/lib/puppet/propertychange.rb +3 -3
  43. data/lib/puppet/provider/cron/crontab.rb +38 -36
  44. data/lib/puppet/provider/host/netinfo.rb +1 -2
  45. data/lib/puppet/provider/mailalias/aliases.rb +31 -0
  46. data/lib/puppet/provider/maillist/mailman.rb +113 -0
  47. data/lib/puppet/provider/mount.rb +5 -11
  48. data/lib/puppet/provider/mount/parsed.rb +2 -2
  49. data/lib/puppet/provider/package/appdmg.rb +1 -2
  50. data/lib/puppet/provider/package/apt.rb +3 -1
  51. data/lib/puppet/provider/package/aptrpm.rb +14 -4
  52. data/lib/puppet/provider/package/blastwave.rb +6 -4
  53. data/lib/puppet/provider/package/dpkg.rb +12 -4
  54. data/lib/puppet/provider/package/pkgdmg.rb +2 -2
  55. data/lib/puppet/provider/package/rpm.rb +11 -1
  56. data/lib/puppet/provider/package/rug.rb +1 -0
  57. data/lib/puppet/provider/package/urpmi.rb +11 -1
  58. data/lib/puppet/provider/package/yum.rb +12 -2
  59. data/lib/puppet/provider/parsedfile.rb +36 -6
  60. data/lib/puppet/rails.rb +9 -2
  61. data/lib/puppet/rails/param_name.rb +2 -3
  62. data/lib/puppet/rails/param_value.rb +20 -1
  63. data/lib/puppet/rails/resource.rb +8 -2
  64. data/lib/puppet/reference/configuration.rb +14 -16
  65. data/lib/puppet/reference/type.rb +4 -4
  66. data/lib/puppet/transaction.rb +4 -4
  67. data/lib/puppet/type.rb +19 -6
  68. data/lib/puppet/type/component.rb +9 -3
  69. data/lib/puppet/type/cron.rb +10 -4
  70. data/lib/puppet/type/exec.rb +9 -5
  71. data/lib/puppet/type/group.rb +2 -3
  72. data/lib/puppet/type/mailalias.rb +50 -0
  73. data/lib/puppet/type/maillist.rb +57 -0
  74. data/lib/puppet/type/mount.rb +25 -11
  75. data/lib/puppet/type/package.rb +6 -27
  76. data/lib/puppet/type/pfile.rb +5 -6
  77. data/lib/puppet/type/pfile/source.rb +8 -2
  78. data/lib/puppet/type/pfilebucket.rb +4 -3
  79. data/lib/puppet/type/resources.rb +1 -3
  80. data/lib/puppet/type/schedule.rb +16 -16
  81. data/lib/puppet/type/service.rb +4 -1
  82. data/lib/puppet/type/tidy.rb +1 -2
  83. data/lib/puppet/type/user.rb +2 -3
  84. data/lib/puppet/type/yumrepo.rb +2 -2
  85. data/lib/puppet/util.rb +29 -4
  86. data/lib/puppet/util/autoload.rb +45 -16
  87. data/lib/puppet/util/fileparsing.rb +23 -6
  88. data/lib/puppet/util/filetype.rb +12 -1
  89. data/lib/puppet/util/log.rb +2 -2
  90. data/lib/puppet/util/log_paths.rb +16 -0
  91. data/lib/puppet/util/reference.rb +2 -2
  92. data/test/language/ast/hostclass.rb +21 -4
  93. data/test/language/ast/resourceref.rb +95 -0
  94. data/test/language/functions.rb +5 -5
  95. data/test/language/interpreter.rb +129 -1
  96. data/test/language/node.rb +13 -2
  97. data/test/language/resource.rb +26 -1
  98. data/test/language/scope.rb +25 -5
  99. data/test/lib/puppettest/support/collection.rb +2 -2
  100. data/test/network/client/master.rb +28 -42
  101. data/test/network/server/mongrel_test.rb +7 -1
  102. data/test/other/propertychange.rb +2 -2
  103. data/test/other/transactions.rb +44 -5
  104. data/test/puppet/modules.rb +2 -1
  105. data/test/rails/ast.rb +7 -8
  106. data/test/rails/collection.rb +2 -2
  107. data/test/rails/railsresource.rb +21 -5
  108. data/test/ral/manager/attributes.rb +33 -1
  109. data/test/ral/manager/instances.rb +33 -6
  110. data/test/ral/manager/type.rb +29 -49
  111. data/test/ral/providers/cron/crontab.rb +61 -13
  112. data/test/ral/providers/mailalias/aliases.rb +57 -0
  113. data/test/ral/providers/mount/parsed.rb +4 -4
  114. data/test/ral/providers/package/apt.rb +13 -1
  115. data/test/ral/providers/parsedfile.rb +20 -7
  116. data/test/ral/types/cron.rb +17 -1
  117. data/test/ral/types/mailalias.rb +50 -0
  118. data/test/ral/types/mount.rb +35 -2
  119. data/test/ral/types/package.rb +10 -2
  120. data/test/ral/types/parameter.rb +4 -4
  121. data/test/ral/types/property.rb +39 -1
  122. data/test/util/autoload.rb +33 -18
  123. data/test/util/filetype.rb +49 -3
  124. metadata +13 -6
  125. 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 df
199
- assert(! obj.df().include?(fs), "%s is still listed in df" % fs)
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.df().include?(fs), "%s is not listed in df" % fs)
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 2624 2007-06-19 01:49:19Z luke $
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 2555 2007-06-08 17:20:00Z luke $
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(:file2).write "jill b d"
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 2551 2007-06-04 20:37:14Z luke $
706
+ # $Id: parsedfile.rb 2676 2007-07-10 23:24:34Z luke $
694
707
 
@@ -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 2551 2007-06-04 20:37:14Z luke $
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 $
@@ -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 < Test::Unit::TestCase
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 2563 2007-06-11 22:30:00Z luke $
362
+ # $Id: mount.rb 2723 2007-07-20 16:46:54Z luke $
@@ -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 2555 2007-06-08 17:20:00Z luke $
150
+ # $Id: package.rb 2709 2007-07-19 00:14:15Z luke $
@@ -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::Type::Property),
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::Type::Property),
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::Type::Property),
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 2500 2007-05-09 22:05:32Z luke $
172
+ # $Id: parameter.rb 2647 2007-07-04 22:25:23Z luke $
@@ -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 2500 2007-05-09 22:05:32Z luke $
388
+ # $Id: property.rb 2674 2007-07-10 19:30:39Z luke $
@@ -30,12 +30,7 @@ TestAutoload.newthing(:#{name.to_s})
30
30
  end
31
31
  end
32
32
 
33
- def teardown
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, "yayness")
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(klass, :yayness)
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[klass].object_id,
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(rbdir, "mything.rb")
71
+ path = File.join(dir, "mything.rb")
70
72
  mkfile(:mything, path)
71
- opath = File.join(rbdir, "othing.rb")
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(klass.thing?(:mything),
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
- loader.clear
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
- assert(klass.thing?(thing),
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 2518 2007-05-16 00:00:47Z luke $
130
+ # $Id: autoload.rb 2668 2007-07-10 04:00:28Z luke $