summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/type/pfile.rb4
-rw-r--r--test/types/file.rb15
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/puppet/type/pfile.rb b/lib/puppet/type/pfile.rb
index d89fe17e3..3a07acac7 100644
--- a/lib/puppet/type/pfile.rb
+++ b/lib/puppet/type/pfile.rb
@@ -421,6 +421,10 @@ module Puppet
@clients = {}
super
+
+ # Get rid of any duplicate slashes, and remove any trailing slashes.
+ @title = @title.gsub(/\/+/, "/").sub(/\/$/, "")
+
# Clean out as many references to any file paths as possible.
# This was the source of many, many bugs.
@arghash = tmphash
diff --git a/test/types/file.rb b/test/types/file.rb
index c4818ba32..fba13bd12 100644
--- a/test/types/file.rb
+++ b/test/types/file.rb
@@ -1451,6 +1451,21 @@ class TestFile < Test::Unit::TestCase
assert(home.requires?(user), "File did not require owner")
assert(home.requires?(group), "File did not require group")
end
+
+ # Testing #309 -- //my/file => /my/file
+ def test_slash_deduplication
+ ["/my/////file/for//testing", "//my/file/for/testing///",
+ "/my/file/for/testing"].each do |path|
+ file = nil
+ assert_nothing_raised do
+ file = Puppet::Type.newfile(:path => path)
+ end
+
+ assert_equal("/my/file/for/testing", file.title)
+ assert_equal(file, Puppet::Type.type(:file)["/my/file/for/testing"])
+ Puppet::Type.type(:file).clear
+ end
+ end
end
# $Id$