puppet 0.22.4 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. data/CHANGELOG +156 -0
  2. data/README +2 -2
  3. data/Rakefile +6 -6
  4. data/bin/filebucket +212 -0
  5. data/bin/puppet +2 -0
  6. data/bin/puppetca +2 -4
  7. data/bin/puppetd +16 -15
  8. data/bin/puppetdoc +46 -496
  9. data/bin/puppetmasterd +3 -5
  10. data/bin/puppetrun +8 -3
  11. data/bin/ralsh +271 -0
  12. data/conf/redhat/client.init +1 -1
  13. data/conf/redhat/puppet.spec +13 -2
  14. data/conf/solaris/pkginfo +1 -1
  15. data/ext/puppet-test +374 -0
  16. data/install.rb +40 -31
  17. data/lib/puppet.rb +39 -4
  18. data/lib/puppet/config_stores/rest.rb +60 -0
  19. data/lib/puppet/configuration.rb +312 -17
  20. data/lib/puppet/external/event-loop/event-loop.rb +4 -0
  21. data/lib/puppet/external/gratr/rdot.rb +1 -1
  22. data/lib/puppet/fact_stores/yaml.rb +42 -0
  23. data/lib/puppet/feature/base.rb +4 -1
  24. data/lib/puppet/metatype/attributes.rb +20 -43
  25. data/lib/puppet/metatype/container.rb +1 -36
  26. data/lib/puppet/metatype/evaluation.rb +48 -19
  27. data/lib/puppet/metatype/instances.rb +35 -1
  28. data/lib/puppet/metatype/metaparams.rb +23 -19
  29. data/lib/puppet/metatype/providers.rb +25 -38
  30. data/lib/puppet/network/client/ca.rb +8 -5
  31. data/lib/puppet/network/client/master.rb +59 -17
  32. data/lib/puppet/network/handler.rb +18 -1
  33. data/lib/puppet/network/handler/ca.rb +9 -3
  34. data/lib/puppet/network/handler/facts.rb +70 -0
  35. data/lib/puppet/network/handler/filebucket.rb +4 -1
  36. data/lib/puppet/network/handler/fileserver.rb +65 -21
  37. data/lib/puppet/network/handler/master.rb +6 -3
  38. data/lib/puppet/network/handler/report.rb +12 -26
  39. data/lib/puppet/network/handler/resource.rb +14 -2
  40. data/lib/puppet/network/handler/runner.rb +5 -1
  41. data/lib/puppet/network/handler/status.rb +5 -1
  42. data/lib/puppet/network/server/mongrel.rb +4 -4
  43. data/lib/puppet/network/server/webrick.rb +14 -3
  44. data/lib/puppet/parameter.rb +30 -25
  45. data/lib/puppet/parser/ast.rb +1 -6
  46. data/lib/puppet/parser/ast/component.rb +23 -20
  47. data/lib/puppet/parser/ast/hostclass.rb +7 -11
  48. data/lib/puppet/parser/ast/leaf.rb +4 -1
  49. data/lib/puppet/parser/ast/node.rb +6 -8
  50. data/lib/puppet/parser/functions.rb +7 -4
  51. data/lib/puppet/parser/interpreter.rb +155 -205
  52. data/lib/puppet/parser/lexer.rb +35 -2
  53. data/lib/puppet/parser/parser.rb +705 -612
  54. data/lib/puppet/parser/resource.rb +91 -48
  55. data/lib/puppet/parser/resource/param.rb +52 -29
  56. data/lib/puppet/parser/scope.rb +28 -23
  57. data/lib/puppet/pgraph.rb +26 -21
  58. data/lib/puppet/propertychange.rb +12 -12
  59. data/lib/puppet/provider.rb +102 -31
  60. data/lib/puppet/provider/cron/crontab.rb +7 -8
  61. data/lib/puppet/provider/group/groupadd.rb +4 -4
  62. data/lib/puppet/provider/group/pw.rb +3 -3
  63. data/lib/puppet/provider/mount.rb +8 -8
  64. data/lib/puppet/provider/mount/netinfo.rb +5 -5
  65. data/lib/puppet/provider/mount/parsed.rb +2 -2
  66. data/lib/puppet/provider/nameservice.rb +19 -31
  67. data/lib/puppet/provider/nameservice/netinfo.rb +14 -14
  68. data/lib/puppet/provider/nameservice/objectadd.rb +4 -4
  69. data/lib/puppet/provider/nameservice/pw.rb +4 -4
  70. data/lib/puppet/provider/package.rb +31 -0
  71. data/lib/puppet/provider/package/appdmg.rb +118 -0
  72. data/lib/puppet/provider/package/apple.rb +18 -16
  73. data/lib/puppet/provider/package/apt.rb +13 -15
  74. data/lib/puppet/provider/package/aptitude.rb +5 -3
  75. data/lib/puppet/provider/package/aptrpm.rb +9 -11
  76. data/lib/puppet/provider/package/blastwave.rb +9 -9
  77. data/lib/puppet/provider/package/darwinport.rb +12 -11
  78. data/lib/puppet/provider/package/dpkg.rb +20 -12
  79. data/lib/puppet/provider/package/fink.rb +87 -0
  80. data/lib/puppet/provider/package/freebsd.rb +10 -11
  81. data/lib/puppet/provider/package/gem.rb +15 -15
  82. data/lib/puppet/provider/package/openbsd.rb +12 -17
  83. data/lib/puppet/provider/package/pkgdmg.rb +90 -16
  84. data/lib/puppet/provider/package/portage.rb +20 -14
  85. data/lib/puppet/provider/package/ports.rb +15 -13
  86. data/lib/puppet/provider/package/rpm.rb +20 -23
  87. data/lib/puppet/provider/package/rug.rb +6 -8
  88. data/lib/puppet/provider/package/sun.rb +20 -18
  89. data/lib/puppet/provider/package/sunfreeware.rb +2 -2
  90. data/lib/puppet/provider/package/up2date.rb +6 -10
  91. data/lib/puppet/provider/package/urpmi.rb +51 -0
  92. data/lib/puppet/provider/package/yum.rb +15 -13
  93. data/lib/puppet/provider/parsedfile.rb +53 -63
  94. data/lib/puppet/provider/service/base.rb +13 -15
  95. data/lib/puppet/provider/service/debian.rb +4 -4
  96. data/lib/puppet/provider/service/gentoo.rb +4 -4
  97. data/lib/puppet/provider/service/init.rb +22 -15
  98. data/lib/puppet/provider/service/redhat.rb +6 -6
  99. data/lib/puppet/provider/service/smf.rb +6 -6
  100. data/lib/puppet/provider/user/netinfo.rb +5 -5
  101. data/lib/puppet/provider/user/pw.rb +10 -5
  102. data/lib/puppet/provider/user/useradd.rb +9 -14
  103. data/lib/puppet/provider/zone/solaris.rb +80 -45
  104. data/lib/puppet/rails.rb +3 -34
  105. data/lib/puppet/rails/database/schema.rb +45 -24
  106. data/lib/puppet/rails/fact_value.rb +1 -0
  107. data/lib/puppet/rails/host.rb +69 -40
  108. data/lib/puppet/rails/param_name.rb +3 -8
  109. data/lib/puppet/rails/param_value.rb +2 -1
  110. data/lib/puppet/rails/puppet_class.rb +0 -2
  111. data/lib/puppet/rails/puppet_tag.rb +5 -0
  112. data/lib/puppet/rails/resource.rb +41 -17
  113. data/lib/puppet/rails/resource_tag.rb +4 -0
  114. data/lib/puppet/reference/configuration.rb +149 -0
  115. data/lib/puppet/reference/function.rb +13 -0
  116. data/lib/puppet/reference/network.rb +37 -0
  117. data/lib/puppet/reference/providers.rb +118 -0
  118. data/lib/puppet/reference/report.rb +21 -0
  119. data/lib/puppet/reference/type.rb +152 -0
  120. data/lib/puppet/reports/rrdgraph.rb +21 -7
  121. data/lib/puppet/reports/tagmail.rb +4 -1
  122. data/lib/puppet/sslcertificates.rb +1 -49
  123. data/lib/puppet/sslcertificates/ca.rb +2 -79
  124. data/lib/puppet/sslcertificates/inventory.rb +0 -10
  125. data/lib/puppet/transaction.rb +24 -41
  126. data/lib/puppet/transaction/report.rb +27 -1
  127. data/lib/puppet/type.rb +7 -43
  128. data/lib/puppet/type/component.rb +198 -124
  129. data/lib/puppet/type/cron.rb +51 -42
  130. data/lib/puppet/type/exec.rb +20 -19
  131. data/lib/puppet/type/group.rb +6 -55
  132. data/lib/puppet/type/host.rb +16 -37
  133. data/lib/puppet/type/mount.rb +30 -17
  134. data/lib/puppet/type/notify.rb +7 -8
  135. data/lib/puppet/type/package.rb +44 -80
  136. data/lib/puppet/type/pfile.rb +50 -41
  137. data/lib/puppet/type/pfile/checksum.rb +82 -95
  138. data/lib/puppet/type/pfile/content.rb +21 -25
  139. data/lib/puppet/type/pfile/ensure.rb +32 -30
  140. data/lib/puppet/type/pfile/group.rb +21 -26
  141. data/lib/puppet/type/pfile/mode.rb +25 -32
  142. data/lib/puppet/type/pfile/owner.rb +23 -27
  143. data/lib/puppet/type/pfile/source.rb +42 -33
  144. data/lib/puppet/type/pfile/target.rb +20 -18
  145. data/lib/puppet/type/pfile/type.rb +6 -7
  146. data/lib/puppet/type/pfilebucket.rb +3 -3
  147. data/lib/puppet/type/port.rb +5 -7
  148. data/lib/puppet/type/property.rb +58 -61
  149. data/lib/puppet/type/resources.rb +12 -8
  150. data/lib/puppet/type/schedule.rb +8 -8
  151. data/lib/puppet/type/service.rb +26 -33
  152. data/lib/puppet/type/sshkey.rb +6 -7
  153. data/lib/puppet/type/tidy.rb +41 -35
  154. data/lib/puppet/type/user.rb +34 -67
  155. data/lib/puppet/type/yumrepo.rb +27 -12
  156. data/lib/puppet/type/zone.rb +71 -110
  157. data/lib/puppet/util.rb +46 -61
  158. data/lib/puppet/util/autoload.rb +59 -47
  159. data/lib/puppet/util/config.rb +160 -18
  160. data/lib/puppet/util/config_store.rb +61 -0
  161. data/lib/puppet/util/fact_store.rb +60 -0
  162. data/lib/puppet/util/instance_loader.rb +74 -0
  163. data/lib/puppet/util/loadedfile.rb +5 -8
  164. data/lib/puppet/util/metric.rb +17 -25
  165. data/lib/puppet/util/posix.rb +39 -7
  166. data/lib/puppet/util/provider_features.rb +9 -1
  167. data/lib/puppet/util/rails/collection_merger.rb +16 -1
  168. data/lib/puppet/util/reference.rb +189 -0
  169. data/lib/puppet/util/storage.rb +2 -2
  170. data/lib/puppet/util/subclass_loader.rb +9 -2
  171. data/test/language/ast.rb +4 -148
  172. data/test/language/ast/component.rb +10 -1
  173. data/test/language/collector.rb +1 -191
  174. data/test/language/interpreter.rb +284 -327
  175. data/test/language/lexer.rb +13 -1
  176. data/test/language/node.rb +1 -1
  177. data/test/language/parser.rb +17 -4
  178. data/test/language/resource.rb +67 -101
  179. data/test/language/scope.rb +18 -3
  180. data/test/language/snippets.rb +114 -151
  181. data/test/lib/puppettest.rb +13 -0
  182. data/test/lib/puppettest/exetest.rb +7 -0
  183. data/test/lib/puppettest/fakes.rb +39 -28
  184. data/test/lib/puppettest/railstesting.rb +1 -1
  185. data/test/lib/puppettest/support/assertions.rb +2 -2
  186. data/test/lib/puppettest/support/collection.rb +30 -0
  187. data/test/network/client/ca.rb +27 -1
  188. data/test/network/client/client.rb +3 -3
  189. data/test/network/client/master.rb +102 -1
  190. data/test/network/handler/ca.rb +35 -1
  191. data/test/network/handler/facts.rb +112 -0
  192. data/test/network/handler/fileserver.rb +25 -1
  193. data/test/network/handler/handler.rb +2 -2
  194. data/test/network/handler/master.rb +2 -49
  195. data/test/network/handler/resource.rb +5 -6
  196. data/test/network/server/mongrel_test.rb +65 -0
  197. data/test/network/server/webrick.rb +2 -2
  198. data/test/network/xmlrpc/client.rb +2 -1
  199. data/test/network/xmlrpc/processor.rb +2 -1
  200. data/test/other/pgraph.rb +6 -5
  201. data/test/other/propertychange.rb +11 -12
  202. data/test/other/report.rb +44 -27
  203. data/test/other/transactions.rb +17 -16
  204. data/test/puppet/tc_suidmanager.rb +2 -2
  205. data/test/rails/ast.rb +74 -0
  206. data/test/rails/collection.rb +214 -0
  207. data/test/rails/host.rb +49 -24
  208. data/test/rails/interpreter.rb +91 -0
  209. data/test/rails/railsparameter.rb +22 -11
  210. data/test/rails/railsresource.rb +140 -7
  211. data/test/ral/manager/attributes.rb +37 -13
  212. data/test/ral/manager/instances.rb +82 -0
  213. data/test/ral/manager/provider.rb +60 -22
  214. data/test/ral/manager/type.rb +9 -6
  215. data/test/ral/providers/cron/crontab.rb +59 -7
  216. data/test/ral/providers/group.rb +7 -7
  217. data/test/ral/providers/host/netinfo.rb +5 -6
  218. data/test/ral/providers/host/parsed.rb +4 -4
  219. data/test/ral/providers/mount/parsed.rb +11 -6
  220. data/test/ral/providers/nameservice.rb +2 -2
  221. data/test/ral/providers/package.rb +39 -14
  222. data/test/ral/providers/package/apt.rb +72 -3
  223. data/test/ral/providers/package/aptitude.rb +15 -12
  224. data/test/ral/providers/package/aptrpm.rb +3 -3
  225. data/test/ral/providers/package/dpkg.rb +2 -2
  226. data/test/ral/providers/parsedfile.rb +114 -88
  227. data/test/ral/providers/{parsedport.rb → port/parsed.rb} +1 -1
  228. data/test/ral/providers/provider.rb +93 -13
  229. data/test/ral/providers/service.rb +52 -26
  230. data/test/ral/providers/sshkey/parsed.rb +3 -3
  231. data/test/ral/providers/user.rb +19 -20
  232. data/test/ral/providers/user/useradd.rb +1 -5
  233. data/test/ral/types/cron.rb +49 -36
  234. data/test/ral/types/file.rb +38 -35
  235. data/test/ral/types/file/target.rb +4 -4
  236. data/test/ral/types/filesources.rb +24 -22
  237. data/test/ral/types/group.rb +4 -2
  238. data/test/ral/types/host.rb +17 -10
  239. data/test/ral/types/mount.rb +40 -23
  240. data/test/ral/types/package.rb +62 -5
  241. data/test/ral/types/parameter.rb +2 -2
  242. data/test/ral/types/property.rb +27 -20
  243. data/test/ral/types/resources.rb +4 -16
  244. data/test/ral/types/schedule.rb +2 -2
  245. data/test/ral/types/service.rb +2 -3
  246. data/test/ral/types/sshkey.rb +3 -3
  247. data/test/ral/types/tidy.rb +6 -15
  248. data/test/ral/types/user.rb +17 -17
  249. data/test/ral/types/yumrepo.rb +2 -2
  250. data/test/ral/types/zone.rb +71 -87
  251. data/test/util/autoload.rb +6 -21
  252. data/test/util/config.rb +201 -101
  253. data/test/util/fact_store.rb +67 -0
  254. data/test/util/features.rb +9 -6
  255. data/test/util/instance_loader.rb +53 -0
  256. data/test/util/loadedfile.rb +17 -1
  257. data/test/util/metrics.rb +54 -57
  258. data/test/util/posixtest.rb +8 -11
  259. data/test/util/utiltest.rb +31 -2
  260. metadata +520 -492
  261. data/TODO +0 -4
  262. data/lib/puppet/network/client/logger.rb +0 -6
  263. data/lib/puppet/network/handler/logger.rb +0 -52
  264. data/lib/puppet/rails/database/001_add_indexes.rb +0 -38
  265. data/lib/puppet/type/parsedtype.rb +0 -219
  266. data/test/network/handler/logger.rb +0 -183
@@ -30,13 +30,13 @@ class TestGroupProvider < Test::Unit::TestCase
30
30
  end
31
31
 
32
32
  def mkgroup(name, hash = {})
33
- fakemodel = fakemodel(:group, name)
33
+ fakeresource = fakeresource(:group, name)
34
34
  group = nil
35
35
  assert_nothing_raised {
36
- group = @provider.new(fakemodel)
36
+ group = @provider.new(fakeresource)
37
37
  }
38
38
  hash.each do |name, val|
39
- fakemodel[name] = val
39
+ fakeresource[name] = val
40
40
  end
41
41
  assert(group, "Could not create provider group")
42
42
 
@@ -167,9 +167,9 @@ class TestGroupProvider < Test::Unit::TestCase
167
167
  groupnames().each { |group|
168
168
  gobj = nil
169
169
  comp = nil
170
- fakemodel = fakemodel(:group, group)
170
+ fakeresource = fakeresource(:group, group)
171
171
  assert_nothing_raised {
172
- gobj = @provider.new(fakemodel)
172
+ gobj = @provider.new(fakeresource)
173
173
  }
174
174
 
175
175
  assert(gobj.gid, "Failed to retrieve gid")
@@ -223,7 +223,7 @@ class TestGroupProvider < Test::Unit::TestCase
223
223
  # Not all OSes fail here, so we can't test that it doesn't work with
224
224
  # it off, only that it does work with it on.
225
225
  assert_nothing_raised {
226
- group2.model[:allowdupe] = :true
226
+ group2.resource[:allowdupe] = :true
227
227
  }
228
228
 
229
229
  # Now create the second group
@@ -249,4 +249,4 @@ class TestGroupProvider < Test::Unit::TestCase
249
249
  end
250
250
  end
251
251
 
252
- # $Id: group.rb 2178 2007-02-07 23:56:59Z luke $
252
+ # $Id: group.rb 2501 2007-05-09 23:08:42Z luke $
@@ -20,17 +20,16 @@ class TestNetinfoHostProvider < Test::Unit::TestCase
20
20
  def test_list
21
21
  list = nil
22
22
  assert_nothing_raised do
23
- list = @provider.list
23
+ list = @provider.instances
24
24
  end
25
25
  assert(list.length > 0)
26
- list.each do |obj|
27
- prov = obj.provider
28
- assert_instance_of(@host, obj)
26
+ list.each do |prov|
27
+ assert_instance_of(@provider, prov)
29
28
  assert(prov.name, "objects do not have names")
30
29
  assert(prov.ip, "Did not get value for device in %s" % prov.ip)
31
30
  end
32
31
 
33
- assert(list.detect { |m| m.provider.name == "localhost"}, "Could not find localhost")
32
+ assert(list.detect { |provider| provider.name == "localhost"}, "Could not find localhost")
34
33
  end
35
34
 
36
35
  if Process.uid == 0
@@ -55,4 +54,4 @@ end
55
54
  end
56
55
  end
57
56
 
58
- # $Id: netinfo.rb 2170 2007-02-07 17:21:52Z luke $
57
+ # $Id: netinfo.rb 2552 2007-06-05 01:17:00Z luke $
@@ -53,9 +53,9 @@ class TestParsedHostProvider < Test::Unit::TestCase
53
53
  def mkhost
54
54
  hash = mkhosthash()
55
55
 
56
- fakemodel = fakemodel(:host, hash[:name])
56
+ fakeresource = fakeresource(:host, hash[:name])
57
57
 
58
- host = @provider.new(fakemodel)
58
+ host = @provider.new(fakeresource)
59
59
 
60
60
  assert(host, "Could not create provider host")
61
61
  hash.each do |name, val|
@@ -214,7 +214,7 @@ class TestParsedHostProvider < Test::Unit::TestCase
214
214
 
215
215
  # And verify that we have data for everything
216
216
  hosts.each { |host|
217
- name = host.model[:name]
217
+ name = host.resource[:name]
218
218
  assert(text.include?(name), "Host %s is not in file" % name)
219
219
  hash = host.property_hash
220
220
  assert(! hash.empty?, "Could not find host %s" % name)
@@ -223,4 +223,4 @@ class TestParsedHostProvider < Test::Unit::TestCase
223
223
  end
224
224
  end
225
225
 
226
- # $Id: parsed.rb 2296 2007-03-18 22:48:57Z luke $
226
+ # $Id: parsed.rb 2501 2007-05-09 23:08:42Z luke $
@@ -51,9 +51,9 @@ class TestParsedMounts < Test::Unit::TestCase
51
51
  hash = mkmountargs()
52
52
  #hash[:provider] = @provider.name
53
53
 
54
- fakemodel = fakemodel(:mount, hash[:name])
54
+ fakeresource = fakeresource(:mount, hash[:name])
55
55
 
56
- mount = @provider.new(fakemodel)
56
+ mount = @provider.new(fakeresource)
57
57
  assert(mount, "Could not create provider mount")
58
58
  hash[:record_type] = :parsed
59
59
  hash[:ensure] = :present
@@ -122,6 +122,10 @@ class TestParsedMounts < Test::Unit::TestCase
122
122
  assert(hashes.length > 0, "Did not create any hashes")
123
123
  root = hashes.find { |i| i[:name] == "/" }
124
124
  assert(root, "Could not retrieve root mount")
125
+
126
+ assert_nothing_raised("Could not rewrite file") do
127
+ @provider.to_file(hashes)
128
+ end
125
129
  end
126
130
  end
127
131
 
@@ -133,12 +137,13 @@ class TestParsedMounts < Test::Unit::TestCase
133
137
 
134
138
  assert(FileTest.exists?(@provider.default_target),
135
139
  "FSTab %s does not exist" % @provider.default_target)
140
+
136
141
  assert_nothing_raised do
137
- @provider.prefetch
142
+ @provider.prefetch("/" => type)
138
143
  end
139
144
 
140
- assert_equal(:present, provider.property_hash[:ensure],
141
- "Could not find root fs with provider %s" % provider.name)
145
+ assert_equal(:present, type.provider.property_hash[:ensure],
146
+ "Could not find root fs with provider %s" % provider.class.name)
142
147
 
143
148
  assert_nothing_raised {
144
149
  assert(provider.mounted?, "Root is considered not mounted")
@@ -220,4 +225,4 @@ class TestParsedMounts < Test::Unit::TestCase
220
225
  end
221
226
  end
222
227
 
223
- # $Id: parsed.rb 2445 2007-05-01 03:45:09Z luke $
228
+ # $Id: parsed.rb 2624 2007-06-19 01:49:19Z luke $
@@ -11,7 +11,7 @@ class TestNameServiceProvider < Test::Unit::TestCase
11
11
 
12
12
  def test_option
13
13
  klass = Class.new(Puppet::Provider::NameService)
14
- klass.model = Puppet::Type.type(:user)
14
+ klass.resource_type = Puppet::Type.type(:user)
15
15
 
16
16
  val = nil
17
17
  assert_nothing_raised {
@@ -30,4 +30,4 @@ class TestNameServiceProvider < Test::Unit::TestCase
30
30
  end
31
31
  end
32
32
 
33
- # $Id: nameservice.rb 2170 2007-02-07 17:21:52Z luke $
33
+ # $Id: nameservice.rb 2501 2007-05-09 23:08:42Z luke $
@@ -8,6 +8,11 @@ require 'etc'
8
8
  class TestPackageProvider < Test::Unit::TestCase
9
9
  include PuppetTest
10
10
 
11
+ def setup
12
+ super
13
+ Puppet.info @method_name
14
+ end
15
+
11
16
  # Load the testpackages hash.
12
17
  def self.load_test_packages
13
18
  require 'yaml'
@@ -81,7 +86,7 @@ class TestPackageProvider < Test::Unit::TestCase
81
86
  assert((result == :listed or result.is_a?(Hash)),
82
87
  "query did not return hash or :listed")
83
88
  if result == :listed
84
- assert(provider.model.is(:ensure) != :absent, msg)
89
+ assert(provider.resource.is(:ensure) != :absent, msg)
85
90
  else
86
91
  assert(result[:ensure] != :absent, msg)
87
92
  end
@@ -150,8 +155,12 @@ class TestPackageProvider < Test::Unit::TestCase
150
155
 
151
156
  cleanup do
152
157
  if pkg.provider.respond_to?(:uninstall)
153
- pkg[:ensure] = :absent
154
- assert_apply(pkg)
158
+ pkg.provider.flush
159
+ if pkg.provider.properties[:ensure] != :absent
160
+ assert_nothing_raised("Could not clean up package") do
161
+ pkg.provider.uninstall
162
+ end
163
+ end
155
164
  else
156
165
  if cleancmd
157
166
  system(cleancmd)
@@ -159,6 +168,13 @@ class TestPackageProvider < Test::Unit::TestCase
159
168
  end
160
169
  end
161
170
 
171
+ # Now call 'latest' after the package is installed
172
+ if provider.respond_to?(:latest)
173
+ assert_nothing_raised("Could not call 'latest'") do
174
+ provider.latest
175
+ end
176
+ end
177
+
162
178
  assert_nothing_raised("Could not install package") do
163
179
  provider.install
164
180
  end
@@ -168,26 +184,35 @@ class TestPackageProvider < Test::Unit::TestCase
168
184
  # If there are any remaining files, then test upgrading from there
169
185
  unless files.empty?
170
186
  pkg[:source] = files.shift
171
- current = provider.query
187
+ current = provider.properties
172
188
  assert_nothing_raised("Could not upgrade") do
173
189
  provider.update
174
190
  end
175
- new = provider.query
191
+ provider.flush
192
+ new = provider.properties
176
193
  assert(current != new, "package was not upgraded: %s did not change" %
177
194
  current.inspect)
178
195
  end
179
196
 
180
197
  unless versions.empty?
181
198
  pkg[:ensure] = versions.shift
182
- current = provider.query
199
+ current = provider.properties
183
200
  assert_nothing_raised("Could not upgrade") do
184
201
  provider.update
185
202
  end
186
- new = provider.query
203
+ provider.flush
204
+ new = provider.properties
187
205
  assert(current != new, "package was not upgraded: %s did not change" %
188
206
  current.inspect)
189
207
  end
190
208
 
209
+ # Now call 'latest' after the package is installed
210
+ if provider.respond_to?(:latest)
211
+ assert_nothing_raised("Could not call 'latest'") do
212
+ provider.latest
213
+ end
214
+ end
215
+
191
216
  # Now remove the package
192
217
  if provider.respond_to?(:uninstall)
193
218
  assert_nothing_raised do
@@ -234,20 +259,20 @@ class TestPackageProvider < Test::Unit::TestCase
234
259
 
235
260
  # Make sure all of the suitable providers on our platform can successfully
236
261
  # list.
237
- def test_listing
262
+ def test_instances
238
263
  Puppet::Type.type(:package).suitableprovider.each do |provider|
239
264
  result = nil
240
265
  assert_nothing_raised("Could not list %s packages" % provider.name) do
241
- result = provider.list
266
+ result = provider.instances
242
267
  end
243
268
  result.each do |pkg|
244
- assert_instance_of(Puppet::Type.type(:package), pkg,
245
- "%s returned non-package" % provider.name)
246
- assert_equal(provider.name, pkg.provider.class.name,
247
- "%s did not set provider correctly" % provider.name)
269
+ assert_instance_of(provider, pkg,
270
+ "%s returned non-provider" % provider.name)
271
+ assert_equal(provider.name, pkg.class.name,
272
+ "Provider %s returned an instance of a different provider" % provider.name)
248
273
  end
249
274
  end
250
275
  end
251
276
  end
252
277
 
253
- # $Id: package.rb 2170 2007-02-07 17:21:52Z luke $
278
+ # $Id: package.rb 2595 2007-06-17 00:06:46Z luke $
@@ -28,7 +28,7 @@ class AptPackageProviderTest < PuppetTest::TestCase
28
28
  'faff'
29
29
  ).returns(
30
30
  "deinstall ok config-files faff 1.2.3-1\n"
31
- )
31
+ ).times(1)
32
32
 
33
33
  pkg.provider.expects(
34
34
  :aptget
@@ -56,7 +56,7 @@ class AptPackageProviderTest < PuppetTest::TestCase
56
56
  'faff'
57
57
  ).returns(
58
58
  "install ok installed faff 1.2.3-1\n"
59
- )
59
+ ).times(1)
60
60
  pkg.provider.expects(
61
61
  :aptget
62
62
  ).with(
@@ -70,6 +70,75 @@ class AptPackageProviderTest < PuppetTest::TestCase
70
70
  pkg.evaluate.each { |state| state.transaction = self; state.forward }
71
71
  end
72
72
 
73
+ def test_dont_try_to_purge_if_already_purged
74
+ pkg = @type.create :name => 'faff', :provider => :apt, :ensure => :purged
75
+
76
+ pkg.provider.expects(
77
+ :dpkgquery
78
+ ).with(
79
+ '-W',
80
+ '--showformat',
81
+ '${Status} ${Package} ${Version}\n',
82
+ 'faff'
83
+ ).raises(
84
+ Puppet::ExecutionFailure,
85
+ "No packages found matching faff.\n"
86
+ ).times(1)
87
+ pkg.provider.expects(
88
+ :aptget
89
+ ).never
90
+
91
+ pkg.evaluate.each { |state| state.transaction = self; state.forward }
92
+ end
93
+
94
+ def test_dont_try_to_purge_if_already_purged_and_we_want_it_absent
95
+ pkg = @type.create :name => 'faff', :provider => :apt, :ensure => :absent
96
+
97
+ pkg.provider.expects(
98
+ :dpkgquery
99
+ ).with(
100
+ '-W',
101
+ '--showformat',
102
+ '${Status} ${Package} ${Version}\n',
103
+ 'faff'
104
+ ).raises(
105
+ Puppet::ExecutionFailure,
106
+ "No packages found matching faff.\n"
107
+ ).times(1)
108
+ pkg.provider.expects(
109
+ :aptget
110
+ ).never
111
+
112
+ pkg.evaluate.each { |state| state.transaction = self; state.forward }
113
+ end
114
+
115
+ def test_make_sure_we_purge_if_package_still_has_conffiles
116
+ pkg = @type.create :name => 'faff', :provider => :apt, :ensure => :purged
117
+
118
+ pkg.provider.expects(
119
+ :dpkgquery
120
+ ).with(
121
+ '-W',
122
+ '--showformat',
123
+ '${Status} ${Package} ${Version}\n',
124
+ 'faff'
125
+ ).returns(
126
+ "deinstall ok config-files faff 1.2.3-1\n"
127
+ ).times(1)
128
+ pkg.provider.expects(
129
+ :aptget
130
+ ).with(
131
+ '-y',
132
+ '-q',
133
+ 'remove',
134
+ '--purge',
135
+ 'faff'
136
+ ).returns(0)
137
+
138
+ pkg.evaluate.each { |state| state.transaction = self; state.forward }
139
+ end
140
+
141
+
73
142
  def test_latest
74
143
  pkg = @type.create :name => 'base-files', :provider => :apt
75
144
 
@@ -86,4 +155,4 @@ class AptPackageProviderTest < PuppetTest::TestCase
86
155
  end
87
156
  end
88
157
 
89
- # $Id: apt.rb 2390 2007-04-06 15:49:38Z luke $
158
+ # $Id: apt.rb 2555 2007-06-08 17:20:00Z luke $
@@ -19,16 +19,16 @@ class AptitudePackageProviderTest < PuppetTest::TestCase
19
19
  :ensure => :present,
20
20
  :source => "/tmp/faff.deb"
21
21
 
22
- pkg.provider.expects(
23
- :dpkgquery
24
- ).with(
25
- '-W',
26
- '--showformat',
27
- '${Status} ${Package} ${Version}\n',
28
- 'faff'
29
- ).returns(
30
- "deinstall ok config-files faff 1.2.3-1\n"
31
- )
22
+ pkg.provider.expects(
23
+ :dpkgquery
24
+ ).with(
25
+ '-W',
26
+ '--showformat',
27
+ '${Status} ${Package} ${Version}\n',
28
+ 'faff'
29
+ ).returns(
30
+ "deinstall ok config-files faff 1.2.3-1\n"
31
+ ).times(1)
32
32
 
33
33
  pkg.provider.expects(
34
34
  :aptitude
@@ -40,7 +40,10 @@ class AptitudePackageProviderTest < PuppetTest::TestCase
40
40
  'faff'
41
41
  ).returns(0)
42
42
 
43
- pkg.evaluate.each { |state| state.transaction = self; state.forward }
43
+ pkg.evaluate.each { |state|
44
+ state.transaction = self
45
+ state.forward
46
+ }
44
47
  end
45
48
 
46
49
  def test_purge
@@ -55,7 +58,7 @@ class AptitudePackageProviderTest < PuppetTest::TestCase
55
58
  'faff'
56
59
  ).returns(
57
60
  "install ok installed faff 1.2.3-1\n"
58
- )
61
+ ).times(1)
59
62
  pkg.provider.expects(
60
63
  :aptitude
61
64
  ).with(
@@ -28,7 +28,7 @@ class AptrpmPackageProviderTest < PuppetTest::TestCase
28
28
  '--nodigest',
29
29
  '--qf',
30
30
  "%{NAME}-%{VERSION}-%{RELEASE} %{VERSION}-%{RELEASE}\n"
31
- ).raises(Puppet::ExecutionFailure, "couldn't find rpm")
31
+ ).raises(Puppet::ExecutionFailure, "couldn't find rpm").times(1)
32
32
 
33
33
  pkg.provider.expects(
34
34
  :aptget
@@ -56,7 +56,7 @@ class AptrpmPackageProviderTest < PuppetTest::TestCase
56
56
  "%{NAME}-%{VERSION}-%{RELEASE} %{VERSION}-%{RELEASE}\n"
57
57
  ).returns(
58
58
  "faff-1.2.3-1 1.2.3-1\n"
59
- )
59
+ ).times(1)
60
60
  pkg.provider.expects(
61
61
  :aptget
62
62
  ).with(
@@ -86,4 +86,4 @@ class AptrpmPackageProviderTest < PuppetTest::TestCase
86
86
  end
87
87
  end
88
88
 
89
- # $Id: aptrpm.rb 2430 2007-04-30 15:19:23Z luke $
89
+ # $Id: aptrpm.rb 2555 2007-06-08 17:20:00Z luke $
@@ -27,7 +27,7 @@ class DpkgPackageProviderTest < PuppetTest::TestCase
27
27
  'faff'
28
28
  ).returns(
29
29
  "deinstall ok config-files faff 1.2.3-1\n"
30
- )
30
+ ).times(1)
31
31
 
32
32
  pkg.provider.expects(
33
33
  :dpkg
@@ -51,7 +51,7 @@ class DpkgPackageProviderTest < PuppetTest::TestCase
51
51
  'faff'
52
52
  ).returns(
53
53
  "install ok installed faff 1.2.3-1\n"
54
- )
54
+ ).times(1)
55
55
  pkg.provider.expects(
56
56
  :dpkg
57
57
  ).with(