microwave 1.0.4 → 11.400.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CONTRIBUTING.md +155 -0
- data/README.md +89 -0
- data/Rakefile +2 -2
- data/bin/chef-apply +25 -0
- data/bin/chef-shell +34 -0
- data/bin/chef-solo +0 -2
- data/bin/shef +6 -5
- data/lib/chef.rb +2 -4
- data/spec/data/big_json.json +2 -1
- data/spec/data/big_json_plus_one.json +2 -1
- data/spec/data/cookbooks/chefignore +2 -0
- data/spec/data/cookbooks/openldap/attributes/default.rb +10 -9
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/git_bundles/sinatra-test-app-with-callback-files.gitbundle +0 -0
- data/spec/data/git_bundles/sinatra-test-app-with-symlinks.gitbundle +0 -0
- data/spec/data/git_bundles/sinatra-test-app.gitbundle +0 -0
- data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
- data/spec/data/nodes/default.rb +3 -3
- data/spec/data/nodes/test.example.com.rb +3 -3
- data/spec/data/nodes/test.rb +3 -3
- data/spec/data/partial_one.erb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
- data/spec/data/shef-config.rb +10 -0
- data/spec/functional/dsl/registry_helper_spec.rb +63 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +0 -2
- data/spec/functional/knife/exec_spec.rb +4 -6
- data/spec/functional/knife/smoke_test.rb +34 -0
- data/spec/functional/knife/ssh_spec.rb +64 -3
- data/spec/functional/resource/cookbook_file_spec.rb +33 -2
- data/spec/functional/resource/deploy_revision_spec.rb +515 -0
- data/spec/functional/resource/directory_spec.rb +4 -0
- data/spec/functional/resource/file_spec.rb +56 -22
- data/spec/functional/resource/link_spec.rb +12 -10
- data/spec/functional/resource/registry_spec.rb +572 -0
- data/spec/functional/resource/remote_directory_spec.rb +142 -36
- data/spec/functional/resource/remote_file_spec.rb +28 -3
- data/spec/functional/resource/template_spec.rb +23 -2
- data/spec/functional/run_lock_spec.rb +238 -0
- data/spec/functional/shell_spec.rb +101 -0
- data/spec/functional/tiny_server_spec.rb +5 -4
- data/spec/functional/win32/registry_helper_spec.rb +632 -0
- data/spec/functional/win32/security_spec.rb +37 -0
- data/spec/spec_helper.rb +15 -3
- data/spec/stress/win32/security_spec.rb +5 -5
- data/spec/support/chef_helpers.rb +14 -3
- data/spec/support/lib/chef/resource/cat.rb +3 -5
- data/spec/support/lib/chef/resource/one_two_three_four.rb +8 -10
- data/spec/support/lib/chef/resource/zen_master.rb +8 -10
- data/spec/support/matchers/leak.rb +1 -1
- data/spec/support/platform_helpers.rb +18 -0
- data/spec/support/shared/functional/directory_resource.rb +85 -23
- data/spec/support/shared/functional/file_resource.rb +198 -53
- data/spec/support/shared/functional/securable_resource.rb +140 -105
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +375 -0
- data/spec/support/shared/unit/file_system_support.rb +110 -0
- data/spec/support/shared/unit/platform_introspector.rb +162 -0
- data/spec/tiny_server.rb +29 -10
- data/spec/unit/api_client/registration_spec.rb +172 -0
- data/spec/unit/api_client_spec.rb +156 -103
- data/spec/unit/application/apply.rb +84 -0
- data/spec/unit/application/knife_spec.rb +5 -0
- data/spec/unit/application_spec.rb +57 -2
- data/spec/unit/chef_fs/diff_spec.rb +329 -0
- data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
- data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +237 -0
- data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +568 -0
- data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +220 -0
- data/spec/unit/chef_fs/file_system_spec.rb +136 -0
- data/spec/unit/client_spec.rb +188 -16
- data/spec/unit/config_spec.rb +54 -4
- data/spec/unit/cookbook/chefignore_spec.rb +2 -1
- data/spec/unit/cookbook/syntax_check_spec.rb +48 -109
- data/spec/unit/cookbook_loader_spec.rb +153 -91
- data/spec/unit/cookbook_manifest_spec.rb +81 -81
- data/spec/unit/cookbook_spec.rb +3 -20
- data/spec/unit/cookbook_version_spec.rb +23 -122
- data/spec/unit/digester_spec.rb +50 -0
- data/spec/unit/dsl/data_query_spec.rb +66 -0
- data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
- data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +126 -10
- data/spec/unit/environment_spec.rb +0 -130
- data/spec/unit/exceptions_spec.rb +2 -3
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +23 -3
- data/spec/unit/json_compat_spec.rb +69 -0
- data/spec/unit/knife/bootstrap_spec.rb +81 -28
- data/spec/unit/knife/client_reregister_spec.rb +23 -22
- data/spec/unit/knife/configure_spec.rb +29 -26
- data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
- data/spec/unit/knife/cookbook_site_install_spec.rb +12 -2
- data/spec/unit/knife/cookbook_test_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +41 -2
- data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -1
- data/spec/unit/knife/core/ui_spec.rb +156 -7
- data/spec/unit/knife/data_bag_create_spec.rb +14 -0
- data/spec/unit/knife/data_bag_edit_spec.rb +14 -4
- data/spec/unit/knife/data_bag_from_file_spec.rb +17 -5
- data/spec/unit/knife/data_bag_show_spec.rb +11 -4
- data/spec/unit/knife/index_rebuild_spec.rb +96 -33
- data/spec/unit/knife/knife_help.rb +7 -7
- data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
- data/spec/unit/knife/ssh_spec.rb +121 -15
- data/spec/unit/knife/status_spec.rb +2 -2
- data/spec/unit/knife/user_create_spec.rb +86 -0
- data/spec/unit/knife/user_delete_spec.rb +39 -0
- data/spec/unit/knife/user_edit_spec.rb +42 -0
- data/spec/unit/knife/user_list_spec.rb +32 -0
- data/spec/unit/knife/user_reregister_spec.rb +53 -0
- data/spec/unit/knife/user_show_spec.rb +41 -0
- data/spec/unit/knife_spec.rb +53 -0
- data/spec/unit/lwrp_spec.rb +59 -17
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/deep_merge_spec.rb +56 -491
- data/spec/unit/mixin/deprecation_spec.rb +23 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +6 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -2
- data/spec/unit/mixin/securable_spec.rb +5 -3
- data/spec/unit/mixin/template_spec.rb +119 -0
- data/spec/unit/node/attribute_spec.rb +272 -137
- data/spec/unit/node/immutable_collections_spec.rb +139 -0
- data/spec/unit/node_spec.rb +411 -339
- data/spec/unit/platform_spec.rb +8 -8
- data/spec/unit/provider/breakpoint_spec.rb +8 -8
- data/spec/unit/provider/cookbook_file_spec.rb +4 -8
- data/spec/unit/provider/deploy/revision_spec.rb +2 -8
- data/spec/unit/provider/deploy_spec.rb +6 -40
- data/spec/unit/provider/directory_spec.rb +103 -68
- data/spec/unit/provider/erl_call_spec.rb +0 -2
- data/spec/unit/provider/file_spec.rb +69 -59
- data/spec/unit/provider/git_spec.rb +0 -10
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/group/usermod_spec.rb +2 -2
- data/spec/unit/provider/http_request_spec.rb +28 -69
- data/spec/unit/provider/ifconfig_spec.rb +2 -2
- data/spec/unit/provider/link_spec.rb +1 -1
- data/spec/unit/provider/ohai_spec.rb +4 -4
- data/spec/unit/provider/package/apt_spec.rb +0 -1
- data/spec/unit/provider/package/ips_spec.rb +0 -1
- data/spec/unit/provider/package/rubygems_spec.rb +0 -18
- data/spec/unit/provider/package/yum_spec.rb +79 -15
- data/spec/unit/provider/package_spec.rb +7 -5
- data/spec/unit/provider/registry_key_spec.rb +269 -0
- data/spec/unit/provider/remote_directory_spec.rb +24 -7
- data/spec/unit/provider/remote_file_spec.rb +36 -0
- data/spec/unit/provider/route_spec.rb +3 -6
- data/spec/unit/provider/ruby_block_spec.rb +8 -0
- data/spec/unit/provider/service/arch_service_spec.rb +4 -4
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/freebsd_service_spec.rb +4 -4
- data/spec/unit/provider/service/init_service_spec.rb +26 -3
- data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
- data/spec/unit/provider/service/invokercd_service_spec.rb +3 -3
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/simple_service_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_service_spec.rb +7 -7
- data/spec/unit/provider/service_spec.rb +2 -2
- data/spec/unit/provider/subversion_spec.rb +1 -1
- data/spec/unit/provider/template_spec.rb +35 -11
- data/spec/unit/provider/user/dscl_spec.rb +57 -31
- data/spec/unit/provider/user_spec.rb +7 -16
- data/spec/unit/provider_spec.rb +4 -3
- data/spec/unit/recipe_spec.rb +10 -8
- data/spec/unit/registry_helper_spec.rb +376 -0
- data/spec/unit/resource/log_spec.rb +9 -0
- data/spec/unit/resource/registry_key_spec.rb +171 -0
- data/spec/unit/resource/remote_file_spec.rb +21 -23
- data/spec/unit/resource/ruby_block_spec.rb +7 -3
- data/spec/unit/resource/service_spec.rb +11 -0
- data/spec/unit/resource_spec.rb +27 -4
- data/spec/unit/rest/auth_credentials_spec.rb +2 -14
- data/spec/unit/rest_spec.rb +122 -187
- data/spec/unit/run_context/cookbook_compiler_spec.rb +181 -0
- data/spec/unit/run_context_spec.rb +18 -4
- data/spec/unit/run_list_spec.rb +0 -209
- data/spec/unit/run_lock_spec.rb +37 -0
- data/spec/unit/runner_spec.rb +101 -2
- data/spec/unit/scan_access_control_spec.rb +4 -4
- data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
- data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
- data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +12 -12
- data/spec/unit/shell_out_spec.rb +18 -0
- data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
- data/spec/unit/user_spec.rb +255 -0
- metadata +162 -157
- data/README.rdoc +0 -177
- data/spec/unit/certificate_spec.rb +0 -76
- data/spec/unit/checksum_cache_spec.rb +0 -209
- data/spec/unit/checksum_spec.rb +0 -94
- data/spec/unit/couchdb_spec.rb +0 -274
- data/spec/unit/index_queue_spec.rb +0 -391
- data/spec/unit/json_compat_spect.rb +0 -53
- data/spec/unit/mixin/language_spec.rb +0 -305
- data/spec/unit/openid_registration_spec.rb +0 -153
- data/spec/unit/solr_query/query_transform_spec.rb +0 -454
- data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
- data/spec/unit/solr_query_spec.rb +0 -203
- data/spec/unit/webui_user_spec.rb +0 -238
data/spec/unit/platform_spec.rb
CHANGED
@@ -129,8 +129,8 @@ describe Chef::Platform do
|
|
129
129
|
kitty = Chef::Resource::Cat.new("loulou")
|
130
130
|
node = Chef::Node.new
|
131
131
|
node.name("Intel")
|
132
|
-
node.platform
|
133
|
-
node.platform_version
|
132
|
+
node.automatic_attrs[:platform] = "mac_os_x"
|
133
|
+
node.automatic_attrs[:platform_version] = "9.2.2"
|
134
134
|
Chef::Platform.find_provider_for_node(node, kitty).should eql("nice")
|
135
135
|
end
|
136
136
|
|
@@ -139,8 +139,8 @@ describe Chef::Platform do
|
|
139
139
|
kitty.stub!(:provider).and_return(Chef::Provider::File)
|
140
140
|
node = Chef::Node.new
|
141
141
|
node.name("Intel")
|
142
|
-
node.platform
|
143
|
-
node.platform_version
|
142
|
+
node.automatic_attrs[:platform] = "mac_os_x"
|
143
|
+
node.automatic_attrs[:platform_version] = "9.2.2"
|
144
144
|
Chef::Platform.find_provider_for_node(node, kitty).should eql(Chef::Provider::File)
|
145
145
|
end
|
146
146
|
|
@@ -150,15 +150,15 @@ describe Chef::Platform do
|
|
150
150
|
Chef::Platform.platforms[:default].delete(:cat)
|
151
151
|
node = Chef::Node.new
|
152
152
|
node.name("Intel")
|
153
|
-
node.platform
|
154
|
-
node.platform_version
|
153
|
+
node.automatic_attrs[:platform] = "mac_os_x"
|
154
|
+
node.automatic_attrs[:platform_version] = "8.5"
|
155
155
|
Chef::Platform.find_provider_for_node(node, kitty).should eql(Chef::Provider::Cat)
|
156
156
|
end
|
157
157
|
|
158
158
|
def setup_file_resource
|
159
159
|
node = Chef::Node.new
|
160
|
-
node.platform
|
161
|
-
node.platform_version
|
160
|
+
node.automatic_attrs[:platform] = "mac_os_x"
|
161
|
+
node.automatic_attrs[:platform_version] = "9.2.2"
|
162
162
|
run_context = Chef::RunContext.new(node, {}, @events)
|
163
163
|
[ Chef::Resource::File.new("whateva", run_context), run_context ]
|
164
164
|
end
|
@@ -6,9 +6,9 @@
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
7
|
# you may not use this file except in compliance with the License.
|
8
8
|
# You may obtain a copy of the License at
|
9
|
-
#
|
9
|
+
#
|
10
10
|
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
11
|
+
#
|
12
12
|
# Unless required by applicable law or agreed to in writing, software
|
13
13
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
14
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
@@ -19,7 +19,7 @@
|
|
19
19
|
|
20
20
|
require 'spec_helper'
|
21
21
|
describe Chef::Provider::Breakpoint do
|
22
|
-
|
22
|
+
|
23
23
|
before do
|
24
24
|
@resource = Chef::Resource::Breakpoint.new
|
25
25
|
@node = Chef::Node.new
|
@@ -29,13 +29,13 @@ describe Chef::Provider::Breakpoint do
|
|
29
29
|
@run_context.stub!(:resource_collection).and_return(@collection)
|
30
30
|
@provider = Chef::Provider::Breakpoint.new(@resource, @run_context)
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
it "responds to load_current_resource" do
|
34
34
|
@provider.should respond_to(:load_current_resource)
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
it "gets the iterator from @collection and pauses it" do
|
38
|
-
|
38
|
+
Shell.stub!(:running?).and_return(true)
|
39
39
|
@iterator = mock("stepable_iterator")
|
40
40
|
@collection.stub!(:iterator).and_return(@iterator)
|
41
41
|
@iterator.should_receive(:pause)
|
@@ -43,8 +43,8 @@ describe Chef::Provider::Breakpoint do
|
|
43
43
|
@resource.should be_updated
|
44
44
|
end
|
45
45
|
|
46
|
-
it "doesn't pause the iterator if
|
47
|
-
|
46
|
+
it "doesn't pause the iterator if chef-shell isn't running" do
|
47
|
+
Shell.stub!(:running?).and_return(false)
|
48
48
|
@iterator = mock("stepable_iterator")
|
49
49
|
@collection.stub!(:iterator).and_return(@iterator)
|
50
50
|
@iterator.should_not_receive(:pause)
|
@@ -28,7 +28,9 @@ describe Chef::Provider::CookbookFile do
|
|
28
28
|
|
29
29
|
@node = Chef::Node.new
|
30
30
|
@events = Chef::EventDispatch::Dispatcher.new
|
31
|
-
|
31
|
+
cl = Chef::CookbookLoader.new(@cookbook_repo)
|
32
|
+
cl.load_cookbooks
|
33
|
+
@cookbook_collection = Chef::CookbookCollection.new(cl)
|
32
34
|
@run_context = Chef::RunContext.new(@node, @cookbook_collection, @events)
|
33
35
|
|
34
36
|
@new_resource = Chef::Resource::CookbookFile.new('apache2_module_conf_generate.pl', @run_context)
|
@@ -83,7 +85,7 @@ EXPECTED
|
|
83
85
|
@provider.current_resource = @current_resource
|
84
86
|
end
|
85
87
|
|
86
|
-
after { ::File.exist?(@install_to) && FileUtils.
|
88
|
+
after { ::File.exist?(File.dirname(@install_to)) && FileUtils.rm_rf(@install_to) }
|
87
89
|
|
88
90
|
it "loads the current file state" do
|
89
91
|
@provider.load_current_resource
|
@@ -95,12 +97,6 @@ EXPECTED
|
|
95
97
|
@provider.file_cache_location.should == expected
|
96
98
|
end
|
97
99
|
|
98
|
-
it "stages the cookbook to a temporary file" do
|
99
|
-
@new_resource.path(@install_to)
|
100
|
-
@provider.should_receive(:deploy_tempfile)
|
101
|
-
@provider.run_action(:create)
|
102
|
-
end
|
103
|
-
|
104
100
|
it "installs the file from the cookbook cache" do
|
105
101
|
@new_resource.path(@install_to)
|
106
102
|
@provider.should_receive(:backup_new_resource)
|
@@ -53,13 +53,11 @@ describe Chef::Provider::Deploy::Revision do
|
|
53
53
|
|
54
54
|
it "stores the release dir in the file cache when copying the cached repo" do
|
55
55
|
FileUtils.stub!(:mkdir_p)
|
56
|
-
|
56
|
+
FileUtils.stub!(:cp_r)
|
57
57
|
@provider.copy_cached_repo
|
58
|
-
@provider.converge
|
59
58
|
@provider.stub!(:release_slug).and_return("73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2")
|
60
59
|
@provider.load_current_resource
|
61
60
|
@provider.copy_cached_repo
|
62
|
-
@provider.converge
|
63
61
|
second_release = "/my/deploy/dir/releases/73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2"
|
64
62
|
|
65
63
|
@provider.all_releases.should == [@expected_release_dir,second_release]
|
@@ -67,22 +65,18 @@ describe Chef::Provider::Deploy::Revision do
|
|
67
65
|
|
68
66
|
it "removes a release from the file cache when it's used again in another release and append it to the end" do
|
69
67
|
FileUtils.stub!(:mkdir_p)
|
70
|
-
|
68
|
+
FileUtils.stub!(:cp_r)
|
71
69
|
@provider.copy_cached_repo
|
72
|
-
@provider.converge
|
73
70
|
@provider.stub!(:release_slug).and_return("73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2")
|
74
71
|
@provider.load_current_resource
|
75
72
|
@provider.copy_cached_repo
|
76
|
-
@provider.converge
|
77
73
|
second_release = "/my/deploy/dir/releases/73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2"
|
78
74
|
@provider.all_releases.should == [@expected_release_dir,second_release]
|
79
75
|
@provider.copy_cached_repo
|
80
|
-
@provider.converge
|
81
76
|
|
82
77
|
@provider.stub!(:release_slug).and_return("8a3195bf3efa246f743c5dfa83683201880f935c")
|
83
78
|
@provider.load_current_resource
|
84
79
|
@provider.copy_cached_repo
|
85
|
-
@provider.converge
|
86
80
|
@provider.all_releases.should == [second_release, @expected_release_dir]
|
87
81
|
end
|
88
82
|
|
@@ -54,15 +54,11 @@ describe Chef::Provider::Deploy do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
it "creates deploy_to dir" do
|
57
|
+
::Dir.should_receive(:chdir).with(@expected_release_dir).exactly(4).times
|
57
58
|
@provider.stub(:update_cached_repo)
|
58
59
|
@provider.deploy
|
59
60
|
end
|
60
61
|
|
61
|
-
it "creates deploy_to dir before calling update_cached_repo (CHEF-3435)" do
|
62
|
-
@provider.send(:converge_actions).should_receive(:empty?).and_return(false)
|
63
|
-
@provider.should_receive(:update_cached_repo).ordered
|
64
|
-
@provider.deploy
|
65
|
-
end
|
66
62
|
end
|
67
63
|
|
68
64
|
it "does not create deploy_to dir if it exists" do
|
@@ -75,10 +71,10 @@ describe Chef::Provider::Deploy do
|
|
75
71
|
@provider.stub(:symlink)
|
76
72
|
@provider.stub(:migrate)
|
77
73
|
@provider.deploy
|
78
|
-
@provider.converge
|
79
74
|
end
|
80
75
|
|
81
76
|
it "ensures the deploy_to dir ownership after the verfication that it exists" do
|
77
|
+
::Dir.should_receive(:chdir).with(@expected_release_dir).exactly(4).times
|
82
78
|
@provider.should_receive(:verify_directories_exist).ordered
|
83
79
|
@provider.should_receive(:enforce_ownership).ordered
|
84
80
|
@provider.stub(:copy_cached_repo)
|
@@ -106,7 +102,6 @@ describe Chef::Provider::Deploy do
|
|
106
102
|
@provider.should_receive(:callback).with(:after_restart, nil)
|
107
103
|
@provider.should_receive(:cleanup!)
|
108
104
|
@provider.deploy
|
109
|
-
@provider.converge
|
110
105
|
end
|
111
106
|
|
112
107
|
it "should not deploy if there is already a deploy at release_path, and it is the current release" do
|
@@ -134,7 +129,6 @@ describe Chef::Provider::Deploy do
|
|
134
129
|
@resource.svn_force_export true
|
135
130
|
@provider.scm_provider.should_receive(:run_action).with(:force_export)
|
136
131
|
@provider.update_cached_repo
|
137
|
-
@provider.converge
|
138
132
|
end
|
139
133
|
|
140
134
|
it "Removes the old release before deploying when force deploying over it" do
|
@@ -259,7 +253,6 @@ describe Chef::Provider::Deploy do
|
|
259
253
|
@runner.should_receive(:converge)
|
260
254
|
callback_code = Proc.new { :noop }
|
261
255
|
@provider.callback(:whatevs, callback_code)
|
262
|
-
@provider.converge
|
263
256
|
end
|
264
257
|
|
265
258
|
it "loads callback files from the release/ dir if the file exists" do
|
@@ -268,7 +261,6 @@ describe Chef::Provider::Deploy do
|
|
268
261
|
::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
|
269
262
|
@provider.should_receive(:from_file).with(foo_callback)
|
270
263
|
@provider.callback(:foo, "deploy/foo.rb")
|
271
|
-
@provider.converge
|
272
264
|
end
|
273
265
|
|
274
266
|
it "raises a runtime error if a callback file is explicitly specified but does not exist" do
|
@@ -286,7 +278,6 @@ describe Chef::Provider::Deploy do
|
|
286
278
|
::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
|
287
279
|
@provider.should_receive(:from_file).with(bar_callback)
|
288
280
|
@provider.callback(:bar, nil)
|
289
|
-
@provider.converge
|
290
281
|
end
|
291
282
|
|
292
283
|
it "skips an eval callback if the file doesn't exist" do
|
@@ -295,7 +286,6 @@ describe Chef::Provider::Deploy do
|
|
295
286
|
::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
|
296
287
|
@provider.should_not_receive(:from_file)
|
297
288
|
@provider.callback(:barbaz, nil)
|
298
|
-
@provider.converge
|
299
289
|
end
|
300
290
|
|
301
291
|
# CHEF-3449 #converge_by is called in #recipe_eval and must happen in sequence
|
@@ -326,22 +316,19 @@ describe Chef::Provider::Deploy do
|
|
326
316
|
it "syncs the cached copy of the repo" do
|
327
317
|
@provider.scm_provider.should_receive(:run_action).with(:sync)
|
328
318
|
@provider.update_cached_repo
|
329
|
-
@provider.converge
|
330
319
|
end
|
331
320
|
|
332
321
|
it "makes a copy of the cached repo in releases dir" do
|
333
322
|
FileUtils.should_receive(:mkdir_p).with("/my/deploy/dir/releases")
|
334
|
-
|
323
|
+
FileUtils.should_receive(:cp_r).with("/my/deploy/dir/shared/cached-copy/.", @expected_release_dir, :preserve => true)
|
335
324
|
@provider.copy_cached_repo
|
336
|
-
@provider.converge
|
337
325
|
end
|
338
326
|
|
339
327
|
it "calls the internal callback :release_created when copying the cached repo" do
|
340
328
|
FileUtils.stub!(:mkdir_p)
|
341
|
-
|
329
|
+
FileUtils.stub!(:cp_r)
|
342
330
|
@provider.should_receive(:release_created)
|
343
331
|
@provider.copy_cached_repo
|
344
|
-
@provider.converge
|
345
332
|
end
|
346
333
|
|
347
334
|
it "chowns the whole release dir to user and group specified in the resource" do
|
@@ -349,7 +336,6 @@ describe Chef::Provider::Deploy do
|
|
349
336
|
@resource.group "bar"
|
350
337
|
FileUtils.should_receive(:chown_R).with("foo", "bar", "/my/deploy/dir")
|
351
338
|
@provider.enforce_ownership
|
352
|
-
@provider.converge
|
353
339
|
end
|
354
340
|
|
355
341
|
it "skips the migration when resource.migrate => false but runs symlinks before migration" do
|
@@ -357,7 +343,6 @@ describe Chef::Provider::Deploy do
|
|
357
343
|
@provider.should_not_receive :run_command
|
358
344
|
@provider.should_receive :run_symlinks_before_migrate
|
359
345
|
@provider.migrate
|
360
|
-
@provider.converge
|
361
346
|
end
|
362
347
|
|
363
348
|
it "links the database.yml and runs resource.migration_command when resource.migrate #=> true" do
|
@@ -377,7 +362,6 @@ describe Chef::Provider::Deploy do
|
|
377
362
|
:log_tag => "deploy[/my/deploy/dir]",
|
378
363
|
:environment => {"RAILS_ENV"=>"production"})
|
379
364
|
@provider.migrate
|
380
|
-
@provider.converge
|
381
365
|
end
|
382
366
|
|
383
367
|
it "purges the current release's /log /tmp/pids/ and /public/system directories" do
|
@@ -385,7 +369,6 @@ describe Chef::Provider::Deploy do
|
|
385
369
|
FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/tmp/pids")
|
386
370
|
FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/public/system")
|
387
371
|
@provider.purge_tempfiles_from_current_release
|
388
|
-
@provider.converge
|
389
372
|
end
|
390
373
|
|
391
374
|
it "symlinks temporary files and logs from the shared dir into the current release" do
|
@@ -401,7 +384,6 @@ describe Chef::Provider::Deploy do
|
|
401
384
|
FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/config/database.yml", @expected_release_dir + "/config/database.yml")
|
402
385
|
@provider.should_receive(:enforce_ownership)
|
403
386
|
@provider.link_tempfiles_to_current_release
|
404
|
-
@provider.converge
|
405
387
|
end
|
406
388
|
|
407
389
|
it "symlinks the current release dir into production" do
|
@@ -409,7 +391,6 @@ describe Chef::Provider::Deploy do
|
|
409
391
|
FileUtils.should_receive(:ln_sf).with(@expected_release_dir, "/my/deploy/dir/current")
|
410
392
|
@provider.should_receive(:enforce_ownership)
|
411
393
|
@provider.link_current_release_to_production
|
412
|
-
@provider.converge
|
413
394
|
end
|
414
395
|
|
415
396
|
context "with a customized app layout" do
|
@@ -419,14 +400,12 @@ describe Chef::Provider::Deploy do
|
|
419
400
|
@resource.create_dirs_before_symlink(%w{baz qux})
|
420
401
|
@resource.symlinks "foo/bar" => "foo/bar", "baz" => "qux/baz"
|
421
402
|
@resource.symlink_before_migrate "radiohead/in_rainbows.yml" => "awesome"
|
422
|
-
@provider.converge
|
423
403
|
end
|
424
404
|
|
425
405
|
it "purges the purge_before_symlink directories" do
|
426
406
|
FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/foo")
|
427
407
|
FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/bar")
|
428
408
|
@provider.purge_tempfiles_from_current_release
|
429
|
-
@provider.converge
|
430
409
|
end
|
431
410
|
|
432
411
|
it "symlinks files from the shared directory to the current release directory" do
|
@@ -439,7 +418,6 @@ describe Chef::Provider::Deploy do
|
|
439
418
|
FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/radiohead/in_rainbows.yml", @expected_release_dir + "/awesome")
|
440
419
|
@provider.should_receive(:enforce_ownership)
|
441
420
|
@provider.link_tempfiles_to_current_release
|
442
|
-
@provider.converge
|
443
421
|
end
|
444
422
|
|
445
423
|
end
|
@@ -447,14 +425,12 @@ describe Chef::Provider::Deploy do
|
|
447
425
|
it "does nothing for restart if restart_command is empty" do
|
448
426
|
@provider.should_not_receive(:run_command)
|
449
427
|
@provider.restart
|
450
|
-
@provider.converge
|
451
428
|
end
|
452
429
|
|
453
430
|
it "runs the restart command in the current application dir when the resource has a restart_command" do
|
454
431
|
@resource.restart_command "restartcmd"
|
455
432
|
@provider.should_receive(:run_command).with(:command => "restartcmd", :cwd => "/my/deploy/dir/current", :log_tag => "deploy[/my/deploy/dir]", :log_level => :debug)
|
456
433
|
@provider.restart
|
457
|
-
@provider.converge
|
458
434
|
end
|
459
435
|
|
460
436
|
it "lists all available releases" do
|
@@ -474,7 +450,6 @@ describe Chef::Provider::Deploy do
|
|
474
450
|
FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/20040200000000")
|
475
451
|
FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/20040300000000")
|
476
452
|
@provider.cleanup!
|
477
|
-
@provider.converge
|
478
453
|
end
|
479
454
|
|
480
455
|
it "removes all but a certain number of releases when the resource has a keep_releases" do
|
@@ -486,7 +461,6 @@ describe Chef::Provider::Deploy do
|
|
486
461
|
@provider.stub!(:all_releases).and_return(all_releases)
|
487
462
|
FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/20040100000000")
|
488
463
|
@provider.cleanup!
|
489
|
-
@provider.converge
|
490
464
|
end
|
491
465
|
|
492
466
|
it "fires a callback for :release_deleted when deleting an old release" do
|
@@ -497,7 +471,6 @@ describe Chef::Provider::Deploy do
|
|
497
471
|
FileUtils.stub!(:rm_rf)
|
498
472
|
@provider.should_receive(:release_deleted).with("/my/deploy/dir/20040300000000")
|
499
473
|
@provider.cleanup!
|
500
|
-
@provider.converge
|
501
474
|
end
|
502
475
|
|
503
476
|
it "puts resource.to_hash in @configuration for backwards compat with capistano-esque deploy hooks" do
|
@@ -509,7 +482,6 @@ describe Chef::Provider::Deploy do
|
|
509
482
|
resource.environment "production"
|
510
483
|
provider = Chef::Provider::Deploy.new(resource, @run_context)
|
511
484
|
provider.instance_variable_get(:@configuration)[:environment].should eql("production")
|
512
|
-
@provider.converge
|
513
485
|
end
|
514
486
|
|
515
487
|
it "shouldn't give a no method error on migrate if the environment is nil" do
|
@@ -517,7 +489,7 @@ describe Chef::Provider::Deploy do
|
|
517
489
|
@provider.stub!(:run_symlinks_before_migrate)
|
518
490
|
@provider.stub!(:run_command)
|
519
491
|
@provider.migrate
|
520
|
-
|
492
|
+
|
521
493
|
end
|
522
494
|
|
523
495
|
context "using inline recipes for callbacks" do
|
@@ -527,7 +499,6 @@ describe Chef::Provider::Deploy do
|
|
527
499
|
recipe_code = Proc.new {snitch = 42}
|
528
500
|
#@provider.should_receive(:instance_eval).with(&recipe_code)
|
529
501
|
@provider.callback(:whateverz, recipe_code)
|
530
|
-
@provider.converge
|
531
502
|
snitch.should == 42
|
532
503
|
end
|
533
504
|
|
@@ -536,7 +507,6 @@ describe Chef::Provider::Deploy do
|
|
536
507
|
::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
|
537
508
|
@provider.should_receive(:from_file).with(@expected_release_dir + "/chefz/foobar_callback.rb")
|
538
509
|
@provider.callback(:whateverz, "chefz/foobar_callback.rb")
|
539
|
-
@provider.converge
|
540
510
|
end
|
541
511
|
|
542
512
|
it "instance_evals a block/proc for restart command" do
|
@@ -544,7 +514,6 @@ describe Chef::Provider::Deploy do
|
|
544
514
|
restart_cmd = Proc.new {snitch = 42}
|
545
515
|
@resource.restart(&restart_cmd)
|
546
516
|
@provider.restart
|
547
|
-
@provider.converge
|
548
517
|
snitch.should == 42
|
549
518
|
end
|
550
519
|
|
@@ -554,7 +523,6 @@ describe Chef::Provider::Deploy do
|
|
554
523
|
it "defines sudo as a forwarder to execute" do
|
555
524
|
@provider.should_receive(:execute).with("the moon, fool")
|
556
525
|
@provider.sudo("the moon, fool")
|
557
|
-
@provider.converge
|
558
526
|
end
|
559
527
|
|
560
528
|
it "defines run as a forwarder to execute, setting the user, group, cwd and environment to new_resource.user" do
|
@@ -583,7 +551,7 @@ describe Chef::Provider::Deploy do
|
|
583
551
|
end
|
584
552
|
}.twice
|
585
553
|
@provider.run("iGoToHell4this")
|
586
|
-
|
554
|
+
|
587
555
|
end
|
588
556
|
|
589
557
|
it "defines run as a forwarder to execute, setting cwd and environment but not override" do
|
@@ -594,7 +562,6 @@ describe Chef::Provider::Deploy do
|
|
594
562
|
mock_execution.should_receive(:cwd).with(no_args()).and_return("/some/value")
|
595
563
|
mock_execution.should_receive(:environment).with(no_args()).and_return({})
|
596
564
|
@provider.run("iGoToHell4this")
|
597
|
-
@provider.converge
|
598
565
|
end
|
599
566
|
|
600
567
|
|
@@ -615,7 +582,6 @@ describe Chef::Provider::Deploy do
|
|
615
582
|
runner.should_receive(:converge)
|
616
583
|
#
|
617
584
|
@provider.callback(:phony, callback_code)
|
618
|
-
@provider.converge
|
619
585
|
snitch.should be_an_instance_of(Chef::Resource::Execute)
|
620
586
|
snitch.user.should == "tehCat"
|
621
587
|
end
|
@@ -19,13 +19,16 @@
|
|
19
19
|
require 'ostruct'
|
20
20
|
|
21
21
|
require 'spec_helper'
|
22
|
+
require 'tmpdir'
|
22
23
|
|
23
24
|
describe Chef::Provider::Directory do
|
24
25
|
before(:each) do
|
25
|
-
@new_resource = Chef::Resource::Directory.new(
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
@new_resource = Chef::Resource::Directory.new(Dir.tmpdir)
|
27
|
+
if !windows?
|
28
|
+
@new_resource.owner(500)
|
29
|
+
@new_resource.group(500)
|
30
|
+
@new_resource.mode(0644)
|
31
|
+
end
|
29
32
|
@node = Chef::Node.new
|
30
33
|
@events = Chef::EventDispatch::Dispatcher.new
|
31
34
|
@run_context = Chef::RunContext.new(@node, {}, @events)
|
@@ -33,80 +36,112 @@ describe Chef::Provider::Directory do
|
|
33
36
|
@directory = Chef::Provider::Directory.new(@new_resource, @run_context)
|
34
37
|
end
|
35
38
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
+
|
40
|
+
describe "scanning file security metadata on windows" do
|
41
|
+
before do
|
42
|
+
end
|
43
|
+
|
44
|
+
it "describes the directory's access rights" do
|
45
|
+
pending
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "scanning file security metadata on unix" do
|
50
|
+
before do
|
51
|
+
Chef::Platform.stub!(:windows?).and_return(false)
|
52
|
+
end
|
53
|
+
let(:mock_stat) do
|
39
54
|
cstats = mock("stats")
|
40
55
|
cstats.stub!(:uid).and_return(500)
|
41
56
|
cstats.stub!(:gid).and_return(500)
|
42
57
|
cstats.stub!(:mode).and_return(0755)
|
43
|
-
|
44
|
-
@directory.load_current_resource
|
45
|
-
@directory.current_resource.path.should eql(@new_resource.path)
|
46
|
-
@directory.current_resource.owner.should eql(500)
|
47
|
-
@directory.current_resource.group.should eql(500)
|
48
|
-
@directory.current_resource.mode.should == 00755
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should create a new directory on create, setting updated to true" do
|
52
|
-
@new_resource.path "/tmp/foo"
|
53
|
-
|
54
|
-
File.should_receive(:exist?).exactly(3).and_return(false)
|
55
|
-
Dir.should_receive(:mkdir).with(@new_resource.path).once.and_return(true)
|
56
|
-
|
57
|
-
@directory.should_receive(:set_all_access_controls)
|
58
|
-
@directory.stub!(:update_new_file_state)
|
59
|
-
@directory.run_action(:create)
|
60
|
-
@directory.new_resource.should be_updated
|
58
|
+
cstats
|
61
59
|
end
|
62
|
-
|
63
|
-
it "
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
it "should create a new directory when parent directory does not exist if recursive is true and permissions are correct" do
|
70
|
-
@new_resource.path "/path/to/dir"
|
71
|
-
@new_resource.recursive true
|
72
|
-
File.should_receive(:exist?).with(@new_resource.path).ordered.and_return(false)
|
73
|
-
File.should_receive(:exist?).with(@new_resource.path).ordered.and_return(false)
|
74
|
-
|
75
|
-
File.should_receive(:exist?).with('/path/to').ordered.and_return(false)
|
76
|
-
File.should_receive(:exist?).with('/path').ordered.and_return(true)
|
77
|
-
File.should_receive(:writable?).with('/path').ordered.and_return(true)
|
78
|
-
File.should_receive(:exist?).with(@new_resource.path).ordered.and_return(false)
|
79
|
-
|
80
|
-
FileUtils.should_receive(:mkdir_p).with(@new_resource.path).and_return(true)
|
81
|
-
@directory.should_receive(:set_all_access_controls)
|
82
|
-
@directory.stub!(:update_new_file_state)
|
83
|
-
@directory.run_action(:create)
|
84
|
-
@new_resource.should be_updated
|
60
|
+
|
61
|
+
it "describes the access mode as a String of octal integers" do
|
62
|
+
File.stub!(:exist?).and_return(true)
|
63
|
+
File.should_receive(:stat).and_return(mock_stat)
|
64
|
+
@directory.load_current_resource
|
65
|
+
@directory.current_resource.mode.should == "0755"
|
85
66
|
end
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
67
|
+
|
68
|
+
context "when user and group are specified with UID/GID" do
|
69
|
+
it "describes the current owner and group as UID and GID" do
|
70
|
+
File.stub!(:exist?).and_return(true)
|
71
|
+
File.should_receive(:stat).and_return(mock_stat)
|
72
|
+
@directory.load_current_resource
|
73
|
+
@directory.current_resource.path.should eql(@new_resource.path)
|
74
|
+
@directory.current_resource.owner.should eql(500)
|
75
|
+
@directory.current_resource.group.should eql(500)
|
76
|
+
end
|
96
77
|
end
|
97
|
-
|
98
|
-
|
99
|
-
stub_file_cstats
|
100
|
-
@new_resource.path "/tmp/foo"
|
101
|
-
File.should_receive(:exist?).exactly(3).and_return(true)
|
102
|
-
Dir.should_not_receive(:mkdir).with(@new_resource.path)
|
103
|
-
@directory.should_receive(:set_all_access_controls)
|
104
|
-
@directory.run_action(:create)
|
78
|
+
|
79
|
+
context "when user/group are specified with user/group names" do
|
105
80
|
end
|
106
81
|
end
|
107
82
|
|
108
|
-
|
109
|
-
|
83
|
+
# Unix only for now. While file security attribute reporting for windows is
|
84
|
+
# disabled, unix and windows differ in the number of exist? calls that are
|
85
|
+
# made by the provider.
|
86
|
+
it "should create a new directory on create, setting updated to true", :unix_only do
|
87
|
+
@new_resource.path "/tmp/foo"
|
88
|
+
|
89
|
+
File.should_receive(:exist?).exactly(2).and_return(false)
|
90
|
+
File.should_receive(:directory?).with("/tmp").and_return(true)
|
91
|
+
Dir.should_receive(:mkdir).with(@new_resource.path).once.and_return(true)
|
92
|
+
|
93
|
+
@directory.should_receive(:set_all_access_controls)
|
94
|
+
@directory.stub!(:update_new_file_state)
|
95
|
+
@directory.run_action(:create)
|
96
|
+
@directory.new_resource.should be_updated
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should raise an exception if the parent directory does not exist and recursive is false" do
|
100
|
+
@new_resource.path "/tmp/some/dir"
|
101
|
+
@new_resource.recursive false
|
102
|
+
lambda { @directory.run_action(:create) }.should raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
|
103
|
+
end
|
104
|
+
|
105
|
+
# Unix only for now. While file security attribute reporting for windows is
|
106
|
+
# disabled, unix and windows differ in the number of exist? calls that are
|
107
|
+
# made by the provider.
|
108
|
+
it "should create a new directory when parent directory does not exist if recursive is true and permissions are correct", :unix_only do
|
109
|
+
@new_resource.path "/path/to/dir"
|
110
|
+
@new_resource.recursive true
|
111
|
+
File.should_receive(:exist?).with(@new_resource.path).ordered.and_return(false)
|
112
|
+
|
113
|
+
File.should_receive(:exist?).with('/path/to').ordered.and_return(false)
|
114
|
+
File.should_receive(:exist?).with('/path').ordered.and_return(true)
|
115
|
+
File.should_receive(:writable?).with('/path').ordered.and_return(true)
|
116
|
+
File.should_receive(:exist?).with(@new_resource.path).ordered.and_return(false)
|
117
|
+
|
118
|
+
FileUtils.should_receive(:mkdir_p).with(@new_resource.path).and_return(true)
|
119
|
+
@directory.should_receive(:set_all_access_controls)
|
120
|
+
@directory.stub!(:update_new_file_state)
|
121
|
+
@directory.run_action(:create)
|
122
|
+
@new_resource.should be_updated
|
123
|
+
end
|
124
|
+
|
125
|
+
|
126
|
+
it "should raise an error when creating a directory when parent directory is a file" do
|
127
|
+
File.should_receive(:directory?).and_return(false)
|
128
|
+
Dir.should_not_receive(:mkdir).with(@new_resource.path)
|
129
|
+
lambda { @directory.run_action(:create) }.should raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
|
130
|
+
@directory.new_resource.should_not be_updated
|
131
|
+
end
|
132
|
+
|
133
|
+
# Unix only for now. While file security attribute reporting for windows is
|
134
|
+
# disabled, unix and windows differ in the number of exist? calls that are
|
135
|
+
# made by the provider.
|
136
|
+
it "should not create the directory if it already exists", :unix_only do
|
137
|
+
stub_file_cstats
|
138
|
+
@new_resource.path "/tmp/foo"
|
139
|
+
File.should_receive(:directory?).twice.and_return(true)
|
140
|
+
File.should_receive(:writable?).with("/tmp").and_return(true)
|
141
|
+
File.should_receive(:exist?).exactly(3).and_return(true)
|
142
|
+
Dir.should_not_receive(:mkdir).with(@new_resource.path)
|
143
|
+
@directory.should_receive(:set_all_access_controls)
|
144
|
+
@directory.run_action(:create)
|
110
145
|
end
|
111
146
|
|
112
147
|
it "should delete the directory if it exists, and is writable with action_delete" do
|