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.
- data/CHANGELOG +94 -0
- data/Rakefile +0 -4
- data/bin/puppet +18 -10
- data/bin/puppetd +1 -1
- data/bin/puppetdoc +14 -4
- data/bin/puppetmasterd +1 -1
- data/bin/puppetrun +3 -8
- data/bin/ralsh +12 -11
- data/conf/freebsd/puppetd +1 -1
- data/conf/freebsd/puppetmasterd +1 -1
- data/conf/gentoo/puppet/puppet.conf +29 -0
- data/conf/namespaceauth.conf +20 -0
- data/conf/redhat/puppet.spec +4 -1
- data/conf/solaris/smf/puppetd.xml +1 -1
- data/conf/solaris/smf/puppetmasterd.xml +1 -1
- data/conf/suse/puppet.spec +10 -8
- data/examples/root/etc/puppet/{puppetmasterd.conf → puppet.conf} +6 -3
- data/ext/logcheck/puppet +7 -0
- data/ext/puppet-test +28 -5
- data/lib/puppet.rb +2 -1
- data/lib/puppet/defaults.rb +12 -5
- data/lib/puppet/dsl.rb +43 -45
- data/lib/puppet/external/{gratr/rdot.rb → dot.rb} +0 -0
- data/lib/puppet/external/nagios.rb +50 -0
- data/lib/puppet/external/nagios/base.rb +421 -0
- data/lib/puppet/external/nagios/parser.rb +816 -0
- data/lib/puppet/file_serving/file_base.rb +16 -3
- data/lib/puppet/file_serving/metadata.rb +29 -11
- data/lib/puppet/indirector/terminus.rb +1 -0
- data/lib/puppet/metatype/closure.rb +4 -0
- data/lib/puppet/metatype/evaluation.rb +2 -17
- data/lib/puppet/metatype/metaparams.rb +1 -1
- data/lib/puppet/network.rb +3 -0
- data/lib/puppet/network/client.rb +4 -5
- data/lib/puppet/network/client/master.rb +10 -7
- data/lib/puppet/network/handler/fileserver.rb +22 -45
- data/lib/puppet/network/http_pool.rb +3 -0
- data/lib/puppet/network/http_server/mongrel.rb +7 -1
- data/lib/puppet/network/http_server/webrick.rb +4 -3
- data/lib/puppet/network/xmlrpc/client.rb +12 -1
- data/lib/puppet/node/catalog.rb +51 -40
- data/lib/puppet/parser/ast.rb +27 -49
- data/lib/puppet/parser/ast/astarray.rb +5 -24
- data/lib/puppet/parser/ast/caseopt.rb +4 -4
- data/lib/puppet/parser/ast/casestatement.rb +4 -5
- data/lib/puppet/parser/ast/collection.rb +3 -5
- data/lib/puppet/parser/ast/collexpr.rb +3 -5
- data/lib/puppet/parser/ast/definition.rb +148 -159
- data/lib/puppet/parser/ast/else.rb +2 -3
- data/lib/puppet/parser/ast/function.rb +3 -10
- data/lib/puppet/parser/ast/hostclass.rb +66 -59
- data/lib/puppet/parser/ast/ifstatement.rb +4 -5
- data/lib/puppet/parser/ast/leaf.rb +6 -6
- data/lib/puppet/parser/ast/node.rb +26 -58
- data/lib/puppet/parser/ast/resource.rb +5 -7
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -4
- data/lib/puppet/parser/ast/resource_override.rb +4 -6
- data/lib/puppet/parser/ast/resource_reference.rb +2 -4
- data/lib/puppet/parser/ast/resourceparam.rb +2 -4
- data/lib/puppet/parser/ast/selector.rb +5 -6
- data/lib/puppet/parser/ast/tag.rb +2 -4
- data/lib/puppet/parser/ast/vardef.rb +3 -4
- data/lib/puppet/parser/collector.rb +5 -5
- data/lib/puppet/parser/{compile.rb → compiler.rb} +69 -107
- data/lib/puppet/parser/functions.rb +3 -3
- data/lib/puppet/parser/interpreter.rb +32 -23
- data/lib/puppet/parser/lexer.rb +391 -282
- data/lib/puppet/parser/parser.rb +5 -4
- data/lib/puppet/parser/parser_support.rb +3 -6
- data/lib/puppet/parser/resource.rb +24 -36
- data/lib/puppet/parser/resource/param.rb +1 -1
- data/lib/puppet/parser/resource/reference.rb +7 -3
- data/lib/puppet/parser/scope.rb +12 -7
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/pgraph.rb +9 -98
- data/lib/puppet/provider/interface/redhat.rb +65 -65
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/naginator.rb +55 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +6 -7
- data/lib/puppet/provider/package/fink.rb +0 -2
- data/lib/puppet/provider/package/gem.rb +9 -5
- data/lib/puppet/provider/package/openbsd.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -8
- data/lib/puppet/provider/package/portage.rb +4 -4
- data/lib/puppet/provider/package/yumhelper.py +8 -6
- data/lib/puppet/provider/parsedfile.rb +7 -1
- data/lib/puppet/provider/service/debian.rb +2 -0
- data/lib/puppet/provider/service/gentoo.rb +4 -0
- data/lib/puppet/provider/service/init.rb +1 -1
- data/lib/puppet/provider/sshkey/parsed.rb +2 -0
- data/lib/puppet/provider/user/useradd.rb +1 -1
- data/lib/puppet/rails.rb +4 -0
- data/lib/puppet/rails/database/001_add_created_at_to_all_tables.rb +17 -0
- data/lib/puppet/rails/fact_value.rb +4 -0
- data/lib/puppet/rails/host.rb +1 -2
- data/lib/puppet/rails/param_value.rb +4 -0
- data/lib/puppet/rails/resource_tag.rb +4 -0
- data/lib/puppet/rails/source_file.rb +4 -1
- data/lib/puppet/relationship.rb +5 -1
- data/lib/puppet/reports/tagmail.rb +12 -1
- data/lib/puppet/resource_reference.rb +1 -1
- data/lib/puppet/simple_graph.rb +78 -11
- data/lib/puppet/sslcertificates.rb +1 -1
- data/lib/puppet/sslcertificates/ca.rb +3 -3
- data/lib/puppet/transaction.rb +7 -4
- data/lib/puppet/transportable.rb +1 -1
- data/lib/puppet/type.rb +3 -10
- data/lib/puppet/type/cron.rb +18 -0
- data/lib/puppet/type/exec.rb +18 -12
- data/lib/puppet/type/{pfile.rb → file.rb} +66 -84
- data/lib/puppet/type/file/checksum.rb +271 -0
- data/lib/puppet/type/{pfile → file}/content.rb +10 -15
- data/lib/puppet/type/{pfile → file}/ensure.rb +15 -8
- data/lib/puppet/type/{pfile → file}/group.rb +0 -0
- data/lib/puppet/type/{pfile → file}/mode.rb +0 -0
- data/lib/puppet/type/{pfile → file}/owner.rb +0 -0
- data/lib/puppet/type/{pfile → file}/source.rb +34 -48
- data/lib/puppet/type/{pfile → file}/target.rb +0 -0
- data/lib/puppet/type/{pfile → file}/type.rb +0 -0
- data/lib/puppet/type/{pfilebucket.rb → filebucket.rb} +0 -0
- data/lib/puppet/type/host.rb +13 -0
- data/lib/puppet/type/mailalias.rb +1 -1
- data/lib/puppet/type/nagios_command.rb +3 -0
- data/lib/puppet/type/nagios_contact.rb +3 -0
- data/lib/puppet/type/nagios_contactgroup.rb +3 -0
- data/lib/puppet/type/nagios_host.rb +3 -0
- data/lib/puppet/type/nagios_hostextinfo.rb +3 -0
- data/lib/puppet/type/nagios_hostgroup.rb +3 -0
- data/lib/puppet/type/nagios_hostgroupescalation.rb +3 -0
- data/lib/puppet/type/nagios_service.rb +3 -0
- data/lib/puppet/type/nagios_servicedependency.rb +3 -0
- data/lib/puppet/type/nagios_serviceescalation.rb +3 -0
- data/lib/puppet/type/nagios_serviceextinfo.rb +3 -0
- data/lib/puppet/type/nagios_timeperiod.rb +3 -0
- data/lib/puppet/type/package.rb +4 -12
- data/lib/puppet/type/service.rb +9 -0
- data/lib/puppet/type/sshkey.rb +3 -3
- data/lib/puppet/util/autoload.rb +5 -5
- data/lib/puppet/util/checksums.rb +51 -13
- data/lib/puppet/util/constant_inflector.rb +14 -0
- data/lib/puppet/util/filetype.rb +1 -1
- data/lib/puppet/util/graph.rb +3 -9
- data/lib/puppet/util/nagios_maker.rb +57 -0
- data/lib/puppet/util/settings.rb +19 -16
- data/lib/puppet/util/tagging.rb +39 -0
- data/test/executables/puppetbin.rb +17 -0
- data/test/language/ast.rb +8 -58
- data/test/language/ast/casestatement.rb +3 -3
- data/test/language/ast/resource.rb +6 -7
- data/test/language/ast/resource_reference.rb +12 -12
- data/test/language/ast/selector.rb +2 -2
- data/test/language/ast/variable.rb +2 -2
- data/test/language/functions.rb +24 -24
- data/test/language/parser.rb +20 -8
- data/test/language/resource.rb +5 -42
- data/test/language/scope.rb +21 -37
- data/test/language/snippets.rb +7 -0
- data/test/lib/puppettest.rb +28 -14
- data/test/lib/puppettest/parsertesting.rb +10 -10
- data/test/lib/puppettest/support/resources.rb +1 -1
- data/test/network/client/master.rb +10 -0
- data/test/network/handler/fileserver.rb +51 -49
- data/test/network/server/webrick.rb +1 -1
- data/test/other/dsl.rb +3 -4
- data/test/other/transactions.rb +6 -4
- data/test/rails/ast.rb +2 -2
- data/test/rails/configuration.rb +1 -1
- data/test/rails/railsparameter.rb +2 -0
- data/test/rails/railsresource.rb +1 -0
- data/test/ral/manager/type.rb +4 -4
- data/test/ral/providers/cron/crontab.rb +3 -1
- data/test/ral/providers/package.rb +1 -1
- data/test/ral/{types → type}/basic.rb +2 -2
- data/test/ral/{types → type}/cron.rb +0 -0
- data/test/ral/{types → type}/exec.rb +42 -2
- data/test/ral/{types → type}/file.rb +34 -79
- data/test/ral/{types → type}/file/target.rb +0 -0
- data/test/ral/{types → type}/filebucket.rb +0 -0
- data/test/ral/{types → type}/fileignoresource.rb +0 -0
- data/test/ral/{types → type}/filesources.rb +8 -27
- data/test/ral/{types → type}/group.rb +0 -0
- data/test/ral/{types → type}/host.rb +16 -0
- data/test/ral/{types → type}/mailalias.rb +0 -0
- data/test/ral/{types → type}/parameter.rb +0 -0
- data/test/ral/{types → type}/port.rb +0 -0
- data/test/ral/{types → type}/property.rb +0 -0
- data/test/ral/{types → type}/resources.rb +0 -0
- data/test/ral/{types → type}/service.rb +0 -0
- data/test/ral/{types → type}/sshkey.rb +0 -0
- data/test/ral/{types → type}/tidy.rb +1 -0
- data/test/ral/{types → type}/user.rb +0 -0
- data/test/ral/{types → type}/yumrepo.rb +0 -0
- data/test/ral/{types → type}/zone.rb +0 -0
- data/test/util/autoload.rb +24 -5
- metadata +60 -107
- data/conf/gentoo/puppet/puppetca.conf +0 -29
- data/conf/gentoo/puppet/puppetd.conf +0 -29
- data/conf/gentoo/puppet/puppetmasterd.conf +0 -29
- data/examples/root/etc/puppet/puppetd.conf +0 -4
- data/lib/puppet/external/gratr.rb +0 -33
- data/lib/puppet/external/gratr/adjacency_graph.rb +0 -257
- data/lib/puppet/external/gratr/base.rb +0 -34
- data/lib/puppet/external/gratr/biconnected.rb +0 -116
- data/lib/puppet/external/gratr/chinese_postman.rb +0 -123
- data/lib/puppet/external/gratr/common.rb +0 -73
- data/lib/puppet/external/gratr/comparability.rb +0 -92
- data/lib/puppet/external/gratr/digraph.rb +0 -116
- data/lib/puppet/external/gratr/digraph_distance.rb +0 -185
- data/lib/puppet/external/gratr/dot.rb +0 -90
- data/lib/puppet/external/gratr/edge.rb +0 -145
- data/lib/puppet/external/gratr/graph.rb +0 -303
- data/lib/puppet/external/gratr/graph_api.rb +0 -83
- data/lib/puppet/external/gratr/import.rb +0 -44
- data/lib/puppet/external/gratr/labels.rb +0 -90
- data/lib/puppet/external/gratr/maximum_flow.rb +0 -64
- data/lib/puppet/external/gratr/search.rb +0 -409
- data/lib/puppet/external/gratr/strong_components.rb +0 -127
- data/lib/puppet/external/gratr/undirected_graph.rb +0 -153
- data/lib/puppet/rails/external/tagging/acts_as_taggable.rb +0 -62
- data/lib/puppet/rails/external/tagging/init.rb +0 -5
- data/lib/puppet/rails/external/tagging/tag.rb +0 -50
- data/lib/puppet/rails/external/tagging/tagging.rb +0 -12
- data/lib/puppet/rails/puppet_class.rb +0 -6
- data/lib/puppet/reference/node_source.rb +0 -9
- data/lib/puppet/reference/report.rb +0 -21
- data/lib/puppet/type/pfile/checksum.rb +0 -326
- data/test/language/ast/definition.rb +0 -166
- data/test/language/ast/hostclass.rb +0 -184
- data/test/language/compile.rb +0 -569
- data/test/language/lexer.rb +0 -276
- data/test/lib/mocha.rb +0 -19
- data/test/lib/mocha/any_instance_method.rb +0 -35
- data/test/lib/mocha/auto_verify.rb +0 -113
- data/test/lib/mocha/central.rb +0 -35
- data/test/lib/mocha/class_method.rb +0 -62
- data/test/lib/mocha/deprecation.rb +0 -22
- data/test/lib/mocha/exception_raiser.rb +0 -17
- data/test/lib/mocha/expectation.rb +0 -378
- data/test/lib/mocha/expectation_error.rb +0 -6
- data/test/lib/mocha/infinite_range.rb +0 -25
- data/test/lib/mocha/inspect.rb +0 -39
- data/test/lib/mocha/instance_method.rb +0 -8
- data/test/lib/mocha/is_a.rb +0 -9
- data/test/lib/mocha/metaclass.rb +0 -7
- data/test/lib/mocha/missing_expectation.rb +0 -27
- data/test/lib/mocha/mock.rb +0 -207
- data/test/lib/mocha/multiple_yields.rb +0 -20
- data/test/lib/mocha/no_yields.rb +0 -11
- data/test/lib/mocha/object.rb +0 -110
- data/test/lib/mocha/parameter_matchers.rb +0 -9
- data/test/lib/mocha/parameter_matchers/all_of.rb +0 -39
- data/test/lib/mocha/parameter_matchers/any_of.rb +0 -44
- data/test/lib/mocha/parameter_matchers/anything.rb +0 -30
- data/test/lib/mocha/parameter_matchers/has_entry.rb +0 -39
- data/test/lib/mocha/parameter_matchers/has_key.rb +0 -39
- data/test/lib/mocha/parameter_matchers/has_value.rb +0 -39
- data/test/lib/mocha/parameter_matchers/includes.rb +0 -37
- data/test/lib/mocha/pretty_parameters.rb +0 -28
- data/test/lib/mocha/return_values.rb +0 -31
- data/test/lib/mocha/setup_and_teardown.rb +0 -23
- data/test/lib/mocha/single_return_value.rb +0 -24
- data/test/lib/mocha/single_yield.rb +0 -18
- data/test/lib/mocha/standalone.rb +0 -32
- data/test/lib/mocha/stub.rb +0 -18
- data/test/lib/mocha/test_case_adapter.rb +0 -49
- 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
|
-
|
98
|
+
Puppet::Network::HttpPool.http_instance("localhost", @@port).start
|
99
99
|
}
|
100
100
|
end
|
101
101
|
|
data/test/other/dsl.rb
CHANGED
@@ -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)
|
data/test/other/transactions.rb
CHANGED
@@ -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
|
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
|
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
|
833
|
+
graph.add_edge(nope)
|
832
834
|
|
833
835
|
# And a triggering one.
|
834
|
-
graph.add_edge
|
836
|
+
graph.add_edge(yep)
|
835
837
|
|
836
838
|
# Create our transaction
|
837
839
|
trans = Puppet::Transaction.new(graph)
|
data/test/rails/ast.rb
CHANGED
@@ -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
|
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
|
52
|
+
str, code = query.evaluate @scope
|
53
53
|
end
|
54
54
|
end
|
55
55
|
assert_nothing_raised("Could not find resource") do
|
data/test/rails/configuration.rb
CHANGED
@@ -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 =
|
27
|
+
compile = mkcompiler
|
28
28
|
parser = compile.parser
|
29
29
|
|
30
30
|
node = parser.newnode [compile.node.name], :code => AST::ASTArray.new(:children => [
|
data/test/rails/railsresource.rb
CHANGED
data/test/ral/manager/type.rb
CHANGED
@@ -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
|
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
|
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
|
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
|
40
|
-
@config.add_edge
|
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
|
398
|
-
exec[:logoutput] = "
|
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
|
-
|
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] = :
|
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), "
|
1308
|
-
assert(FileTest.exists?(purgee), "
|
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
|
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
|
-
|
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
|
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
|
-
|
771
|
-
|
772
|
-
|
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
|