Skip to content

Commit df2f75f

Browse files
committed
(PUP-3399) autorequire local file sources
1 parent d894861 commit df2f75f

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

lib/puppet/type/file.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,10 @@ def self.title_patterns
396396
end
397397
# if the resource is a link, make sure the target is created first
398398
req << self[:target] if self[:target]
399+
# if the resource has a source set, make sure it is created first
400+
self[:source]&.each do |src|
401+
req << src[7..] if src.start_with?('file://')
402+
end
399403
req
400404
end
401405

spec/unit/type/file_spec.rb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1291,6 +1291,41 @@
12911291
end
12921292
end
12931293

1294+
describe "source" do
1295+
it "should require file resource when specified with the source property" do
1296+
file = described_class.new(:path => File.expand_path("/foo"), :ensure => :file, :source => File.expand_path("/bar"))
1297+
source = described_class.new(:path => File.expand_path("/bar"), :ensure => :file)
1298+
catalog.add_resource file
1299+
catalog.add_resource source
1300+
reqs = file.autorequire
1301+
expect(reqs.size).to eq(1)
1302+
expect(reqs[0].source).to eq(source)
1303+
expect(reqs[0].target).to eq(file)
1304+
end
1305+
1306+
it "should require file resource when specified with the source property as an array" do
1307+
file = described_class.new(:path => File.expand_path("/foo"), :ensure => :file, :source => [File.expand_path("/bar")])
1308+
source = described_class.new(:path => File.expand_path("/bar"), :ensure => :file)
1309+
catalog.add_resource file
1310+
catalog.add_resource source
1311+
reqs = file.autorequire
1312+
expect(reqs.size).to eq(1)
1313+
expect(reqs[0].source).to eq(source)
1314+
expect(reqs[0].target).to eq(file)
1315+
end
1316+
1317+
it "should not require source if source is not local" do
1318+
file = described_class.new(:path => File.expand_path('/foo'), :ensure => :file, :source => 'puppet:///modules/nfs/conf')
1319+
catalog.add_resource file
1320+
expect(file.autorequire.size).to eq(0)
1321+
end
1322+
it "should not require source if source is not managed" do
1323+
file = described_class.new(:path => File.expand_path('/foo'), :ensure => :file, :source => '/bar')
1324+
catalog.add_resource file
1325+
expect(file.autorequire.size).to eq(0)
1326+
end
1327+
end
1328+
12941329
describe "directories" do
12951330
it "should autorequire its parent directory" do
12961331
dir = described_class.new(:path => File.dirname(path))

0 commit comments

Comments
 (0)