diff options
-rw-r--r-- | lib/puppet/type/pfile.rb | 4 | ||||
-rw-r--r-- | test/types/file.rb | 15 |
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$ |