From 99d8323ece06ffde0ddfb5753ef94541d473a9d9 Mon Sep 17 00:00:00 2001 From: Brice Figureau Date: Sat, 10 Jul 2010 18:52:28 +0200 Subject: Fix #4206 - import "path/*" tries to import files twice Due to the glob pattern used, we are trying to import manifests twice. Since it isn't possible (see #4205), it is not possible to use a pattern in an import statement. This patch makes sure manifests are returned only once. Signed-off-by: Brice Figureau --- lib/puppet/parser/files.rb | 2 +- spec/unit/parser/files_spec.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/puppet/parser/files.rb b/lib/puppet/parser/files.rb index 749743493..9ef05e102 100644 --- a/lib/puppet/parser/files.rb +++ b/lib/puppet/parser/files.rb @@ -24,7 +24,7 @@ module Puppet::Parser::Files # Than that would be a "no." end abspat = File::expand_path(start, cwd) - [nil, Dir.glob(abspat + (File.extname(abspat).empty? ? '{,.pp,.rb}' : '' )).reject { |f| FileTest.directory?(f) }] + [nil, Dir.glob(abspat + (File.extname(abspat).empty? ? '{,.pp,.rb}' : '' )).uniq.reject { |f| FileTest.directory?(f) }] end # Find the concrete file denoted by +file+. If +file+ is absolute, diff --git a/spec/unit/parser/files_spec.rb b/spec/unit/parser/files_spec.rb index d1b5491a2..fcfbfa613 100644 --- a/spec/unit/parser/files_spec.rb +++ b/spec/unit/parser/files_spec.rb @@ -173,6 +173,12 @@ describe Puppet::Parser::Files do FileTest.expects(:directory?).with(dir).returns(true) Puppet::Parser::Files.find_manifests(pattern)[1].should == [file] end + + it "should return files once only" do + pattern = @basepath + "/fully/qualified/pattern/*" + Dir.expects(:glob).with(pattern+'{,.pp,.rb}').returns(%w{one two one}) + Puppet::Parser::Files.find_manifests(pattern)[1].should == %w{one two} + end end describe "when searching for manifests in a found module" do -- cgit