puppet 0.24.1 → 0.24.2

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 (266) hide show
  1. data/CHANGELOG +94 -0
  2. data/Rakefile +0 -4
  3. data/bin/puppet +18 -10
  4. data/bin/puppetd +1 -1
  5. data/bin/puppetdoc +14 -4
  6. data/bin/puppetmasterd +1 -1
  7. data/bin/puppetrun +3 -8
  8. data/bin/ralsh +12 -11
  9. data/conf/freebsd/puppetd +1 -1
  10. data/conf/freebsd/puppetmasterd +1 -1
  11. data/conf/gentoo/puppet/puppet.conf +29 -0
  12. data/conf/namespaceauth.conf +20 -0
  13. data/conf/redhat/puppet.spec +4 -1
  14. data/conf/solaris/smf/puppetd.xml +1 -1
  15. data/conf/solaris/smf/puppetmasterd.xml +1 -1
  16. data/conf/suse/puppet.spec +10 -8
  17. data/examples/root/etc/puppet/{puppetmasterd.conf → puppet.conf} +6 -3
  18. data/ext/logcheck/puppet +7 -0
  19. data/ext/puppet-test +28 -5
  20. data/lib/puppet.rb +2 -1
  21. data/lib/puppet/defaults.rb +12 -5
  22. data/lib/puppet/dsl.rb +43 -45
  23. data/lib/puppet/external/{gratr/rdot.rb → dot.rb} +0 -0
  24. data/lib/puppet/external/nagios.rb +50 -0
  25. data/lib/puppet/external/nagios/base.rb +421 -0
  26. data/lib/puppet/external/nagios/parser.rb +816 -0
  27. data/lib/puppet/file_serving/file_base.rb +16 -3
  28. data/lib/puppet/file_serving/metadata.rb +29 -11
  29. data/lib/puppet/indirector/terminus.rb +1 -0
  30. data/lib/puppet/metatype/closure.rb +4 -0
  31. data/lib/puppet/metatype/evaluation.rb +2 -17
  32. data/lib/puppet/metatype/metaparams.rb +1 -1
  33. data/lib/puppet/network.rb +3 -0
  34. data/lib/puppet/network/client.rb +4 -5
  35. data/lib/puppet/network/client/master.rb +10 -7
  36. data/lib/puppet/network/handler/fileserver.rb +22 -45
  37. data/lib/puppet/network/http_pool.rb +3 -0
  38. data/lib/puppet/network/http_server/mongrel.rb +7 -1
  39. data/lib/puppet/network/http_server/webrick.rb +4 -3
  40. data/lib/puppet/network/xmlrpc/client.rb +12 -1
  41. data/lib/puppet/node/catalog.rb +51 -40
  42. data/lib/puppet/parser/ast.rb +27 -49
  43. data/lib/puppet/parser/ast/astarray.rb +5 -24
  44. data/lib/puppet/parser/ast/caseopt.rb +4 -4
  45. data/lib/puppet/parser/ast/casestatement.rb +4 -5
  46. data/lib/puppet/parser/ast/collection.rb +3 -5
  47. data/lib/puppet/parser/ast/collexpr.rb +3 -5
  48. data/lib/puppet/parser/ast/definition.rb +148 -159
  49. data/lib/puppet/parser/ast/else.rb +2 -3
  50. data/lib/puppet/parser/ast/function.rb +3 -10
  51. data/lib/puppet/parser/ast/hostclass.rb +66 -59
  52. data/lib/puppet/parser/ast/ifstatement.rb +4 -5
  53. data/lib/puppet/parser/ast/leaf.rb +6 -6
  54. data/lib/puppet/parser/ast/node.rb +26 -58
  55. data/lib/puppet/parser/ast/resource.rb +5 -7
  56. data/lib/puppet/parser/ast/resource_defaults.rb +2 -4
  57. data/lib/puppet/parser/ast/resource_override.rb +4 -6
  58. data/lib/puppet/parser/ast/resource_reference.rb +2 -4
  59. data/lib/puppet/parser/ast/resourceparam.rb +2 -4
  60. data/lib/puppet/parser/ast/selector.rb +5 -6
  61. data/lib/puppet/parser/ast/tag.rb +2 -4
  62. data/lib/puppet/parser/ast/vardef.rb +3 -4
  63. data/lib/puppet/parser/collector.rb +5 -5
  64. data/lib/puppet/parser/{compile.rb → compiler.rb} +69 -107
  65. data/lib/puppet/parser/functions.rb +3 -3
  66. data/lib/puppet/parser/interpreter.rb +32 -23
  67. data/lib/puppet/parser/lexer.rb +391 -282
  68. data/lib/puppet/parser/parser.rb +5 -4
  69. data/lib/puppet/parser/parser_support.rb +3 -6
  70. data/lib/puppet/parser/resource.rb +24 -36
  71. data/lib/puppet/parser/resource/param.rb +1 -1
  72. data/lib/puppet/parser/resource/reference.rb +7 -3
  73. data/lib/puppet/parser/scope.rb +12 -7
  74. data/lib/puppet/parser/templatewrapper.rb +1 -1
  75. data/lib/puppet/pgraph.rb +9 -98
  76. data/lib/puppet/provider/interface/redhat.rb +65 -65
  77. data/lib/puppet/provider/mount/parsed.rb +1 -1
  78. data/lib/puppet/provider/naginator.rb +55 -0
  79. data/lib/puppet/provider/nameservice/directoryservice.rb +6 -7
  80. data/lib/puppet/provider/package/fink.rb +0 -2
  81. data/lib/puppet/provider/package/gem.rb +9 -5
  82. data/lib/puppet/provider/package/openbsd.rb +1 -1
  83. data/lib/puppet/provider/package/pkgdmg.rb +3 -8
  84. data/lib/puppet/provider/package/portage.rb +4 -4
  85. data/lib/puppet/provider/package/yumhelper.py +8 -6
  86. data/lib/puppet/provider/parsedfile.rb +7 -1
  87. data/lib/puppet/provider/service/debian.rb +2 -0
  88. data/lib/puppet/provider/service/gentoo.rb +4 -0
  89. data/lib/puppet/provider/service/init.rb +1 -1
  90. data/lib/puppet/provider/sshkey/parsed.rb +2 -0
  91. data/lib/puppet/provider/user/useradd.rb +1 -1
  92. data/lib/puppet/rails.rb +4 -0
  93. data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +17 -0
  94. data/lib/puppet/rails/fact_value.rb +4 -0
  95. data/lib/puppet/rails/host.rb +1 -2
  96. data/lib/puppet/rails/param_value.rb +4 -0
  97. data/lib/puppet/rails/resource_tag.rb +4 -0
  98. data/lib/puppet/rails/source_file.rb +4 -1
  99. data/lib/puppet/relationship.rb +5 -1
  100. data/lib/puppet/reports/tagmail.rb +12 -1
  101. data/lib/puppet/resource_reference.rb +1 -1
  102. data/lib/puppet/simple_graph.rb +78 -11
  103. data/lib/puppet/sslcertificates.rb +1 -1
  104. data/lib/puppet/sslcertificates/ca.rb +3 -3
  105. data/lib/puppet/transaction.rb +7 -4
  106. data/lib/puppet/transportable.rb +1 -1
  107. data/lib/puppet/type.rb +3 -10
  108. data/lib/puppet/type/cron.rb +18 -0
  109. data/lib/puppet/type/exec.rb +18 -12
  110. data/lib/puppet/type/{pfile.rb → file.rb} +66 -84
  111. data/lib/puppet/type/file/checksum.rb +271 -0
  112. data/lib/puppet/type/{pfile → file}/content.rb +10 -15
  113. data/lib/puppet/type/{pfile → file}/ensure.rb +15 -8
  114. data/lib/puppet/type/{pfile → file}/group.rb +0 -0
  115. data/lib/puppet/type/{pfile → file}/mode.rb +0 -0
  116. data/lib/puppet/type/{pfile → file}/owner.rb +0 -0
  117. data/lib/puppet/type/{pfile → file}/source.rb +34 -48
  118. data/lib/puppet/type/{pfile → file}/target.rb +0 -0
  119. data/lib/puppet/type/{pfile → file}/type.rb +0 -0
  120. data/lib/puppet/type/{pfilebucket.rb → filebucket.rb} +0 -0
  121. data/lib/puppet/type/host.rb +13 -0
  122. data/lib/puppet/type/mailalias.rb +1 -1
  123. data/lib/puppet/type/nagios_command.rb +3 -0
  124. data/lib/puppet/type/nagios_contact.rb +3 -0
  125. data/lib/puppet/type/nagios_contactgroup.rb +3 -0
  126. data/lib/puppet/type/nagios_host.rb +3 -0
  127. data/lib/puppet/type/nagios_hostextinfo.rb +3 -0
  128. data/lib/puppet/type/nagios_hostgroup.rb +3 -0
  129. data/lib/puppet/type/nagios_hostgroupescalation.rb +3 -0
  130. data/lib/puppet/type/nagios_service.rb +3 -0
  131. data/lib/puppet/type/nagios_servicedependency.rb +3 -0
  132. data/lib/puppet/type/nagios_serviceescalation.rb +3 -0
  133. data/lib/puppet/type/nagios_serviceextinfo.rb +3 -0
  134. data/lib/puppet/type/nagios_timeperiod.rb +3 -0
  135. data/lib/puppet/type/package.rb +4 -12
  136. data/lib/puppet/type/service.rb +9 -0
  137. data/lib/puppet/type/sshkey.rb +3 -3
  138. data/lib/puppet/util/autoload.rb +5 -5
  139. data/lib/puppet/util/checksums.rb +51 -13
  140. data/lib/puppet/util/constant_inflector.rb +14 -0
  141. data/lib/puppet/util/filetype.rb +1 -1
  142. data/lib/puppet/util/graph.rb +3 -9
  143. data/lib/puppet/util/nagios_maker.rb +57 -0
  144. data/lib/puppet/util/settings.rb +19 -16
  145. data/lib/puppet/util/tagging.rb +39 -0
  146. data/test/executables/puppetbin.rb +17 -0
  147. data/test/language/ast.rb +8 -58
  148. data/test/language/ast/casestatement.rb +3 -3
  149. data/test/language/ast/resource.rb +6 -7
  150. data/test/language/ast/resource_reference.rb +12 -12
  151. data/test/language/ast/selector.rb +2 -2
  152. data/test/language/ast/variable.rb +2 -2
  153. data/test/language/functions.rb +24 -24
  154. data/test/language/parser.rb +20 -8
  155. data/test/language/resource.rb +5 -42
  156. data/test/language/scope.rb +21 -37
  157. data/test/language/snippets.rb +7 -0
  158. data/test/lib/puppettest.rb +28 -14
  159. data/test/lib/puppettest/parsertesting.rb +10 -10
  160. data/test/lib/puppettest/support/resources.rb +1 -1
  161. data/test/network/client/master.rb +10 -0
  162. data/test/network/handler/fileserver.rb +51 -49
  163. data/test/network/server/webrick.rb +1 -1
  164. data/test/other/dsl.rb +3 -4
  165. data/test/other/transactions.rb +6 -4
  166. data/test/rails/ast.rb +2 -2
  167. data/test/rails/configuration.rb +1 -1
  168. data/test/rails/railsparameter.rb +2 -0
  169. data/test/rails/railsresource.rb +1 -0
  170. data/test/ral/manager/type.rb +4 -4
  171. data/test/ral/providers/cron/crontab.rb +3 -1
  172. data/test/ral/providers/package.rb +1 -1
  173. data/test/ral/{types → type}/basic.rb +2 -2
  174. data/test/ral/{types → type}/cron.rb +0 -0
  175. data/test/ral/{types → type}/exec.rb +42 -2
  176. data/test/ral/{types → type}/file.rb +34 -79
  177. data/test/ral/{types → type}/file/target.rb +0 -0
  178. data/test/ral/{types → type}/filebucket.rb +0 -0
  179. data/test/ral/{types → type}/fileignoresource.rb +0 -0
  180. data/test/ral/{types → type}/filesources.rb +8 -27
  181. data/test/ral/{types → type}/group.rb +0 -0
  182. data/test/ral/{types → type}/host.rb +16 -0
  183. data/test/ral/{types → type}/mailalias.rb +0 -0
  184. data/test/ral/{types → type}/parameter.rb +0 -0
  185. data/test/ral/{types → type}/port.rb +0 -0
  186. data/test/ral/{types → type}/property.rb +0 -0
  187. data/test/ral/{types → type}/resources.rb +0 -0
  188. data/test/ral/{types → type}/service.rb +0 -0
  189. data/test/ral/{types → type}/sshkey.rb +0 -0
  190. data/test/ral/{types → type}/tidy.rb +1 -0
  191. data/test/ral/{types → type}/user.rb +0 -0
  192. data/test/ral/{types → type}/yumrepo.rb +0 -0
  193. data/test/ral/{types → type}/zone.rb +0 -0
  194. data/test/util/autoload.rb +24 -5
  195. metadata +60 -107
  196. data/conf/gentoo/puppet/puppetca.conf +0 -29
  197. data/conf/gentoo/puppet/puppetd.conf +0 -29
  198. data/conf/gentoo/puppet/puppetmasterd.conf +0 -29
  199. data/examples/root/etc/puppet/puppetd.conf +0 -4
  200. data/lib/puppet/external/gratr.rb +0 -33
  201. data/lib/puppet/external/gratr/adjacency_graph.rb +0 -257
  202. data/lib/puppet/external/gratr/base.rb +0 -34
  203. data/lib/puppet/external/gratr/biconnected.rb +0 -116
  204. data/lib/puppet/external/gratr/chinese_postman.rb +0 -123
  205. data/lib/puppet/external/gratr/common.rb +0 -73
  206. data/lib/puppet/external/gratr/comparability.rb +0 -92
  207. data/lib/puppet/external/gratr/digraph.rb +0 -116
  208. data/lib/puppet/external/gratr/digraph_distance.rb +0 -185
  209. data/lib/puppet/external/gratr/dot.rb +0 -90
  210. data/lib/puppet/external/gratr/edge.rb +0 -145
  211. data/lib/puppet/external/gratr/graph.rb +0 -303
  212. data/lib/puppet/external/gratr/graph_api.rb +0 -83
  213. data/lib/puppet/external/gratr/import.rb +0 -44
  214. data/lib/puppet/external/gratr/labels.rb +0 -90
  215. data/lib/puppet/external/gratr/maximum_flow.rb +0 -64
  216. data/lib/puppet/external/gratr/search.rb +0 -409
  217. data/lib/puppet/external/gratr/strong_components.rb +0 -127
  218. data/lib/puppet/external/gratr/undirected_graph.rb +0 -153
  219. data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +0 -62
  220. data/lib/puppet/rails/external/tagging/init.rb +0 -5
  221. data/lib/puppet/rails/external/tagging/tag.rb +0 -50
  222. data/lib/puppet/rails/external/tagging/tagging.rb +0 -12
  223. data/lib/puppet/rails/puppet_class.rb +0 -6
  224. data/lib/puppet/reference/node_source.rb +0 -9
  225. data/lib/puppet/reference/report.rb +0 -21
  226. data/lib/puppet/type/pfile/checksum.rb +0 -326
  227. data/test/language/ast/definition.rb +0 -166
  228. data/test/language/ast/hostclass.rb +0 -184
  229. data/test/language/compile.rb +0 -569
  230. data/test/language/lexer.rb +0 -276
  231. data/test/lib/mocha.rb +0 -19
  232. data/test/lib/mocha/any_instance_method.rb +0 -35
  233. data/test/lib/mocha/auto_verify.rb +0 -113
  234. data/test/lib/mocha/central.rb +0 -35
  235. data/test/lib/mocha/class_method.rb +0 -62
  236. data/test/lib/mocha/deprecation.rb +0 -22
  237. data/test/lib/mocha/exception_raiser.rb +0 -17
  238. data/test/lib/mocha/expectation.rb +0 -378
  239. data/test/lib/mocha/expectation_error.rb +0 -6
  240. data/test/lib/mocha/infinite_range.rb +0 -25
  241. data/test/lib/mocha/inspect.rb +0 -39
  242. data/test/lib/mocha/instance_method.rb +0 -8
  243. data/test/lib/mocha/is_a.rb +0 -9
  244. data/test/lib/mocha/metaclass.rb +0 -7
  245. data/test/lib/mocha/missing_expectation.rb +0 -27
  246. data/test/lib/mocha/mock.rb +0 -207
  247. data/test/lib/mocha/multiple_yields.rb +0 -20
  248. data/test/lib/mocha/no_yields.rb +0 -11
  249. data/test/lib/mocha/object.rb +0 -110
  250. data/test/lib/mocha/parameter_matchers.rb +0 -9
  251. data/test/lib/mocha/parameter_matchers/all_of.rb +0 -39
  252. data/test/lib/mocha/parameter_matchers/any_of.rb +0 -44
  253. data/test/lib/mocha/parameter_matchers/anything.rb +0 -30
  254. data/test/lib/mocha/parameter_matchers/has_entry.rb +0 -39
  255. data/test/lib/mocha/parameter_matchers/has_key.rb +0 -39
  256. data/test/lib/mocha/parameter_matchers/has_value.rb +0 -39
  257. data/test/lib/mocha/parameter_matchers/includes.rb +0 -37
  258. data/test/lib/mocha/pretty_parameters.rb +0 -28
  259. data/test/lib/mocha/return_values.rb +0 -31
  260. data/test/lib/mocha/setup_and_teardown.rb +0 -23
  261. data/test/lib/mocha/single_return_value.rb +0 -24
  262. data/test/lib/mocha/single_yield.rb +0 -18
  263. data/test/lib/mocha/standalone.rb +0 -32
  264. data/test/lib/mocha/stub.rb +0 -18
  265. data/test/lib/mocha/test_case_adapter.rb +0 -49
  266. data/test/lib/mocha/yield_parameters.rb +0 -31
@@ -95,7 +95,7 @@ class TestWebrickServer < Test::Unit::TestCase
95
95
  # the client starts its connection immediately, thus throwing
96
96
  # the error.
97
97
  assert_raise(OpenSSL::SSL::SSLError) {
98
- client = Puppet::Network::Client.status.new(:Server => "localhost", :Port => @@port)
98
+ Puppet::Network::HttpPool.http_instance("localhost", @@port).start
99
99
  }
100
100
  end
101
101
 
@@ -12,7 +12,7 @@ class TestDSL < Test::Unit::TestCase
12
12
 
13
13
  def teardown
14
14
  super
15
- Puppet::Aspect.clear
15
+ Puppet::DSL::Aspect.clear
16
16
  end
17
17
 
18
18
  def test_aspect
@@ -22,7 +22,7 @@ class TestDSL < Test::Unit::TestCase
22
22
  end
23
23
  end
24
24
 
25
- assert_equal(a, Puppet::Aspect[:yaytest])
25
+ assert_equal(a, Puppet::DSL::Aspect[:yaytest])
26
26
 
27
27
  # Now make a child aspect
28
28
  b = nil
@@ -154,8 +154,7 @@ class TestDSL < Test::Unit::TestCase
154
154
 
155
155
  resource = nil
156
156
  assert_nothing_raised do
157
- resource = a.newresource filetype, path,
158
- :content => "yay", :mode => "640"
157
+ resource = a.newresource filetype, path, :content => "yay", :mode => "640"
159
158
  end
160
159
 
161
160
  assert_instance_of(Puppet::Parser::Resource, resource)
@@ -6,10 +6,12 @@ require 'puppet'
6
6
  require 'puppettest'
7
7
  require 'mocha'
8
8
  require 'puppettest/support/resources'
9
+ require 'puppettest/support/utils'
9
10
 
10
11
  class TestTransactions < Test::Unit::TestCase
11
12
  include PuppetTest::FileTesting
12
13
  include PuppetTest::Support::Resources
14
+ include PuppetTest::Support::Utils
13
15
  class Fakeprop <Puppet::Property
14
16
  attr_accessor :path, :is, :should, :name
15
17
  def should_to_s(value)
@@ -348,12 +350,12 @@ class TestTransactions < Test::Unit::TestCase
348
350
  fcomp = Puppet::Type.type(:component).create(:name => "file")
349
351
  config.add_resource fcomp
350
352
  config.add_resource file
351
- config.add_edge!(fcomp, file)
353
+ config.add_edge(fcomp, file)
352
354
 
353
355
  ecomp = Puppet::Type.type(:component).create(:name => "exec")
354
356
  config.add_resource ecomp
355
357
  config.add_resource exec
356
- config.add_edge!(ecomp, exec)
358
+ config.add_edge(ecomp, exec)
357
359
 
358
360
  # 'subscribe' expects an array of arrays
359
361
  #component[:require] = [[file.class.name,file.name]]
@@ -828,10 +830,10 @@ class TestTransactions < Test::Unit::TestCase
828
830
  c = trigger.new(:c)
829
831
  nope = Puppet::Relationship.new(a, b)
830
832
  yep = Puppet::Relationship.new(a, c, {:callback => :refresh})
831
- graph.add_edge!(nope)
833
+ graph.add_edge(nope)
832
834
 
833
835
  # And a triggering one.
834
- graph.add_edge!(yep)
836
+ graph.add_edge(yep)
835
837
 
836
838
  # Create our transaction
837
839
  trans = Puppet::Transaction.new(graph)
@@ -44,12 +44,12 @@ class TestRailsAST < PuppetTest::TestCase
44
44
  # And if it is, make sure we throw an error.
45
45
  if bad
46
46
  assert_raise(Puppet::ParseError, "Evaluated '#{string}'") do
47
- str, code = query.evaluate :scope => @scope
47
+ str, code = query.evaluate @scope
48
48
  end
49
49
  next
50
50
  else
51
51
  assert_nothing_raised("Could not evaluate '#{string}'") do
52
- str, code = query.evaluate :scope => @scope
52
+ str, code = query.evaluate @scope
53
53
  end
54
54
  end
55
55
  assert_nothing_raised("Could not find resource") do
@@ -24,7 +24,7 @@ class ConfigurationRailsTests < PuppetTest::TestCase
24
24
  # We need to make sure finished objects are stored in the db.
25
25
  def test_finish_before_store
26
26
  railsinit
27
- compile = mkcompile
27
+ compile = mkcompiler
28
28
  parser = compile.parser
29
29
 
30
30
  node = parser.newnode [compile.node.name], :code => AST::ASTArray.new(:children => [
@@ -25,6 +25,8 @@ class TestRailsParameter < Test::Unit::TestCase
25
25
  source = parser.newclass "myclass"
26
26
 
27
27
  host = Puppet::Rails::Host.new(:name => "myhost")
28
+
29
+ host.save
28
30
 
29
31
  resource = host.resources.create(
30
32
  :title => "/tmp/to_resource",
@@ -29,6 +29,7 @@ class TestRailsResource < Test::Unit::TestCase
29
29
  def mktest_resource
30
30
  # We need a host for resources
31
31
  host = Puppet::Rails::Host.new(:name => "myhost")
32
+ host.save
32
33
 
33
34
  # Now build a resource
34
35
  resource = host.resources.create(
@@ -574,8 +574,8 @@ class TestType < Test::Unit::TestCase
574
574
  assert_equal(greater, type.defaultprovider)
575
575
  end
576
576
 
577
- # Make sure that we can have multiple isomorphic objects with the same name,
578
- # but not with non-isomorphic objects.
577
+ # Make sure that we can have multiple non-isomorphic objects with the same name,
578
+ # but not with isomorphic objects.
579
579
  def test_isomorphic_names
580
580
  # First do execs, since they're not isomorphic.
581
581
  echo = Puppet::Util.binary "echo"
@@ -708,7 +708,7 @@ class TestType < Test::Unit::TestCase
708
708
  res = type.create(hash)
709
709
  config.add_resource res
710
710
  if parent
711
- config.add_edge!(parent, res)
711
+ config.add_edge(parent, res)
712
712
  end
713
713
  res
714
714
  end
@@ -741,7 +741,7 @@ class TestType < Test::Unit::TestCase
741
741
 
742
742
  newcomp = Puppet::Type.newcomponent :type => "yay", :name => "Good[bad]"
743
743
  config.add_resource newcomp
744
- config.add_edge! comp, newcomp
744
+ config.add_edge comp, newcomp
745
745
  exec = mk.call(6, :parent => newcomp)
746
746
  assert_equal("//Good[bad]/Exec[exec6]", exec.path)
747
747
  end
@@ -344,7 +344,9 @@ class TestCronParsedProvider < Test::Unit::TestCase
344
344
  end
345
345
  end
346
346
 
347
- # Make sure we can create a cron in an empty tab
347
+ # Make sure we can create a cron in an empty tab.
348
+ # LAK:FIXME This actually modifies the user's crontab,
349
+ # which is pretty heinous.
348
350
  def test_mkcron_if_empty
349
351
  setme
350
352
  @provider.filetype = @oldfiletype
@@ -46,7 +46,7 @@ class TestPackageProvider < Test::Unit::TestCase
46
46
  end
47
47
  facts = {}
48
48
  Facter.to_hash.each do |fact, value|
49
- facts[fact.downcase.intern] = value.downcase.intern
49
+ facts[fact.to_s.downcase.intern] = value.to_s.downcase.intern
50
50
  end
51
51
  list.find_all { |hash| # First find the matching providers
52
52
  hash.include?(:provider) and providers.include?(hash[:provider])
@@ -36,8 +36,8 @@ class TestBasic < Test::Unit::TestCase
36
36
  )
37
37
  }
38
38
  @config = mk_catalog(@component, @configfile, @command)
39
- @config.add_edge! @component, @configfile
40
- @config.add_edge! @component, @command
39
+ @config.add_edge @component, @configfile
40
+ @config.add_edge @component, @command
41
41
  end
42
42
 
43
43
  def teardown
File without changes
@@ -394,8 +394,8 @@ class TestExec < Test::Unit::TestCase
394
394
  assert_apply(exec)
395
395
 
396
396
  assert_nothing_raised {
397
- exec[:command] = "echo logoutput is warning"
398
- exec[:logoutput] = "warning"
397
+ exec[:command] = "echo logoutput is on_failure"
398
+ exec[:logoutput] = "on_failure"
399
399
  }
400
400
 
401
401
  assert_apply(exec)
@@ -587,6 +587,46 @@ and stuff"
587
587
  assert_equal("A B\n", output)
588
588
  end
589
589
 
590
+ def test_environmentparam
591
+ exec = Puppet::Type.newexec(
592
+ :command => "echo $environmenttest",
593
+ :path => ENV["PATH"],
594
+ :environment => "environmenttest=yayness"
595
+ )
596
+
597
+ assert(exec, "Could not make exec")
598
+
599
+ output = status = nil
600
+ assert_nothing_raised {
601
+ output, status = exec.run("echo $environmenttest")
602
+ }
603
+
604
+ assert_equal("yayness\n", output)
605
+
606
+ # Now check whether we can do multiline settings
607
+ assert_nothing_raised do
608
+ exec[:environment] = "environmenttest=a list of things
609
+ and stuff"
610
+ end
611
+
612
+ output = status = nil
613
+ assert_nothing_raised {
614
+ output, status = exec.run('echo "$environmenttest"')
615
+ }
616
+ assert_equal("a list of things\nand stuff\n", output)
617
+
618
+ # Now test arrays
619
+ assert_nothing_raised do
620
+ exec[:environment] = ["funtest=A", "yaytest=B"]
621
+ end
622
+
623
+ output = status = nil
624
+ assert_nothing_raised {
625
+ output, status = exec.run('echo "$funtest" "$yaytest"')
626
+ }
627
+ assert_equal("A B\n", output)
628
+ end
629
+
590
630
  def test_timeout
591
631
  exec = Puppet::Type.type(:exec).create(:command => "sleep 1", :path => ENV["PATH"], :timeout => "0.2")
592
632
  time = Time.now
@@ -9,9 +9,7 @@ require 'fileutils'
9
9
  class TestFile < Test::Unit::TestCase
10
10
  include PuppetTest::Support::Utils
11
11
  include PuppetTest::FileTesting
12
- # hmmm
13
- # this is complicated, because we store references to the created
14
- # objects in a central store
12
+
15
13
  def mkfile(hash)
16
14
  file = nil
17
15
  assert_nothing_raised {
@@ -21,8 +19,6 @@ class TestFile < Test::Unit::TestCase
21
19
  end
22
20
 
23
21
  def mktestfile
24
- # because luke's home directory is on nfs, it can't be used for testing
25
- # as root
26
22
  tmpfile = tempfile()
27
23
  File.open(tmpfile, "w") { |f| f.puts rand(100) }
28
24
  @@tmpfiles.push tmpfile
@@ -181,7 +177,7 @@ class TestFile < Test::Unit::TestCase
181
177
  assert_equal(inituser, File.stat(file).uid)
182
178
 
183
179
  obj.delete(:owner)
184
- obj[:links] = :ignore
180
+ obj[:links] = :follow
185
181
 
186
182
  # And then test 'group'
187
183
  group = nonrootgroup
@@ -189,12 +185,6 @@ class TestFile < Test::Unit::TestCase
189
185
  initgroup = File.stat(file).gid
190
186
  obj[:group] = group.name
191
187
 
192
- assert_events([:file_changed], obj)
193
- assert_equal(initgroup, File.stat(file).gid)
194
- assert_equal(group.gid, File.lstat(link).gid)
195
- File.chown(nil, initgroup, file)
196
- File.lchown(nil, initgroup, link)
197
-
198
188
  obj[:links] = :follow
199
189
  assert_events([:file_changed], obj)
200
190
  assert_equal(group.gid, File.stat(file).gid)
@@ -407,8 +397,7 @@ class TestFile < Test::Unit::TestCase
407
397
 
408
398
  assert(events)
409
399
 
410
- assert(! events.include?(:file_changed),
411
- "File incorrectly changed")
400
+ assert(! events.include?(:file_changed), "File incorrectly changed")
412
401
  assert_events([], file)
413
402
 
414
403
  # We have to sleep because the time resolution of the time-based
@@ -1046,66 +1035,6 @@ class TestFile < Test::Unit::TestCase
1046
1035
  "directory mode is incorrect")
1047
1036
  end
1048
1037
 
1049
- def test_followlinks
1050
- File.umask(0022)
1051
-
1052
- basedir = tempfile()
1053
- Dir.mkdir(basedir)
1054
- file = File.join(basedir, "file")
1055
- link = File.join(basedir, "link")
1056
-
1057
- File.open(file, "w", 0644) { |f| f.puts "yayness"; f.flush }
1058
- File.symlink(file, link)
1059
-
1060
- obj = nil
1061
- assert_nothing_raised {
1062
- obj = Puppet.type(:file).create(
1063
- :path => link,
1064
- :mode => "755"
1065
- )
1066
- }
1067
- obj.retrieve
1068
-
1069
- assert_events([], obj)
1070
-
1071
- # Assert that we default to not following links
1072
- assert_equal("%o" % 0644, "%o" % (File.stat(file).mode & 007777))
1073
-
1074
- # Assert that we can manage the link directly, but modes still don't change
1075
- obj[:links] = :manage
1076
- assert_events([], obj)
1077
-
1078
- assert_equal("%o" % 0644, "%o" % (File.stat(file).mode & 007777))
1079
-
1080
- obj[:links] = :follow
1081
- assert_events([:file_changed], obj)
1082
-
1083
- assert_equal("%o" % 0755, "%o" % (File.stat(file).mode & 007777))
1084
-
1085
- # Now verify that content and checksum don't update, either
1086
- obj.delete(:mode)
1087
- obj[:checksum] = "md5"
1088
- obj[:links] = :ignore
1089
-
1090
- assert_events([], obj)
1091
- File.open(file, "w") { |f| f.puts "more text" }
1092
- assert_events([], obj)
1093
- obj[:links] = :follow
1094
- assert_events([], obj)
1095
- File.open(file, "w") { |f| f.puts "even more text" }
1096
- assert_events([:file_changed], obj)
1097
-
1098
- obj.delete(:checksum)
1099
- obj[:content] = "this is some content"
1100
- obj[:links] = :ignore
1101
-
1102
- assert_events([], obj)
1103
- File.open(file, "w") { |f| f.puts "more text" }
1104
- assert_events([], obj)
1105
- obj[:links] = :follow
1106
- assert_events([:file_changed], obj)
1107
- end
1108
-
1109
1038
  # If both 'ensure' and 'content' are used, make sure that all of the other
1110
1039
  # properties are handled correctly.
1111
1040
  def test_contentwithmode
@@ -1292,6 +1221,7 @@ class TestFile < Test::Unit::TestCase
1292
1221
  :title => "localfile",
1293
1222
  :path => localfile,
1294
1223
  :content => "rahtest",
1224
+ :ensure => :file,
1295
1225
  :backup => false
1296
1226
  )
1297
1227
 
@@ -1304,8 +1234,8 @@ class TestFile < Test::Unit::TestCase
1304
1234
  config.apply
1305
1235
 
1306
1236
  assert(FileTest.exists?(dsourcefile), "File did not get copied")
1307
- assert(FileTest.exists?(localfile), "File did not get created")
1308
- assert(FileTest.exists?(purgee), "File got prematurely purged")
1237
+ assert(FileTest.exists?(localfile), "Local file did not get created")
1238
+ assert(FileTest.exists?(purgee), "Purge target got prematurely purged")
1309
1239
 
1310
1240
  assert_nothing_raised { destobj[:purge] = true }
1311
1241
  config.apply
@@ -1387,8 +1317,7 @@ class TestFile < Test::Unit::TestCase
1387
1317
  File.symlink(dir, link)
1388
1318
  File.open(file, "w") { |f| f.puts "" }
1389
1319
  assert_equal(dir, File.readlink(link))
1390
- obj = Puppet::Type.newfile :path => link, :ensure => :link,
1391
- :target => file, :recurse => false, :backup => "main"
1320
+ obj = Puppet::Type.newfile :path => link, :ensure => :link, :target => file, :recurse => false, :backup => "main"
1392
1321
 
1393
1322
  assert_apply(obj)
1394
1323
 
@@ -1817,5 +1746,31 @@ class TestFile < Test::Unit::TestCase
1817
1746
  changes = obj.evaluate
1818
1747
  assert(changes.empty?, "Missing file with no ensure resulted in changes")
1819
1748
  end
1820
- end
1821
1749
 
1750
+ def test_root_dir_is_named_correctly
1751
+ obj = Puppet::Type.newfile(:path => '/', :mode => 0755)
1752
+ assert_equal("/", obj.title, "/ directory was changed to empty string")
1753
+ end
1754
+
1755
+ # #1010 and #1037 -- write should fail if the written checksum does not
1756
+ # match the file we thought we were writing.
1757
+ def test_write_validates_checksum
1758
+ file = tempfile
1759
+ inst = Puppet::Type.newfile(:path => file, :content => "something")
1760
+
1761
+ tmpfile = file + ".puppettmp"
1762
+
1763
+ wh = mock 'writehandle', :print => nil
1764
+ rh = mock 'readhandle'
1765
+ rh.expects(:read).with(512).times(2).returns("other").then.returns(nil)
1766
+ File.expects(:open).with { |*args| args[0] == tmpfile and args[1] != "r" }.yields(wh)
1767
+ File.expects(:open).with { |*args| args[0] == tmpfile and args[1] == "r" }.yields(rh)
1768
+
1769
+ File.stubs(:rename)
1770
+ FileTest.stubs(:exist?).returns(true)
1771
+ FileTest.stubs(:file?).returns(true)
1772
+
1773
+ inst.expects(:fail)
1774
+ inst.write("something", :whatever)
1775
+ end
1776
+ end
File without changes
File without changes
@@ -84,8 +84,7 @@ class TestFileSources < Test::Unit::TestCase
84
84
  source = tempfile()
85
85
  dest = tempfile()
86
86
 
87
- file = Puppet::Type.newfile :path => dest, :source => source,
88
- :title => "copier"
87
+ file = Puppet::Type.newfile :path => dest, :source => source, :title => "copier"
89
88
 
90
89
  property = file.property(:source)
91
90
 
@@ -124,17 +123,10 @@ class TestFileSources < Test::Unit::TestCase
124
123
  File.open(target, "w") { |f| f.puts "yay" }
125
124
  File.symlink(target, source)
126
125
 
127
- file[:links] = :ignore
128
- assert_nil(property.describe(source),
129
- "Links were not ignored")
130
-
131
126
  file[:links] = :manage
132
- # We can't manage links at this point
133
- assert_raise(Puppet::Network::Handler::FileServerError) do
134
- property.describe(source)
135
- end
127
+ assert_equal("link", property.describe(source)[:type])
136
128
 
137
- # And then make sure links get followed, otherwise
129
+ # And then make sure links get followed
138
130
  file[:links] = :follow
139
131
  assert_equal("file", property.describe(source)[:type])
140
132
  end
@@ -753,29 +745,18 @@ class TestFileSources < Test::Unit::TestCase
753
745
  assert_nothing_raised {
754
746
  file = Puppet.type(:file).create(
755
747
  :name => dest,
756
- :source => link
748
+ :source => link,
749
+ :links => :follow
757
750
  )
758
751
  }
759
752
 
760
- # Default to skipping links
761
- assert_events([], file)
762
- assert(! FileTest.exists?(dest), "Created link")
763
-
764
- # Now follow the links
765
- file[:links] = :follow
766
753
  assert_events([:file_created], file)
767
754
  assert(FileTest.file?(dest), "Destination is not a file")
768
755
 
769
756
  # Now copy the links
770
- #assert_raise(Puppet::Network::Handler::FileServerError) {
771
- trans = nil
772
- assert_nothing_raised {
773
- file[:links] = :manage
774
- comp = mk_catalog(file)
775
- trans = comp.apply
776
- }
777
-
778
- assert(trans.failed?(file), "Object did not fail to copy links")
757
+ file[:links] = :manage
758
+ assert_events([:link_created], file)
759
+ assert(FileTest.symlink?(dest), "Destination is not a link")
779
760
  end
780
761
 
781
762
  def test_changes