[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. 0.25.5-639-g8f94f35
test branch
puppet-dev at googlegroups.com
Wed Jul 14 10:34:47 UTC 2010
The following commit has been merged in the upstream branch:
commit 5d1934bbb118c254ed99f5a625844ad7c9064d8e
Author: Luke Kanies <luke at puppetlabs.com>
Date: Wed Jun 9 10:34:05 2010 -0400
Fixing #1545 - module_name is now a variable
This is only true for resource types (e.g., classes and defines)
of course.
The actual variable is 'module_name':
class mymod {
notify { "in mymod '$module_name'": }
}
Signed-off-by: Luke Kanies <luke at puppetlabs.com>
diff --git a/lib/puppet/parser/files.rb b/lib/puppet/parser/files.rb
index 1ff5552..37a7265 100644
--- a/lib/puppet/parser/files.rb
+++ b/lib/puppet/parser/files.rb
@@ -18,7 +18,7 @@ module Puppet::Parser::Files
module_name, pattern = split_file_path(start)
begin
if mod = Puppet::Module.find(module_name, options[:environment])
- return mod.match_manifests(pattern)
+ return [mod.name, mod.match_manifests(pattern)]
end
rescue Puppet::Module::InvalidName
# Than that would be a "no."
@@ -28,7 +28,7 @@ module Puppet::Parser::Files
if files.size == 0
files = Dir.glob(abspat + ".pp").reject { |f| FileTest.directory?(f) }
end
- return files
+ return [nil, files]
end
# Find the concrete file denoted by +file+. If +file+ is absolute,
diff --git a/lib/puppet/parser/type_loader.rb b/lib/puppet/parser/type_loader.rb
index bcb7fa3..71f0dc0 100644
--- a/lib/puppet/parser/type_loader.rb
+++ b/lib/puppet/parser/type_loader.rb
@@ -42,7 +42,7 @@ class Puppet::Parser::TypeLoader
end
pat = file
- files = Puppet::Parser::Files.find_manifests(pat, :cwd => dir, :environment => environment)
+ modname, files = Puppet::Parser::Files.find_manifests(pat, :cwd => dir, :environment => environment)
if files.size == 0
raise Puppet::ImportError.new("No file(s) found for import of '#{pat}'")
end
@@ -54,6 +54,8 @@ class Puppet::Parser::TypeLoader
@imported[file] = true
parse_file(file)
end
+
+ return modname
end
def imported?(file)
@@ -75,12 +77,14 @@ class Puppet::Parser::TypeLoader
def load_until(namespaces, name)
return nil if name == "" # special-case main.
name2files(namespaces, name).each do |filename|
+ modname = nil
import_if_possible(filename) do
- import(filename)
+ modname = import(filename)
@loaded << filename
end
if result = yield(filename)
Puppet.info "Automatically imported #{name} from #{filename}"
+ result.module_name = modname if modname and result.respond_to?(:module_name=)
return result
end
end
diff --git a/lib/puppet/resource/type.rb b/lib/puppet/resource/type.rb
index 627a1d5..227c544 100644
--- a/lib/puppet/resource/type.rb
+++ b/lib/puppet/resource/type.rb
@@ -13,7 +13,7 @@ class Puppet::Resource::Type
RESOURCE_SUPERTYPES = [:hostclass, :node, :definition]
- attr_accessor :file, :line, :doc, :code, :ruby_code, :parent, :resource_type_collection
+ attr_accessor :file, :line, :doc, :code, :ruby_code, :parent, :resource_type_collection, :module_name
attr_reader :type, :namespace, :arguments, :behaves_like
RESOURCE_SUPERTYPES.each do |t|
@@ -213,6 +213,7 @@ class Puppet::Resource::Type
scope.setvar("title", resource.title) unless set.include? :title
scope.setvar("name", resource.name) unless set.include? :name
+ scope.setvar("module_name", module_name) if module_name and ! set.include? :module_name
scope.class_set(self.name,scope) if hostclass?
end
diff --git a/spec/unit/parser/files.rb b/spec/unit/parser/files.rb
index 4c6e5b7..8921534 100644
--- a/spec/unit/parser/files.rb
+++ b/spec/unit/parser/files.rb
@@ -130,7 +130,7 @@ describe Puppet::Parser::Files do
Puppet.expects(:value).with(:modulepath).never
Dir.stubs(:glob).returns %w{foo}
- Puppet::Parser::Files.find_manifests("mymod/init.pp").should == %w{foo}
+ Puppet::Parser::Files.find_manifests("mymod/init.pp")
end
end
@@ -146,22 +146,22 @@ describe Puppet::Parser::Files do
Puppet::Parser::Files.find_manifests(file)
end
- it "should directly return fully qualified files" do
+ it "should return nil and an array of fully qualified files" do
file = @basepath + "/fully/qualified/file.pp"
Dir.stubs(:glob).with(file).returns([file])
- Puppet::Parser::Files.find_manifests(file).should == [file]
+ Puppet::Parser::Files.find_manifests(file).should == [nil, [file]]
end
it "should match against provided fully qualified patterns" do
pattern = @basepath + "/fully/qualified/pattern/*"
Dir.expects(:glob).with(pattern).returns(%w{my file list})
- Puppet::Parser::Files.find_manifests(pattern).should == %w{my file list}
+ Puppet::Parser::Files.find_manifests(pattern)[1].should == %w{my file list}
end
it "should look for files relative to the current directory" do
cwd = Dir.getwd
Dir.expects(:glob).with("#{cwd}/foobar/init.pp").returns(["#{cwd}/foobar/init.pp"])
- Puppet::Parser::Files.find_manifests("foobar/init.pp").should == ["#{cwd}/foobar/init.pp"]
+ Puppet::Parser::Files.find_manifests("foobar/init.pp")[1].should == ["#{cwd}/foobar/init.pp"]
end
it "should only return files, not directories" do
@@ -171,23 +171,23 @@ describe Puppet::Parser::Files do
Dir.expects(:glob).with(pattern).returns([file, dir])
FileTest.expects(:directory?).with(file).returns(false)
FileTest.expects(:directory?).with(dir).returns(true)
- Puppet::Parser::Files.find_manifests(pattern).should == [file]
+ Puppet::Parser::Files.find_manifests(pattern)[1].should == [file]
end
end
describe "when searching for manifests in a found module" do
- it "should return the manifests from the first found module" do
- mod = mock 'module'
+ it "should return the name of the module and the manifests from the first found module" do
+ mod = Puppet::Module.new("mymod")
Puppet::Node::Environment.new.expects(:module).with("mymod").returns mod
mod.expects(:match_manifests).with("init.pp").returns(%w{/one/mymod/manifests/init.pp})
- Puppet::Parser::Files.find_manifests("mymod/init.pp").should == ["/one/mymod/manifests/init.pp"]
+ Puppet::Parser::Files.find_manifests("mymod/init.pp").should == ["mymod", ["/one/mymod/manifests/init.pp"]]
end
it "should use the node environment if specified" do
- mod = mock 'module'
+ mod = Puppet::Module.new("mymod")
Puppet::Node::Environment.new("myenv").expects(:module).with("mymod").returns mod
mod.expects(:match_manifests).with("init.pp").returns(%w{/one/mymod/manifests/init.pp})
- Puppet::Parser::Files.find_manifests("mymod/init.pp", :environment => "myenv").should == ["/one/mymod/manifests/init.pp"]
+ Puppet::Parser::Files.find_manifests("mymod/init.pp", :environment => "myenv")[1].should == ["/one/mymod/manifests/init.pp"]
end
after { Puppet.settings.clear }
diff --git a/spec/unit/parser/type_loader.rb b/spec/unit/parser/type_loader.rb
index de181eb..2cd837c 100644
--- a/spec/unit/parser/type_loader.rb
+++ b/spec/unit/parser/type_loader.rb
@@ -83,6 +83,16 @@ describe Puppet::Parser::TypeLoader do
@loader.load_until(["foo"], "bar") { |f| true }
@loader.should be_loaded("file")
end
+
+ it "should set the module name on any created resource types" do
+ type = Puppet::Resource::Type.new(:hostclass, "mytype")
+
+ Puppet::Parser::Files.expects(:find_manifests).returns ["modname", %w{one}]
+ @loader.stubs(:parse_file)
+ @loader.load_until(["foo"], "one") { |f| type }
+
+ type.module_name.should == "modname"
+ end
end
describe "when mapping names to files" do
@@ -102,7 +112,7 @@ describe Puppet::Parser::TypeLoader do
describe "when importing" do
before do
- Puppet::Parser::Files.stubs(:find_manifests).returns %w{file}
+ Puppet::Parser::Files.stubs(:find_manifests).returns ["modname", %w{file}]
@loader.stubs(:parse_file)
end
@@ -113,46 +123,46 @@ describe Puppet::Parser::TypeLoader do
end
it "should find all manifests matching the file or pattern" do
- Puppet::Parser::Files.expects(:find_manifests).with { |pat, opts| pat == "myfile" }.returns %w{one}
+ Puppet::Parser::Files.expects(:find_manifests).with { |pat, opts| pat == "myfile" }.returns ["modname", %w{one}]
@loader.import("myfile")
end
it "should use the directory of the current file if one is set" do
- Puppet::Parser::Files.expects(:find_manifests).with { |pat, opts| opts[:cwd] == "/current" }.returns %w{one}
+ Puppet::Parser::Files.expects(:find_manifests).with { |pat, opts| opts[:cwd] == "/current" }.returns ["modname", %w{one}]
@loader.import("myfile", "/current/file")
end
it "should pass the environment when looking for files" do
- Puppet::Parser::Files.expects(:find_manifests).with { |pat, opts| opts[:environment] == @loader.environment }.returns %w{one}
+ Puppet::Parser::Files.expects(:find_manifests).with { |pat, opts| opts[:environment] == @loader.environment }.returns ["modname", %w{one}]
@loader.import("myfile")
end
it "should fail if no files are found" do
- Puppet::Parser::Files.expects(:find_manifests).returns []
+ Puppet::Parser::Files.expects(:find_manifests).returns [nil, []]
lambda { @loader.import("myfile") }.should raise_error(Puppet::ImportError)
end
it "should parse each found file" do
- Puppet::Parser::Files.expects(:find_manifests).returns %w{/one}
+ Puppet::Parser::Files.expects(:find_manifests).returns ["modname", %w{/one}]
@loader.expects(:parse_file).with("/one")
@loader.import("myfile")
end
it "should make each file qualified before attempting to parse it" do
- Puppet::Parser::Files.expects(:find_manifests).returns %w{one}
+ Puppet::Parser::Files.expects(:find_manifests).returns ["modname", %w{one}]
@loader.expects(:parse_file).with("/current/one")
@loader.import("myfile", "/current/file")
end
it "should know when a given file has been imported" do
- Puppet::Parser::Files.expects(:find_manifests).returns %w{/one}
+ Puppet::Parser::Files.expects(:find_manifests).returns ["modname", %w{/one}]
@loader.import("myfile")
@loader.should be_imported("/one")
end
it "should not attempt to import files that have already been imported" do
- Puppet::Parser::Files.expects(:find_manifests).returns %w{/one}
+ Puppet::Parser::Files.expects(:find_manifests).returns ["modname", %w{/one}]
@loader.expects(:parse_file).once
@loader.import("myfile")
diff --git a/spec/unit/resource/type.rb b/spec/unit/resource/type.rb
index bab2522..59e4623 100755
--- a/spec/unit/resource/type.rb
+++ b/spec/unit/resource/type.rb
@@ -314,6 +314,14 @@ describe Puppet::Resource::Type do
@scope.lookupvar("name").should == "bar"
end
+
+ it "should set its module name in the scope if available" do
+ @type.module_name = "mymod"
+
+ @type.set_resource_parameters(@resource, @scope)
+
+ @scope.lookupvar("module_name").should == "mymod"
+ end
end
describe "when describing and managing parent classes" do
--
Puppet packaging for Debian
More information about the Pkg-puppet-devel
mailing list