summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-10-18 04:45:55 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-10-18 04:45:55 +0000
commita05b8f5116af3a4908d5aed2a6a320b227609ec7 (patch)
tree74eb2ac2000b21d0eb474272575dde415dcf863f /test
parent8a4bf1bd9d5ed674c0eed2c64d8a5f587452ede2 (diff)
Adding a "realize" function that can be used to make one or more resource non-virtual. It is just syntactic sugar for a collection by title.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1808 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'test')
-rw-r--r--test/data/snippets/virtualresources.pp14
-rwxr-xr-xtest/language/functions.rb33
-rwxr-xr-xtest/language/snippets.rb7
3 files changed, 54 insertions, 0 deletions
diff --git a/test/data/snippets/virtualresources.pp b/test/data/snippets/virtualresources.pp
new file mode 100644
index 000000000..a29406b84
--- /dev/null
+++ b/test/data/snippets/virtualresources.pp
@@ -0,0 +1,14 @@
+class one {
+ @file { "/tmp/virtualtest1": content => "one" }
+ @file { "/tmp/virtualtest2": content => "two" }
+ @file { "/tmp/virtualtest3": content => "three" }
+ @file { "/tmp/virtualtest4": content => "four" }
+}
+
+class two {
+ File <| content == "one" |>
+ realize File["/tmp/virtualtest2"]
+ realize(File["/tmp/virtualtest3"], File["/tmp/virtualtest4"])
+}
+
+include one, two
diff --git a/test/language/functions.rb b/test/language/functions.rb
index 76b32138d..21af606db 100755
--- a/test/language/functions.rb
+++ b/test/language/functions.rb
@@ -7,9 +7,11 @@ require 'puppet/parser/interpreter'
require 'puppet/parser/parser'
require 'puppet/client'
require 'puppettest'
+require 'puppettest/resourcetesting'
class TestLangFunctions < Test::Unit::TestCase
include PuppetTest::ParserTesting
+ include PuppetTest::ResourceTesting
def test_functions
assert_raise(Puppet::ParseError) do
Puppet::Parser::AST::Function.new(
@@ -302,6 +304,37 @@ class TestLangFunctions < Test::Unit::TestCase
assert(Puppet::Parser::Scope.method_defined?(:function_autofunc),
"Did not set function correctly")
end
+
+ def test_realize
+ @interp, @scope, @source = mkclassframing
+ # Make a virtual resource
+ virtual = mkresource(:type => "file", :title => "/tmp/virtual",
+ :virtual => true, :params => {:owner => "root"})
+ @scope.setresource virtual
+
+ ref = Puppet::Parser::Resource::Reference.new(
+ :type => "file", :title => "/tmp/virtual",
+ :scope => @scope
+ )
+ # Now call the realize function
+ assert_nothing_raised do
+ @scope.function_realize(ref)
+ end
+
+ # Now make sure the virtual resource is no longer virtual
+ assert(! virtual.virtual?, "Did not make virtual resource real")
+
+ # Make sure we puke on any resource that doesn't exist
+
+ none = Puppet::Parser::Resource::Reference.new(
+ :type => "file", :title => "/tmp/nosuchfile",
+ :scope => @scope
+ )
+
+ assert_raise(Puppet::ParseError) do
+ @scope.function_realize(none)
+ end
+ end
end
# $Id$
diff --git a/test/language/snippets.rb b/test/language/snippets.rb
index 278218e4f..45137f917 100755
--- a/test/language/snippets.rb
+++ b/test/language/snippets.rb
@@ -478,6 +478,13 @@ class TestSnippets < Test::Unit::TestCase
assert(! FileTest.exists?("/tmp/colltest2"), "Incorrectly collected file")
end
+ def snippet_virtualresources(trans)
+ %w{1 2 3 4}.each do |num|
+ assert(FileTest.exists?("/tmp/virtualtest#{num}"),
+ "Did not collect file #{num}")
+ end
+ end
+
def disabled_snippet_dirchmod(trans)
dirs = %w{a b}.collect { |letter|
"/tmp/dirchmodtest%s" % letter