summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/chef/resource/mount.rb2
-rw-r--r--spec/unit/resource/mount_spec.rb10
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/chef/resource/mount.rb b/lib/chef/resource/mount.rb
index e46abead13..33cd2eec48 100644
--- a/lib/chef/resource/mount.rb
+++ b/lib/chef/resource/mount.rb
@@ -42,7 +42,7 @@ class Chef
sensitive: true
property :mount_point, String, name_property: true,
- coerce: proc { |arg| arg.chomp("/") }, # Removed "/" from the end of str, because it was causing idempotency issue.
+ coerce: proc { |arg| (arg == "/" || arg.match?(":/$")) ? arg : arg.chomp("/") }, # Removed "/" from the end of str, because it was causing idempotency issue.
description: "The directory (or path) in which the device is to be mounted. Defaults to the name of the resource block if not provided."
property :device, String, identity: true,
diff --git a/spec/unit/resource/mount_spec.rb b/spec/unit/resource/mount_spec.rb
index c9800f1381..1e1c36a5dd 100644
--- a/spec/unit/resource/mount_spec.rb
+++ b/spec/unit/resource/mount_spec.rb
@@ -59,6 +59,16 @@ describe Chef::Resource::Mount do
expect(resource.mount_point).to eql("//192.168.11.102/Share/backup")
end
+ it "does not strip slash when mount_point is root directory" do
+ resource.mount_point "/"
+ expect(resource.mount_point).to eql("/")
+ end
+
+ it "does not strip slash when mount_point is root of network mount" do
+ resource.mount_point "127.0.0.1:/"
+ expect(resource.mount_point).to eql("127.0.0.1:/")
+ end
+
it "raises error when mount_point property is not set" do
expect { resource.mount_point nil }.to raise_error(Chef::Exceptions::ValidationFailed, "Property mount_point must be one of: String! You passed nil.")
end