microwave 1.0.4 → 11.400.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,37 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Serdar Sutay (<serdar@opscode.com>)
|
3
|
+
# Copyright:: Copyright (c) 2012 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'spec_helper'
|
20
|
+
if Chef::Platform.windows?
|
21
|
+
require 'chef/win32/security'
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'Chef::Win32::Security', :windows_only do
|
25
|
+
it "has_admin_privileges? returns true when running as admin" do
|
26
|
+
Chef::ReservedNames::Win32::Security.has_admin_privileges?.should == true
|
27
|
+
end
|
28
|
+
|
29
|
+
# We've done some investigation adding a negative test and it turned
|
30
|
+
# out to be a lot of work since mixlib-shellout doesn't have user
|
31
|
+
# support for windows.
|
32
|
+
#
|
33
|
+
# TODO - Add negative tests once mixlib-shellout has user support
|
34
|
+
it "has_admin_privileges? returns false when running as non-admin" do
|
35
|
+
pending "requires user support in mixlib-shellout"
|
36
|
+
end
|
37
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -18,10 +18,14 @@
|
|
18
18
|
# If you need to add anything in here, don't.
|
19
19
|
# Add it to one of the files in spec/support
|
20
20
|
|
21
|
-
|
21
|
+
# Configure this first so it doesn't trigger annoying warning when we use it.
|
22
|
+
# Main rspec configuration comes later
|
23
|
+
RSpec.configure do |config|
|
24
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
25
|
+
end
|
22
26
|
|
23
27
|
# Abuse ruby's constant lookup to avoid undefined constant errors
|
24
|
-
module
|
28
|
+
module Shell
|
25
29
|
JUST_TESTING_MOVE_ALONG = true unless defined? JUST_TESTING_MOVE_ALONG
|
26
30
|
IRB = nil unless defined? IRB
|
27
31
|
end
|
@@ -40,10 +44,11 @@ require 'chef'
|
|
40
44
|
require 'chef/knife'
|
41
45
|
Chef::Knife.load_commands
|
42
46
|
require 'chef/mixins'
|
47
|
+
require 'chef/dsl'
|
43
48
|
require 'chef/application'
|
44
49
|
require 'chef/applications'
|
45
50
|
|
46
|
-
require 'chef/
|
51
|
+
require 'chef/shell'
|
47
52
|
require 'chef/util/file_edit'
|
48
53
|
|
49
54
|
# If you want to load anything into the testing environment
|
@@ -66,13 +71,20 @@ RSpec.configure do |config|
|
|
66
71
|
config.filter_run :focus => true
|
67
72
|
config.filter_run_excluding :external => true
|
68
73
|
|
74
|
+
# Tests that randomly fail, but may have value.
|
75
|
+
config.filter_run_excluding :volatile => true
|
76
|
+
|
69
77
|
# Add jruby filters here
|
70
78
|
config.filter_run_excluding :windows_only => true unless windows?
|
79
|
+
config.filter_run_excluding :not_supported_on_win2k3 => true if windows_win2k3?
|
80
|
+
config.filter_run_excluding :windows64_only => true unless windows64?
|
81
|
+
config.filter_run_excluding :windows32_only => true unless windows32?
|
71
82
|
config.filter_run_excluding :unix_only => true unless unix?
|
72
83
|
config.filter_run_excluding :ruby_18_only => true unless ruby_18?
|
73
84
|
config.filter_run_excluding :ruby_19_only => true unless ruby_19?
|
74
85
|
config.filter_run_excluding :requires_root => true unless ENV['USER'] == 'root'
|
75
86
|
config.filter_run_excluding :requires_unprivileged_user => true if ENV['USER'] == 'root'
|
87
|
+
config.filter_run_excluding :uses_diff => true unless has_diff?
|
76
88
|
|
77
89
|
config.run_all_when_everything_filtered = true
|
78
90
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
@@ -48,19 +48,19 @@ describe 'Chef::ReservedNames::Win32::Security', :windows_only do
|
|
48
48
|
FileUtils.rm_rf(@test_tempdir)
|
49
49
|
end
|
50
50
|
|
51
|
-
it "should not leak when retrieving and reading the ACE from a file" do
|
51
|
+
it "should not leak when retrieving and reading the ACE from a file", :volatile do
|
52
52
|
lambda {
|
53
53
|
sids = Chef::ReservedNames::Win32::Security::SecurableObject.new(@monkeyfoo).security_descriptor.dacl.select { |ace| ace.sid }
|
54
54
|
GC.start
|
55
55
|
}.should_not leak_memory(:warmup => 50, :iterations => 100)
|
56
56
|
end
|
57
57
|
|
58
|
-
it "should not leak when creating a new ACL and setting it on a file" do
|
58
|
+
it "should not leak when creating a new ACL and setting it on a file", :volatile do
|
59
59
|
securable_object = Security::SecurableObject.new(@monkeyfoo)
|
60
60
|
lambda {
|
61
|
-
securable_object.dacl = Security::ACL.create([
|
62
|
-
Chef::ReservedNames::Win32::Security::ACE.access_allowed(Security::SID.Everyone, Chef::ReservedNames::Win32::API::Security::GENERIC_READ),
|
63
|
-
Chef::ReservedNames::Win32::Security::ACE.access_denied(Security::SID.from_account("Users"), Chef::ReservedNames::Win32::API::Security::GENERIC_ALL)
|
61
|
+
securable_object.dacl = Chef::ReservedNames::Win32::Security::ACL.create([
|
62
|
+
Chef::ReservedNames::Win32::Security::ACE.access_allowed(Chef::ReservedNames::Win32::Security::SID.Everyone, Chef::ReservedNames::Win32::API::Security::GENERIC_READ),
|
63
|
+
Chef::ReservedNames::Win32::Security::ACE.access_denied(Chef::ReservedNames::Win32::Security::SID.from_account("Users"), Chef::ReservedNames::Win32::API::Security::GENERIC_ALL)
|
64
64
|
])
|
65
65
|
GC.start
|
66
66
|
}.should_not leak_memory(:warmup => 50, :iterations => 100)
|
@@ -17,8 +17,6 @@ CHEF_SPEC_DATA = File.expand_path(File.dirname(__FILE__) + "/../data/")
|
|
17
17
|
CHEF_SPEC_BACKUP_PATH = File.join(Dir.tmpdir, 'test-backup-path')
|
18
18
|
|
19
19
|
Chef::Config[:log_level] = :fatal
|
20
|
-
Chef::Config[:cache_type] = "Memory"
|
21
|
-
Chef::Config[:cache_options] = { }
|
22
20
|
Chef::Config[:persistent_queue] = false
|
23
21
|
Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
|
24
22
|
|
@@ -34,7 +32,7 @@ end
|
|
34
32
|
# From Ruby 1.9.2+
|
35
33
|
# Here for backwards compatibility with Ruby 1.8.7
|
36
34
|
# http://rubydoc.info/stdlib/tmpdir/1.9.2/Dir/Tmpname
|
37
|
-
def make_tmpname(prefix_suffix, n)
|
35
|
+
def make_tmpname(prefix_suffix, n = nil)
|
38
36
|
case prefix_suffix
|
39
37
|
when String
|
40
38
|
prefix = prefix_suffix
|
@@ -50,3 +48,16 @@ def make_tmpname(prefix_suffix, n)
|
|
50
48
|
path << "-#{n}" if n
|
51
49
|
path << suffix
|
52
50
|
end
|
51
|
+
|
52
|
+
# NOTE:
|
53
|
+
# This is a temporary fix to get tests passing on systems that have no `diff`
|
54
|
+
# until we can replace shelling out to `diff` with ruby diff-lcs
|
55
|
+
def has_diff?
|
56
|
+
begin
|
57
|
+
diff_cmd = Mixlib::ShellOut.new("diff -v")
|
58
|
+
diff_cmd.run_command
|
59
|
+
true
|
60
|
+
rescue Errno::ENOENT
|
61
|
+
false
|
62
|
+
end
|
63
|
+
end
|
@@ -29,12 +29,10 @@ class Chef
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def pretty_kitty(arg=nil)
|
32
|
-
|
33
|
-
|
34
|
-
when true, false
|
35
|
-
@pretty_kitty = arg
|
36
|
-
end
|
32
|
+
if arg == true or arg == false
|
33
|
+
@pretty_kitty = arg
|
37
34
|
end
|
35
|
+
@pretty_kitty
|
38
36
|
end
|
39
37
|
end
|
40
38
|
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.
|
@@ -20,23 +20,21 @@ class Chef
|
|
20
20
|
class Resource
|
21
21
|
class OneTwoThreeFour < Chef::Resource
|
22
22
|
attr_reader :i_can_count
|
23
|
-
|
23
|
+
|
24
24
|
def initialize(name, run_context)
|
25
25
|
@resource_name = :one_two_three_four
|
26
26
|
super
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def i_can_count(tf)
|
30
30
|
@i_can_count = tf
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def something(arg=nil)
|
34
|
-
|
35
|
-
|
36
|
-
when true, false
|
37
|
-
@something = arg
|
38
|
-
end
|
34
|
+
if arg == true or arg == false
|
35
|
+
@something = arg
|
39
36
|
end
|
37
|
+
@something
|
40
38
|
end
|
41
39
|
end
|
42
40
|
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.
|
@@ -23,23 +23,21 @@ class Chef
|
|
23
23
|
class Resource
|
24
24
|
class ZenMaster < Chef::Resource
|
25
25
|
attr_reader :peace
|
26
|
-
|
26
|
+
|
27
27
|
def initialize(name, run_context=nil)
|
28
28
|
@resource_name = :zen_master
|
29
29
|
super
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
def peace(tf)
|
33
33
|
@peace = tf
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
def something(arg=nil)
|
37
|
-
|
38
|
-
|
39
|
-
when true, false
|
40
|
-
@something = arg
|
41
|
-
end
|
37
|
+
if arg == true or arg == false
|
38
|
+
@something = arg
|
42
39
|
end
|
40
|
+
@something
|
43
41
|
end
|
44
42
|
end
|
45
43
|
end
|
@@ -60,7 +60,7 @@ module Matchers
|
|
60
60
|
def profiler
|
61
61
|
@profiler ||= begin
|
62
62
|
if Chef::Platform.windows?
|
63
|
-
require File.join(File.dirname(__FILE__), '..', 'prof', 'win32')
|
63
|
+
require File.join(File.dirname(__FILE__), '..', 'platforms', 'prof', 'win32')
|
64
64
|
RSpec::Prof::Win32::Profiler.new
|
65
65
|
else
|
66
66
|
require File.join(File.dirname(__FILE__), '..', 'prof', 'gc')
|
@@ -10,6 +10,24 @@ def windows?
|
|
10
10
|
!!(RUBY_PLATFORM =~ /mswin|mingw|windows/)
|
11
11
|
end
|
12
12
|
|
13
|
+
def windows_win2k3?
|
14
|
+
return false unless windows?
|
15
|
+
require 'ruby-wmi'
|
16
|
+
|
17
|
+
host = WMI::Win32_OperatingSystem.find(:first)
|
18
|
+
(host.version && host.version.start_with?("5.2"))
|
19
|
+
end
|
20
|
+
|
21
|
+
# detects if the hardware is 64-bit (evaluates to true in "WOW64" mode in a 32-bit app on a 64-bit system)
|
22
|
+
def windows64?
|
23
|
+
windows? && ( ENV['PROCESSOR_ARCHITECTURE'] == 'AMD64' || ENV['PROCESSOR_ARCHITEW6432'] == 'AMD64' )
|
24
|
+
end
|
25
|
+
|
26
|
+
# detects if the hardware is 32-bit
|
27
|
+
def windows32?
|
28
|
+
windows? && !windows64?
|
29
|
+
end
|
30
|
+
|
13
31
|
# def jruby?
|
14
32
|
|
15
33
|
def unix?
|
@@ -17,42 +17,104 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
shared_examples_for "a directory resource" do
|
20
|
+
|
21
|
+
let(:expect_updated?) {true}
|
22
|
+
|
20
23
|
context "when the target directory does not exist" do
|
21
|
-
|
22
|
-
|
23
|
-
File.
|
24
|
+
before do
|
25
|
+
# assert pre-condition
|
26
|
+
File.should_not exist(path)
|
24
27
|
end
|
25
28
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
describe "when running action :create" do
|
30
|
+
context "and the recursive option is not set" do
|
31
|
+
before do
|
32
|
+
resource.run_action(:create)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "creates the directory when the :create action is run" do
|
36
|
+
File.should exist(path)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "is marked updated by last action" do
|
40
|
+
resource.should be_updated_by_last_action
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "and the recursive option is set" do
|
45
|
+
before do
|
46
|
+
File.should_not exist(path)
|
47
|
+
|
48
|
+
resource.recursive(true)
|
49
|
+
@recursive_path = File.join(path, 'red-headed-stepchild')
|
50
|
+
resource.path(@recursive_path)
|
51
|
+
resource.run_action(:create)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "recursively creates required directories" do
|
55
|
+
File.should exist(path)
|
56
|
+
File.should exist(@recursive_path)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "is marked updated by last action" do
|
60
|
+
resource.should be_updated_by_last_action
|
61
|
+
end
|
62
|
+
end
|
33
63
|
end
|
34
64
|
end
|
35
65
|
|
36
66
|
context "when the target directory exists" do
|
37
67
|
before(:each) do
|
38
|
-
|
39
|
-
|
68
|
+
# For resources such as remote_directory, simply creating the base
|
69
|
+
# directory isn't enough to test that the system is in the desired state,
|
70
|
+
# so we run the resource twice--otherwise the updated_by_last_action test
|
71
|
+
# will fail.
|
72
|
+
resource.dup.run_action(:create)
|
73
|
+
File.should exist(path)
|
40
74
|
|
41
|
-
it "does not re-create the directory" do
|
42
75
|
resource.run_action(:create)
|
43
|
-
File.should exist(path)
|
44
76
|
end
|
45
77
|
|
46
|
-
|
47
|
-
|
48
|
-
|
78
|
+
describe "when running action :create" do
|
79
|
+
before do
|
80
|
+
resource.run_action(:create)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "does not re-create the directory" do
|
84
|
+
File.should exist(path)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "is not marked updated by last action" do
|
88
|
+
resource.should_not be_updated_by_last_action
|
89
|
+
end
|
49
90
|
end
|
50
91
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
92
|
+
describe "when running action :delete" do
|
93
|
+
context "without the recursive option" do
|
94
|
+
before do
|
95
|
+
resource.run_action(:delete)
|
96
|
+
end
|
97
|
+
|
98
|
+
it "deletes the directory" do
|
99
|
+
File.should_not exist(path)
|
100
|
+
end
|
101
|
+
|
102
|
+
it "is marked as updated by last action" do
|
103
|
+
resource.should be_updated_by_last_action
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context "with the recursive option" do
|
108
|
+
before do
|
109
|
+
FileUtils.mkdir(File.join(path, 'red-headed-stepchild'))
|
110
|
+
resource.recursive(true)
|
111
|
+
resource.run_action(:delete)
|
112
|
+
end
|
113
|
+
|
114
|
+
it "recursively deletes directories" do
|
115
|
+
File.should_not exist(path)
|
116
|
+
end
|
117
|
+
end
|
56
118
|
end
|
57
119
|
end
|
58
120
|
|
@@ -76,7 +138,7 @@ end
|
|
76
138
|
|
77
139
|
shared_context Chef::Resource::Directory do
|
78
140
|
let(:path) do
|
79
|
-
File.join(Dir.tmpdir, make_tmpname(directory_base
|
141
|
+
File.join(Dir.tmpdir, make_tmpname(directory_base))
|
80
142
|
end
|
81
143
|
|
82
144
|
after(:each) do
|
@@ -17,86 +17,203 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
shared_examples_for "a file with the wrong content" do
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
sha256_checksum(path).should_not == @expected_checksum
|
26
|
-
end
|
27
|
-
|
28
|
-
it "doesn't overwrite the file when the :create_if_missing action is run" do
|
29
|
-
sleep 1
|
30
|
-
resource.run_action(:create_if_missing)
|
31
|
-
File.stat(path).mtime.should == @expected_mtime
|
20
|
+
before do
|
21
|
+
# Assert starting state is as expected
|
22
|
+
File.should exist(path)
|
23
|
+
# Kinda weird, in this case @expected_checksum is the cksum of the file
|
24
|
+
# with incorrect content.
|
32
25
|
sha256_checksum(path).should == @expected_checksum
|
33
26
|
end
|
34
27
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
28
|
+
context "when running action :create" do
|
29
|
+
context "with backups enabled" do
|
30
|
+
before do
|
31
|
+
Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
|
32
|
+
resource.run_action(:create)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "overwrites the file with the updated content when the :create action is run" do
|
36
|
+
File.stat(path).mtime.should > @expected_mtime
|
37
|
+
sha256_checksum(path).should_not == @expected_checksum
|
38
|
+
end
|
39
|
+
|
40
|
+
it "backs up the existing file" do
|
41
|
+
Dir.glob(backup_glob).size.should equal(1)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "is marked as updated by last action" do
|
45
|
+
resource.should be_updated_by_last_action
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "with backups disabled" do
|
50
|
+
before do
|
51
|
+
Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
|
52
|
+
resource.backup(0)
|
53
|
+
resource.run_action(:create)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should not attempt to backup the existing file if :backup == 0" do
|
57
|
+
Dir.glob(backup_glob).size.should equal(0)
|
58
|
+
end
|
59
|
+
end
|
39
60
|
end
|
40
61
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
62
|
+
describe "when running action :create_if_missing" do
|
63
|
+
before do
|
64
|
+
resource.run_action(:create_if_missing)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "doesn't overwrite the file when the :create_if_missing action is run" do
|
68
|
+
File.stat(path).mtime.should == @expected_mtime
|
69
|
+
sha256_checksum(path).should == @expected_checksum
|
70
|
+
end
|
71
|
+
|
72
|
+
it "is not marked as updated" do
|
73
|
+
resource.should_not be_updated_by_last_action
|
74
|
+
end
|
46
75
|
end
|
47
76
|
|
48
|
-
|
49
|
-
|
50
|
-
|
77
|
+
describe "when running action :delete" do
|
78
|
+
before do
|
79
|
+
resource.run_action(:delete)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "deletes the file" do
|
83
|
+
File.should_not exist(path)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "is marked as updated by last action" do
|
87
|
+
resource.should be_updated_by_last_action
|
88
|
+
end
|
51
89
|
end
|
52
90
|
end
|
53
91
|
|
54
92
|
shared_examples_for "a file with the correct content" do
|
55
|
-
|
56
|
-
|
93
|
+
before do
|
94
|
+
# Assert starting state is as expected
|
95
|
+
File.should exist(path)
|
57
96
|
sha256_checksum(path).should == @expected_checksum
|
58
97
|
end
|
59
98
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
99
|
+
describe "when running action :create" do
|
100
|
+
before do
|
101
|
+
resource.run_action(:create)
|
102
|
+
end
|
103
|
+
it "does not overwrite the original when the :create action is run" do
|
104
|
+
sha256_checksum(path).should == @expected_checksum
|
105
|
+
end
|
106
|
+
|
107
|
+
it "does not update the mtime of the file when the :create action is run" do
|
108
|
+
File.stat(path).mtime.should == @expected_mtime
|
109
|
+
end
|
110
|
+
|
111
|
+
it "is not marked as updated by last action" do
|
112
|
+
resource.should_not be_updated_by_last_action
|
113
|
+
end
|
64
114
|
end
|
65
115
|
|
66
|
-
|
67
|
-
|
68
|
-
|
116
|
+
describe "when running action :create_if_missing" do
|
117
|
+
before do
|
118
|
+
resource.run_action(:create_if_missing)
|
119
|
+
end
|
120
|
+
|
121
|
+
it "doesn't overwrite the file when the :create_if_missing action is run" do
|
122
|
+
sha256_checksum(path).should == @expected_checksum
|
123
|
+
end
|
124
|
+
|
125
|
+
it "is not marked as updated by last action" do
|
126
|
+
resource.should_not be_updated_by_last_action
|
127
|
+
end
|
69
128
|
end
|
70
129
|
|
71
|
-
|
72
|
-
|
73
|
-
|
130
|
+
describe "when running action :delete" do
|
131
|
+
before do
|
132
|
+
resource.run_action(:delete)
|
133
|
+
end
|
134
|
+
|
135
|
+
it "deletes the file when the :delete action is run" do
|
136
|
+
File.should_not exist(path)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "is marked as updated by last action" do
|
140
|
+
resource.should be_updated_by_last_action
|
141
|
+
end
|
74
142
|
end
|
75
143
|
end
|
76
144
|
|
77
145
|
shared_examples_for "a file resource" do
|
146
|
+
before do
|
147
|
+
Chef::Log.level = :info
|
148
|
+
end
|
78
149
|
# note the stripping of the drive letter from the tmpdir on windows
|
79
150
|
let(:backup_glob) { File.join(CHEF_SPEC_BACKUP_PATH, Dir.tmpdir.sub(/^([A-Za-z]:)/, ""), "#{file_base}*") }
|
80
151
|
|
152
|
+
# Most tests update the resource, but a few do not. We need to test that the
|
153
|
+
# resource is marked updated or not correctly, but the test contexts are
|
154
|
+
# composed between correct/incorrect content and correct/incorrect
|
155
|
+
# permissions. We override this "let" definition in the context where content
|
156
|
+
# and permissions are correct.
|
157
|
+
let(:expect_updated?) { true }
|
158
|
+
|
159
|
+
def binread(file)
|
160
|
+
content = File.open(file, "rb") do |f|
|
161
|
+
f.read
|
162
|
+
end
|
163
|
+
content.force_encoding(Encoding::BINARY) if "".respond_to?(:force_encoding)
|
164
|
+
content
|
165
|
+
end
|
166
|
+
|
81
167
|
context "when the target file does not exist" do
|
82
|
-
|
83
|
-
|
84
|
-
File.
|
168
|
+
before do
|
169
|
+
# Assert starting state is expected
|
170
|
+
File.should_not exist(path)
|
85
171
|
end
|
86
172
|
|
87
|
-
|
88
|
-
|
89
|
-
|
173
|
+
describe "when running action :create" do
|
174
|
+
before do
|
175
|
+
resource.run_action(:create)
|
176
|
+
end
|
177
|
+
|
178
|
+
it "creates the file when the :create action is run" do
|
179
|
+
File.should exist(path)
|
180
|
+
end
|
181
|
+
|
182
|
+
it "creates the file with the correct content when the :create action is run" do
|
183
|
+
binread(path).should == expected_content
|
184
|
+
end
|
185
|
+
|
186
|
+
it "is marked as updated by last action" do
|
187
|
+
resource.should be_updated_by_last_action
|
188
|
+
end
|
90
189
|
end
|
91
190
|
|
92
|
-
|
93
|
-
|
94
|
-
|
191
|
+
describe "when running action :create_if_missing" do
|
192
|
+
before do
|
193
|
+
resource.run_action(:create_if_missing)
|
194
|
+
end
|
195
|
+
|
196
|
+
it "creates the file with the correct content" do
|
197
|
+
binread(path).should == expected_content
|
198
|
+
end
|
199
|
+
|
200
|
+
it "is marked as updated by last action" do
|
201
|
+
resource.should be_updated_by_last_action
|
202
|
+
end
|
95
203
|
end
|
96
204
|
|
97
|
-
|
98
|
-
|
99
|
-
|
205
|
+
describe "when running action :delete" do
|
206
|
+
before do
|
207
|
+
resource.run_action(:delete)
|
208
|
+
end
|
209
|
+
|
210
|
+
it "deletes the file when the :delete action is run" do
|
211
|
+
File.should_not exist(path)
|
212
|
+
end
|
213
|
+
|
214
|
+
it "is not marked updated by last action" do
|
215
|
+
resource.should_not be_updated_by_last_action
|
216
|
+
end
|
100
217
|
end
|
101
218
|
end
|
102
219
|
|
@@ -112,7 +229,10 @@ shared_examples_for "a file resource" do
|
|
112
229
|
|
113
230
|
context "when the target file has the wrong content" do
|
114
231
|
before(:each) do
|
115
|
-
File.open(path, "
|
232
|
+
File.open(path, "wb") { |f| f.print "This is so wrong!!!" }
|
233
|
+
now = Time.now.to_i
|
234
|
+
File.utime(now - 9000, now - 9000, path)
|
235
|
+
|
116
236
|
@expected_mtime = File.stat(path).mtime
|
117
237
|
@expected_checksum = sha256_checksum(path)
|
118
238
|
end
|
@@ -129,20 +249,27 @@ shared_examples_for "a file resource" do
|
|
129
249
|
include_context "setup broken permissions"
|
130
250
|
|
131
251
|
it_behaves_like "a file with the wrong content"
|
132
|
-
|
252
|
+
|
133
253
|
it_behaves_like "a securable resource"
|
134
254
|
end
|
135
255
|
end
|
136
256
|
|
137
257
|
context "when the target file has the correct content" do
|
138
258
|
before(:each) do
|
139
|
-
File.open(path, "
|
259
|
+
File.open(path, "wb") { |f| f.print expected_content }
|
260
|
+
now = Time.now.to_i
|
261
|
+
File.utime(now - 9000, now - 9000, path)
|
262
|
+
|
140
263
|
@expected_mtime = File.stat(path).mtime
|
141
|
-
@expected_atime = File.stat(path).atime
|
142
264
|
@expected_checksum = sha256_checksum(path)
|
143
265
|
end
|
144
266
|
|
145
267
|
describe "and the target file has the correct permissions" do
|
268
|
+
|
269
|
+
# When permissions and content are correct, chef should do nothing and
|
270
|
+
# the resource should not be marked updated.
|
271
|
+
let(:expect_updated?) { false }
|
272
|
+
|
146
273
|
include_context "setup correct permissions"
|
147
274
|
|
148
275
|
it_behaves_like "a file with the correct content"
|
@@ -159,11 +286,29 @@ shared_examples_for "a file resource" do
|
|
159
286
|
end
|
160
287
|
end
|
161
288
|
|
289
|
+
it_behaves_like "a file that inherits permissions from a parent directory"
|
290
|
+
|
291
|
+
end
|
292
|
+
|
293
|
+
shared_examples_for "a file that inherits permissions from a parent directory" do
|
294
|
+
include_context "use Windows permissions"
|
295
|
+
context "on Windows", :windows_only do
|
296
|
+
it "has only inherited aces if no explicit aces were specified" do
|
297
|
+
File.exist?(path).should == false
|
298
|
+
|
299
|
+
resource.run_action(:create)
|
300
|
+
|
301
|
+
descriptor.dacl_inherits?.should == true
|
302
|
+
descriptor.dacl.each do | ace |
|
303
|
+
ace.inherited?.should == true
|
304
|
+
end
|
305
|
+
end
|
306
|
+
end
|
162
307
|
end
|
163
308
|
|
164
309
|
shared_context Chef::Resource::File do
|
165
310
|
let(:path) do
|
166
|
-
File.join(Dir.tmpdir, make_tmpname(file_base
|
311
|
+
File.join(Dir.tmpdir, make_tmpname(file_base))
|
167
312
|
end
|
168
313
|
|
169
314
|
after(:each) do
|