Skip to content

Commit b6e8cee

Browse files
committed
Merge branch 'pr/3261'
* pr/3261: (maint) Refactor tests to use helper to create module directory (maint) Verify module exception is logged (maint) Avoid checking for strings in module_references (maint) Log invalid modules
2 parents 4fb6e72 + 5c9ca90 commit b6e8cee

File tree

3 files changed

+50
-23
lines changed

3 files changed

+50
-23
lines changed

lib/puppet/node/environment.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -343,8 +343,8 @@ def module_by_forge_name(forge_name)
343343
seen_modules = {}
344344
modulepath.each do |path|
345345
Dir.entries(path).each do |name|
346+
next if name == "." || name == ".."
346347
warn_about_mistaken_path(path, name)
347-
next if module_references.include?(name)
348348
if not seen_modules[name]
349349
module_references << {:name => name, :path => File.join(path, name)}
350350
seen_modules[name] = true
@@ -355,7 +355,8 @@ def module_by_forge_name(forge_name)
355355
module_references.collect do |reference|
356356
begin
357357
Puppet::Module.new(reference[:name], reference[:path], self)
358-
rescue Puppet::Module::Error
358+
rescue Puppet::Module::Error => e
359+
Puppet.log_exception(e)
359360
nil
360361
end
361362
end.compact

spec/lib/puppet_spec/modules.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,16 @@ def create(name, dir, options = {})
2222

2323
Puppet::Module.new(name, module_dir, environment)
2424
end
25+
26+
def generate_files(name, dir, options = {})
27+
module_dir = File.join(dir, name)
28+
FileUtils.mkdir_p(module_dir)
29+
30+
if metadata = options[:metadata]
31+
File.open(File.join(module_dir, 'metadata.json'), 'w') do |f|
32+
f.write(metadata.to_pson)
33+
end
34+
end
35+
end
2536
end
2637
end

spec/unit/node/environment_spec.rb

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -331,16 +331,16 @@ def assert_manifest_conflict(expectation, envconf_manifest_value)
331331
end
332332

333333
it "should ignore modules with invalid names" do
334-
FileUtils.mkdir_p(File.join(@first, 'foo'))
335-
FileUtils.mkdir_p(File.join(@first, 'foo2'))
336-
FileUtils.mkdir_p(File.join(@first, 'foo-bar'))
337-
FileUtils.mkdir_p(File.join(@first, 'foo_bar'))
338-
FileUtils.mkdir_p(File.join(@first, 'foo=bar'))
339-
FileUtils.mkdir_p(File.join(@first, 'foo bar'))
340-
FileUtils.mkdir_p(File.join(@first, 'foo.bar'))
341-
FileUtils.mkdir_p(File.join(@first, '-foo'))
342-
FileUtils.mkdir_p(File.join(@first, 'foo-'))
343-
FileUtils.mkdir_p(File.join(@first, 'foo--bar'))
334+
PuppetSpec::Modules.generate_files('foo', @first)
335+
PuppetSpec::Modules.generate_files('foo2', @first)
336+
PuppetSpec::Modules.generate_files('foo-bar', @first)
337+
PuppetSpec::Modules.generate_files('foo_bar', @first)
338+
PuppetSpec::Modules.generate_files('foo=bar', @first)
339+
PuppetSpec::Modules.generate_files('foo bar', @first)
340+
PuppetSpec::Modules.generate_files('foo.bar', @first)
341+
PuppetSpec::Modules.generate_files('-foo', @first)
342+
PuppetSpec::Modules.generate_files('foo-', @first)
343+
PuppetSpec::Modules.generate_files('foo--bar', @first)
344344

345345
env.modules_by_path[@first].collect{|mod| mod.name}.sort.should == %w{foo foo-bar foo2 foo_bar}
346346
end
@@ -446,37 +446,52 @@ def assert_manifest_conflict(expectation, envconf_manifest_value)
446446

447447
it "should return a module named for every directory in each module path" do
448448
%w{foo bar}.each do |mod_name|
449-
FileUtils.mkdir_p(File.join(@first, mod_name))
449+
PuppetSpec::Modules.generate_files(mod_name, @first)
450450
end
451451
%w{bee baz}.each do |mod_name|
452-
FileUtils.mkdir_p(File.join(@second, mod_name))
452+
PuppetSpec::Modules.generate_files(mod_name, @second)
453453
end
454454
env.modules.collect{|mod| mod.name}.sort.should == %w{foo bar bee baz}.sort
455455
end
456456

457457
it "should remove duplicates" do
458-
FileUtils.mkdir_p(File.join(@first, 'foo'))
459-
FileUtils.mkdir_p(File.join(@second, 'foo'))
458+
PuppetSpec::Modules.generate_files('foo', @first)
459+
PuppetSpec::Modules.generate_files('foo', @second)
460460

461461
env.modules.collect{|mod| mod.name}.sort.should == %w{foo}
462462
end
463463

464464
it "should ignore modules with invalid names" do
465-
FileUtils.mkdir_p(File.join(@first, 'foo'))
466-
FileUtils.mkdir_p(File.join(@first, 'foo2'))
467-
FileUtils.mkdir_p(File.join(@first, 'foo-bar'))
468-
FileUtils.mkdir_p(File.join(@first, 'foo_bar'))
469-
FileUtils.mkdir_p(File.join(@first, 'foo=bar'))
470-
FileUtils.mkdir_p(File.join(@first, 'foo bar'))
465+
PuppetSpec::Modules.generate_files('foo', @first)
466+
PuppetSpec::Modules.generate_files('foo2', @first)
467+
PuppetSpec::Modules.generate_files('foo-bar', @first)
468+
PuppetSpec::Modules.generate_files('foo_bar', @first)
469+
PuppetSpec::Modules.generate_files('foo=bar', @first)
470+
PuppetSpec::Modules.generate_files('foo bar', @first)
471471

472472
env.modules.collect{|mod| mod.name}.sort.should == %w{foo foo-bar foo2 foo_bar}
473473
end
474474

475475
it "should create modules with the correct environment" do
476-
FileUtils.mkdir_p(File.join(@first, 'foo'))
476+
PuppetSpec::Modules.generate_files('foo', @first)
477+
477478
env.modules.each {|mod| mod.environment.should == env }
478479
end
479480

481+
it "should log an exception if a module contains invalid metadata" do
482+
PuppetSpec::Modules.generate_files(
483+
'foo',
484+
@first,
485+
:metadata => {
486+
:author => 'puppetlabs'
487+
# missing source, version, etc
488+
}
489+
)
490+
491+
Puppet.expects(:log_exception).with(is_a(Puppet::Module::MissingMetadata))
492+
493+
env.modules
494+
end
480495
end
481496
end
482497
end

0 commit comments

Comments
 (0)