chef 12.0.0.alpha.0 → 12.0.0.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (207) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +3 -5
  3. data/lib/chef/api_client.rb +1 -1
  4. data/lib/chef/application.rb +16 -8
  5. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  6. data/lib/chef/chef_fs/command_line.rb +1 -1
  7. data/lib/chef/chef_fs/file_system.rb +1 -1
  8. data/lib/chef/chef_fs/file_system/acl_entry.rb +1 -1
  9. data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +3 -3
  10. data/lib/chef/chef_fs/file_system/cookbook_file.rb +2 -2
  11. data/lib/chef/chef_fs/file_system/rest_list_dir.rb +2 -2
  12. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +4 -4
  13. data/lib/chef/config.rb +6 -5
  14. data/lib/chef/config_fetcher.rb +1 -1
  15. data/lib/chef/cookbook/cookbook_version_loader.rb +126 -43
  16. data/lib/chef/cookbook/metadata.rb +102 -53
  17. data/lib/chef/cookbook/syntax_check.rb +1 -1
  18. data/lib/chef/cookbook_loader.rb +62 -14
  19. data/lib/chef/cookbook_site_streaming_uploader.rb +12 -1
  20. data/lib/chef/cookbook_version.rb +13 -4
  21. data/lib/chef/data_bag.rb +28 -15
  22. data/lib/chef/data_bag_item.rb +5 -7
  23. data/lib/chef/digester.rb +5 -9
  24. data/lib/chef/dsl/recipe.rb +14 -0
  25. data/lib/chef/encrypted_data_bag_item.rb +1 -0
  26. data/lib/chef/encrypted_data_bag_item/assertions.rb +57 -0
  27. data/lib/chef/encrypted_data_bag_item/decryptor.rb +52 -28
  28. data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +37 -0
  29. data/lib/chef/encrypted_data_bag_item/encryption_failure.rb +22 -0
  30. data/lib/chef/encrypted_data_bag_item/encryptor.rb +79 -8
  31. data/lib/chef/environment.rb +1 -3
  32. data/lib/chef/exceptions.rb +18 -3
  33. data/lib/chef/formatters/base.rb +7 -0
  34. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +1 -1
  35. data/lib/chef/handler/json_file.rb +0 -1
  36. data/lib/chef/http/json_output.rb +1 -1
  37. data/lib/chef/json_compat.rb +24 -6
  38. data/lib/chef/knife/bootstrap.rb +2 -2
  39. data/lib/chef/knife/client_delete.rb +1 -1
  40. data/lib/chef/knife/cookbook_site_download.rb +1 -1
  41. data/lib/chef/knife/cookbook_site_list.rb +1 -1
  42. data/lib/chef/knife/cookbook_site_search.rb +1 -1
  43. data/lib/chef/knife/cookbook_site_share.rb +2 -2
  44. data/lib/chef/knife/cookbook_site_show.rb +3 -3
  45. data/lib/chef/knife/cookbook_site_unshare.rb +1 -1
  46. data/lib/chef/knife/core/node_editor.rb +2 -3
  47. data/lib/chef/knife/core/ui.rb +2 -2
  48. data/lib/chef/knife/deps.rb +2 -3
  49. data/lib/chef/mixin/shell_out.rb +1 -1
  50. data/lib/chef/mixin/windows_architecture_helper.rb +1 -0
  51. data/lib/chef/node.rb +1 -2
  52. data/lib/chef/platform/provider_mapping.rb +33 -6
  53. data/lib/chef/provider.rb +0 -2
  54. data/lib/chef/provider/cookbook_file/content.rb +1 -1
  55. data/lib/chef/provider/cron.rb +11 -0
  56. data/lib/chef/provider/deploy.rb +3 -2
  57. data/lib/chef/provider/deploy/revision.rb +2 -2
  58. data/lib/chef/provider/env.rb +1 -1
  59. data/lib/chef/provider/env/windows.rb +5 -9
  60. data/lib/chef/provider/file.rb +84 -33
  61. data/lib/chef/provider/git.rb +2 -1
  62. data/lib/chef/provider/group/aix.rb +17 -2
  63. data/lib/chef/provider/group/dscl.rb +27 -9
  64. data/lib/chef/provider/group/pw.rb +8 -1
  65. data/lib/chef/provider/http_request.rb +4 -4
  66. data/lib/chef/provider/log.rb +4 -14
  67. data/lib/chef/provider/mount/mount.rb +2 -2
  68. data/lib/chef/provider/package/ips.rb +17 -23
  69. data/lib/chef/provider/package/paludis.rb +2 -2
  70. data/lib/chef/provider/package/rpm.rb +2 -2
  71. data/lib/chef/provider/package/rubygems.rb +2 -0
  72. data/lib/chef/provider/package/yum.rb +2 -0
  73. data/lib/chef/provider/package/zypper.rb +1 -1
  74. data/lib/chef/provider/remote_file/cache_control_data.rb +2 -2
  75. data/lib/chef/provider/service/windows.rb +87 -21
  76. data/lib/chef/provider/user/aix.rb +95 -0
  77. data/lib/chef/provider/user/dscl.rb +544 -156
  78. data/lib/chef/provider/user/useradd.rb +1 -0
  79. data/lib/chef/providers.rb +1 -0
  80. data/lib/chef/resource.rb +4 -3
  81. data/lib/chef/resource/freebsd_package.rb +10 -2
  82. data/lib/chef/resource/paludis_package.rb +1 -0
  83. data/lib/chef/resource/scm.rb +10 -0
  84. data/lib/chef/resource/user.rb +27 -0
  85. data/lib/chef/resource/windows_service.rb +53 -0
  86. data/lib/chef/resource_collection.rb +23 -12
  87. data/lib/chef/resource_reporter.rb +10 -10
  88. data/lib/chef/resources.rb +1 -0
  89. data/lib/chef/role.rb +3 -3
  90. data/lib/chef/run_list.rb +6 -3
  91. data/lib/chef/user.rb +1 -1
  92. data/lib/chef/util/diff.rb +1 -2
  93. data/lib/chef/version.rb +1 -1
  94. data/lib/chef/version_constraint.rb +4 -4
  95. data/spec/data/cookbooks/angrybash/metadata.rb +2 -0
  96. data/spec/data/cookbooks/apache2/metadata.rb +2 -0
  97. data/spec/data/cookbooks/borken/metadata.rb +2 -0
  98. data/spec/data/cookbooks/ignorken/metadata.rb +2 -0
  99. data/spec/data/cookbooks/java/metadata.rb +2 -0
  100. data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -0
  101. data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -0
  102. data/spec/data/cookbooks/name-mismatch-versionnumber/recipes/default.rb +8 -0
  103. data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -0
  104. data/spec/data/cookbooks/preseed/metadata.rb +2 -0
  105. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -0
  106. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -0
  107. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb +8 -0
  108. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -0
  109. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb +10 -0
  110. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb +8 -0
  111. data/spec/data/mac_users/10.7-8.plist.xml +559 -0
  112. data/spec/data/mac_users/10.7-8.shadow.xml +11 -0
  113. data/spec/data/mac_users/10.7.plist.xml +559 -0
  114. data/spec/data/mac_users/10.7.shadow.xml +11 -0
  115. data/spec/data/mac_users/10.8.plist.xml +559 -0
  116. data/spec/data/mac_users/10.8.shadow.xml +21 -0
  117. data/spec/data/mac_users/10.9.plist.xml +560 -0
  118. data/spec/data/mac_users/10.9.shadow.xml +21 -0
  119. data/spec/data/object_loader/environments/test.json +2 -0
  120. data/spec/data/object_loader/environments/test_json_class.json +2 -0
  121. data/spec/data/object_loader/nodes/test.json +2 -0
  122. data/spec/data/object_loader/nodes/test_json_class.json +2 -0
  123. data/spec/data/object_loader/roles/test.json +2 -0
  124. data/spec/data/object_loader/roles/test_json_class.json +2 -0
  125. data/spec/functional/resource/bff_spec.rb +1 -1
  126. data/spec/functional/resource/cron_spec.rb +20 -1
  127. data/spec/functional/resource/env_spec.rb +137 -0
  128. data/spec/functional/resource/group_spec.rb +7 -5
  129. data/spec/functional/resource/remote_file_spec.rb +12 -1
  130. data/spec/functional/resource/user/dscl_spec.rb +198 -0
  131. data/spec/functional/resource/{user_spec.rb → user/useradd_spec.rb} +175 -37
  132. data/spec/integration/client/client_spec.rb +6 -4
  133. data/spec/integration/client/ipv6_spec.rb +16 -14
  134. data/spec/integration/knife/chef_fs_data_store_spec.rb +57 -46
  135. data/spec/integration/knife/chef_repo_path_spec.rb +105 -78
  136. data/spec/integration/knife/chef_repository_file_system_spec.rb +100 -84
  137. data/spec/integration/knife/chefignore_spec.rb +76 -46
  138. data/spec/integration/knife/common_options_spec.rb +16 -21
  139. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +3 -3
  140. data/spec/integration/knife/delete_spec.rb +66 -46
  141. data/spec/integration/knife/deps_spec.rb +145 -94
  142. data/spec/integration/knife/diff_spec.rb +176 -110
  143. data/spec/integration/knife/download_spec.rb +229 -133
  144. data/spec/integration/knife/list_spec.rb +62 -54
  145. data/spec/integration/knife/raw_spec.rb +24 -9
  146. data/spec/integration/knife/redirection_spec.rb +2 -2
  147. data/spec/integration/knife/serve_spec.rb +2 -2
  148. data/spec/integration/knife/show_spec.rb +32 -26
  149. data/spec/integration/knife/upload_spec.rb +308 -165
  150. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +10 -8
  151. data/spec/integration/solo/solo_spec.rb +22 -11
  152. data/spec/spec_helper.rb +3 -0
  153. data/spec/support/lib/chef/resource/zen_follower.rb +46 -0
  154. data/spec/support/platform_helpers.rb +12 -0
  155. data/spec/support/shared/functional/file_resource.rb +10 -0
  156. data/spec/support/shared/integration/chef_zero_support.rb +130 -0
  157. data/spec/support/shared/integration/integration_helper.rb +100 -98
  158. data/spec/support/shared/integration/knife_support.rb +0 -1
  159. data/spec/support/shared/unit/provider/file.rb +6 -4
  160. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +10 -1
  161. data/spec/unit/api_client/registration_spec.rb +83 -74
  162. data/spec/unit/application_spec.rb +32 -9
  163. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +179 -0
  164. data/spec/unit/cookbook/metadata_spec.rb +190 -150
  165. data/spec/unit/cookbook/syntax_check_spec.rb +3 -2
  166. data/spec/unit/cookbook_loader_spec.rb +114 -53
  167. data/spec/unit/{cookbook_site_streaming_uploader.rb → cookbook_site_streaming_uploader_spec.rb} +21 -1
  168. data/spec/unit/data_bag_spec.rb +88 -13
  169. data/spec/unit/deprecation_spec.rb +1 -2
  170. data/spec/unit/encrypted_data_bag_item_spec.rb +145 -9
  171. data/spec/unit/environment_spec.rb +1 -1
  172. data/spec/unit/formatters/base_spec.rb +48 -0
  173. data/spec/unit/json_compat_spec.rb +48 -17
  174. data/spec/unit/knife/client_delete_spec.rb +4 -4
  175. data/spec/unit/knife/client_show_spec.rb +15 -5
  176. data/spec/unit/knife/cookbook_site_download_spec.rb +1 -1
  177. data/spec/unit/knife/cookbook_site_share_spec.rb +3 -3
  178. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -2
  179. data/spec/unit/knife/data_bag_show_spec.rb +23 -14
  180. data/spec/unit/knife/node_show_spec.rb +32 -15
  181. data/spec/unit/knife/role_show_spec.rb +59 -0
  182. data/spec/unit/platform_spec.rb +10 -0
  183. data/spec/unit/provider/deploy_spec.rb +4 -0
  184. data/spec/unit/provider/env_spec.rb +19 -0
  185. data/spec/unit/provider/git_spec.rb +22 -2
  186. data/spec/unit/provider/group/dscl_spec.rb +38 -1
  187. data/spec/unit/provider/group/pw_spec.rb +2 -2
  188. data/spec/unit/provider/http_request_spec.rb +8 -8
  189. data/spec/unit/provider/log_spec.rb +33 -53
  190. data/spec/unit/provider/mount/mount_spec.rb +12 -3
  191. data/spec/unit/provider/package/ips_spec.rb +96 -63
  192. data/spec/unit/provider/package/paludis_spec.rb +5 -5
  193. data/spec/unit/provider/package/rpm_spec.rb +12 -0
  194. data/spec/unit/provider/package/zypper_spec.rb +28 -16
  195. data/spec/unit/provider/service/windows_spec.rb +77 -17
  196. data/spec/unit/provider/user/dscl_spec.rb +659 -264
  197. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  198. data/spec/unit/recipe_spec.rb +41 -0
  199. data/spec/unit/resource/scm_spec.rb +11 -0
  200. data/spec/unit/resource/user_spec.rb +4 -0
  201. data/spec/unit/resource/windows_service_spec.rb +46 -0
  202. data/spec/unit/resource_collection_spec.rb +33 -0
  203. data/spec/unit/resource_reporter_spec.rb +48 -0
  204. data/spec/unit/resource_spec.rb +9 -2
  205. data/spec/unit/role_spec.rb +6 -0
  206. data/spec/unit/version_constraint_spec.rb +28 -0
  207. metadata +61 -4
@@ -21,36 +21,38 @@ require 'chef/knife/list'
21
21
  require 'chef/knife/show'
22
22
 
23
23
  describe 'chef_repo_path tests' do
24
- extend IntegrationSupport
24
+ include IntegrationSupport
25
25
  include KnifeSupport
26
26
 
27
27
  # TODO alternate repo_path / *_path
28
28
  context 'alternate *_path' do
29
29
  when_the_repository 'has clients and clients2, cookbooks and cookbooks2, etc.' do
30
- file 'clients/client1.json', {}
31
- file 'cookbooks/cookbook1/metadata.rb', ''
32
- file 'data_bags/bag/item.json', {}
33
- file 'environments/env1.json', {}
34
- file 'nodes/node1.json', {}
35
- file 'roles/role1.json', {}
36
- file 'users/user1.json', {}
37
-
38
- file 'clients2/client2.json', {}
39
- file 'cookbooks2/cookbook2/metadata.rb', ''
40
- file 'data_bags2/bag2/item2.json', {}
41
- file 'environments2/env2.json', {}
42
- file 'nodes2/node2.json', {}
43
- file 'roles2/role2.json', {}
44
- file 'users2/user2.json', {}
45
-
46
- directory 'chef_repo2' do
47
- file 'clients/client3.json', {}
48
- file 'cookbooks/cookbook3/metadata.rb', ''
49
- file 'data_bags/bag3/item3.json', {}
50
- file 'environments/env3.json', {}
51
- file 'nodes/node3.json', {}
52
- file 'roles/role3.json', {}
53
- file 'users/user3.json', {}
30
+ before do
31
+ file 'clients/client1.json', {}
32
+ file 'cookbooks/cookbook1/metadata.rb', ''
33
+ file 'data_bags/bag/item.json', {}
34
+ file 'environments/env1.json', {}
35
+ file 'nodes/node1.json', {}
36
+ file 'roles/role1.json', {}
37
+ file 'users/user1.json', {}
38
+
39
+ file 'clients2/client2.json', {}
40
+ file 'cookbooks2/cookbook2/metadata.rb', ''
41
+ file 'data_bags2/bag2/item2.json', {}
42
+ file 'environments2/env2.json', {}
43
+ file 'nodes2/node2.json', {}
44
+ file 'roles2/role2.json', {}
45
+ file 'users2/user2.json', {}
46
+
47
+ directory 'chef_repo2' do
48
+ file 'clients/client3.json', {}
49
+ file 'cookbooks/cookbook3/metadata.rb', ''
50
+ file 'data_bags/bag3/item3.json', {}
51
+ file 'environments/env3.json', {}
52
+ file 'nodes/node3.json', {}
53
+ file 'roles/role3.json', {}
54
+ file 'users/user3.json', {}
55
+ end
54
56
  end
55
57
 
56
58
  it 'knife list --local -Rfp --chef-repo-path chef_repo2 / grabs chef_repo2 stuff' do
@@ -105,21 +107,21 @@ EOM
105
107
  end
106
108
 
107
109
  context 'when cwd is at the top level' do
108
- cwd '.'
110
+ before { cwd '.' }
109
111
  it 'knife list --local -Rfp fails' do
110
112
  knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
111
113
  end
112
114
  end
113
115
 
114
116
  context 'when cwd is inside the data_bags directory' do
115
- cwd 'data_bags'
117
+ before { cwd 'data_bags' }
116
118
  it 'knife list --local -Rfp fails' do
117
119
  knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
118
120
  end
119
121
  end
120
122
 
121
123
  context 'when cwd is inside chef_repo2' do
122
- cwd 'chef_repo2'
124
+ before { cwd 'chef_repo2' }
123
125
  it 'knife list --local -Rfp lists everything' do
124
126
  knife('list --local -Rfp').should_succeed <<EOM
125
127
  clients/
@@ -143,7 +145,7 @@ EOM
143
145
  end
144
146
 
145
147
  context 'when cwd is inside data_bags2' do
146
- cwd 'data_bags2'
148
+ before { cwd 'data_bags2' }
147
149
  it 'knife list --local -Rfp lists data bags' do
148
150
  knife('list --local -Rfp').should_succeed <<EOM
149
151
  bag2/
@@ -164,7 +166,7 @@ EOM
164
166
  end
165
167
 
166
168
  context 'when cwd is at the top level' do
167
- cwd '.'
169
+ before { cwd '.' }
168
170
  it 'knife list --local -Rfp lists everything' do
169
171
  knife('list --local -Rfp').should_succeed <<EOM
170
172
  clients/
@@ -188,21 +190,21 @@ EOM
188
190
  end
189
191
 
190
192
  context 'when cwd is inside the data_bags directory' do
191
- cwd 'data_bags'
193
+ before { cwd 'data_bags' }
192
194
  it 'knife list --local -Rfp fails' do
193
195
  knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
194
196
  end
195
197
  end
196
198
 
197
199
  context 'when cwd is inside chef_repo2' do
198
- cwd 'chef_repo2'
200
+ before { cwd 'chef_repo2' }
199
201
  it 'knife list -Rfp fails' do
200
202
  knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
201
203
  end
202
204
  end
203
205
 
204
206
  context 'when cwd is inside data_bags2' do
205
- cwd 'data_bags2'
207
+ before { cwd 'data_bags2' }
206
208
  it 'knife list --local -Rfp lists data bags' do
207
209
  knife('list --local -Rfp').should_succeed <<EOM
208
210
  bag2/
@@ -221,21 +223,21 @@ EOM
221
223
  end
222
224
 
223
225
  context 'when cwd is at the top level' do
224
- cwd '.'
226
+ before { cwd '.' }
225
227
  it 'knife list --local -Rfp fails' do
226
228
  knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
227
229
  end
228
230
  end
229
231
 
230
232
  context 'when cwd is inside the data_bags directory' do
231
- cwd 'data_bags'
233
+ before { cwd 'data_bags' }
232
234
  it 'knife list --local -Rfp fails' do
233
235
  knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
234
236
  end
235
237
  end
236
238
 
237
239
  context 'when cwd is inside chef_repo2' do
238
- cwd 'chef_repo2'
240
+ before { cwd 'chef_repo2' }
239
241
  it 'knife list --local -Rfp lists everything' do
240
242
  knife('list --local -Rfp').should_succeed <<EOM
241
243
  clients/
@@ -259,7 +261,7 @@ EOM
259
261
  end
260
262
 
261
263
  context 'when cwd is inside chef_repo2/data_bags' do
262
- cwd 'chef_repo2/data_bags'
264
+ before { cwd 'chef_repo2/data_bags' }
263
265
  it 'knife list --local -Rfp lists data bags' do
264
266
  knife('list --local -Rfp').should_succeed <<EOM
265
267
  bag3/
@@ -281,20 +283,25 @@ EOM
281
283
  end
282
284
 
283
285
  context 'when there is a directory in clients1 and file in clients2 with the same name' do
284
- directory 'clients/blah.json'
285
- file 'clients2/blah.json', {}
286
+ before do
287
+ directory 'clients/blah.json'
288
+ file 'clients2/blah.json', {}
289
+ end
286
290
  it 'knife show /clients/blah.json succeeds' do
287
291
  knife('show --local /clients/blah.json').should_succeed <<EOM
288
292
  /clients/blah.json:
289
293
  {
294
+
290
295
  }
291
296
  EOM
292
297
  end
293
298
  end
294
299
 
295
300
  context 'when there is a file in cookbooks1 and directory in cookbooks2 with the same name' do
296
- file 'cookbooks/blah', ''
297
- file 'cookbooks2/blah/metadata.rb', ''
301
+ before do
302
+ file 'cookbooks/blah', ''
303
+ file 'cookbooks2/blah/metadata.rb', ''
304
+ end
298
305
  it 'knife list -Rfp cookbooks shows files in blah' do
299
306
  knife('list --local -Rfp /cookbooks').should_succeed <<EOM
300
307
  /cookbooks/blah/
@@ -308,8 +315,10 @@ EOM
308
315
  end
309
316
 
310
317
  context 'when there is an empty directory in cookbooks1 and a real cookbook in cookbooks2 with the same name' do
311
- directory 'cookbooks/blah'
312
- file 'cookbooks2/blah/metadata.rb', ''
318
+ before do
319
+ directory 'cookbooks/blah'
320
+ file 'cookbooks2/blah/metadata.rb', ''
321
+ end
313
322
  it 'knife list -Rfp cookbooks shows files in blah' do
314
323
  knife('list --local -Rfp /cookbooks').should_succeed(<<EOM, :stderr => "WARN: Cookbook 'blah' is empty or entirely chefignored at #{Chef::Config.cookbook_path[0]}/blah\n")
315
324
  /cookbooks/blah/
@@ -323,8 +332,10 @@ EOM
323
332
  end
324
333
 
325
334
  context 'when there is a cookbook in cookbooks1 and a cookbook in cookbooks2 with the same name' do
326
- file 'cookbooks/blah/metadata.json', {}
327
- file 'cookbooks2/blah/metadata.rb', ''
335
+ before do
336
+ file 'cookbooks/blah/metadata.json', {}
337
+ file 'cookbooks2/blah/metadata.rb', ''
338
+ end
328
339
  it 'knife list -Rfp cookbooks shows files in the first cookbook and not the second' do
329
340
  knife('list --local -Rfp /cookbooks').should_succeed(<<EOM, :stderr => "WARN: Child with name 'blah' found in multiple directories: #{Chef::Config.cookbook_path[0]}/blah and #{Chef::Config.cookbook_path[1]}/blah\n")
330
341
  /cookbooks/blah/
@@ -338,8 +349,10 @@ EOM
338
349
  end
339
350
 
340
351
  context 'when there is a file in data_bags1 and a directory in data_bags2 with the same name' do
341
- file 'data_bags/blah', ''
342
- file 'data_bags2/blah/item.json', ''
352
+ before do
353
+ file 'data_bags/blah', ''
354
+ file 'data_bags2/blah/item.json', ''
355
+ end
343
356
  it 'knife list -Rfp data_bags shows files in blah' do
344
357
  knife('list --local -Rfp /data_bags').should_succeed <<EOM
345
358
  /data_bags/bag/
@@ -353,8 +366,10 @@ EOM
353
366
  end
354
367
 
355
368
  context 'when there is a data bag in data_bags1 and a data bag in data_bags2 with the same name' do
356
- file 'data_bags/blah/item1.json', ''
357
- file 'data_bags2/blah/item2.json', ''
369
+ before do
370
+ file 'data_bags/blah/item1.json', ''
371
+ file 'data_bags2/blah/item2.json', ''
372
+ end
358
373
  it 'knife list -Rfp data_bags shows only items in data_bags1' do
359
374
  knife('list --local -Rfp /data_bags').should_succeed(<<EOM, :stderr => "WARN: Child with name 'blah' found in multiple directories: #{Chef::Config.data_bag_path[0]}/blah and #{Chef::Config.data_bag_path[1]}/blah\n")
360
375
  /data_bags/bag/
@@ -368,62 +383,74 @@ EOM
368
383
  end
369
384
 
370
385
  context 'when there is a directory in environments1 and file in environments2 with the same name' do
371
- directory 'environments/blah.json'
372
- file 'environments2/blah.json', {}
386
+ before do
387
+ directory 'environments/blah.json'
388
+ file 'environments2/blah.json', {}
389
+ end
373
390
  it 'knife show /environments/blah.json succeeds' do
374
391
  knife('show --local /environments/blah.json').should_succeed <<EOM
375
392
  /environments/blah.json:
376
393
  {
394
+
377
395
  }
378
396
  EOM
379
397
  end
380
398
  end
381
399
 
382
400
  context 'when there is a directory in nodes1 and file in nodes2 with the same name' do
383
- directory 'nodes/blah.json'
384
- file 'nodes2/blah.json', {}
401
+ before do
402
+ directory 'nodes/blah.json'
403
+ file 'nodes2/blah.json', {}
404
+ end
385
405
  it 'knife show /nodes/blah.json succeeds' do
386
406
  knife('show --local /nodes/blah.json').should_succeed <<EOM
387
407
  /nodes/blah.json:
388
408
  {
409
+
389
410
  }
390
411
  EOM
391
412
  end
392
413
  end
393
414
 
394
415
  context 'when there is a directory in roles1 and file in roles2 with the same name' do
395
- directory 'roles/blah.json'
396
- file 'roles2/blah.json', {}
416
+ before do
417
+ directory 'roles/blah.json'
418
+ file 'roles2/blah.json', {}
419
+ end
397
420
  it 'knife show /roles/blah.json succeeds' do
398
421
  knife('show --local /roles/blah.json').should_succeed <<EOM
399
422
  /roles/blah.json:
400
423
  {
424
+
401
425
  }
402
426
  EOM
403
427
  end
404
428
  end
405
429
 
406
430
  context 'when there is a directory in users1 and file in users2 with the same name' do
407
- directory 'users/blah.json'
408
- file 'users2/blah.json', {}
431
+ before do
432
+ directory 'users/blah.json'
433
+ file 'users2/blah.json', {}
434
+ end
409
435
  it 'knife show /users/blah.json succeeds' do
410
436
  knife('show --local /users/blah.json').should_succeed <<EOM
411
437
  /users/blah.json:
412
438
  {
439
+
413
440
  }
414
441
  EOM
415
442
  end
416
443
  end
417
444
 
418
445
  context 'when cwd is at the top level' do
419
- cwd '.'
446
+ before { cwd '.' }
420
447
  it 'knife list --local -Rfp fails' do
421
448
  knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
422
449
  end
423
450
  end
424
451
 
425
452
  context 'when cwd is inside the data_bags directory' do
426
- cwd 'data_bags'
453
+ before { cwd 'data_bags' }
427
454
  it 'knife list --local -Rfp lists data bags' do
428
455
  knife('list --local -Rfp').should_succeed <<EOM
429
456
  bag/
@@ -435,7 +462,7 @@ EOM
435
462
  end
436
463
 
437
464
  context 'when cwd is inside chef_repo2' do
438
- cwd 'chef_repo2'
465
+ before { cwd 'chef_repo2' }
439
466
  it 'knife list --local -Rfp lists everything' do
440
467
  knife('list --local -Rfp').should_succeed <<EOM
441
468
  clients/
@@ -468,7 +495,7 @@ EOM
468
495
  end
469
496
 
470
497
  context 'when cwd is inside data_bags2' do
471
- cwd 'data_bags2'
498
+ before { cwd 'data_bags2' }
472
499
  it 'knife list --local -Rfp lists data bags' do
473
500
  knife('list --local -Rfp').should_succeed <<EOM
474
501
  bag/
@@ -492,7 +519,7 @@ EOM
492
519
  end
493
520
 
494
521
  context 'when cwd is at the top level' do
495
- cwd '.'
522
+ before { cwd '.' }
496
523
  it 'knife list --local -Rfp lists everything' do
497
524
  knife('list --local -Rfp').should_succeed <<EOM
498
525
  clients/
@@ -525,7 +552,7 @@ EOM
525
552
  end
526
553
 
527
554
  context 'when cwd is inside the data_bags directory' do
528
- cwd 'data_bags'
555
+ before { cwd 'data_bags' }
529
556
  it 'knife list --local -Rfp lists data bags' do
530
557
  knife('list --local -Rfp').should_succeed <<EOM
531
558
  bag/
@@ -537,7 +564,7 @@ EOM
537
564
  end
538
565
 
539
566
  context 'when cwd is inside chef_repo2' do
540
- cwd 'chef_repo2'
567
+ before { cwd 'chef_repo2' }
541
568
  it 'knife list --local -Rfp lists everything' do
542
569
  knife('list --local -Rfp').should_succeed <<EOM
543
570
  clients/
@@ -570,7 +597,7 @@ EOM
570
597
  end
571
598
 
572
599
  context 'when cwd is inside chef_repo2/data_bags' do
573
- cwd 'chef_repo2/data_bags'
600
+ before { cwd 'chef_repo2/data_bags' }
574
601
  it 'knife list --local -Rfp lists data bags' do
575
602
  knife('list --local -Rfp').should_succeed <<EOM
576
603
  bag/
@@ -592,21 +619,21 @@ EOM
592
619
  end
593
620
 
594
621
  context 'when cwd is at the top level' do
595
- cwd '.'
622
+ before { cwd '.' }
596
623
  it 'knife list --local -Rfp fails' do
597
624
  knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
598
625
  end
599
626
  end
600
627
 
601
628
  context 'when cwd is inside the data_bags directory' do
602
- cwd 'data_bags'
629
+ before { cwd 'data_bags' }
603
630
  it 'knife list --local -Rfp fails' do
604
631
  knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
605
632
  end
606
633
  end
607
634
 
608
635
  context 'when cwd is inside chef_repo2' do
609
- cwd 'chef_repo2'
636
+ before { cwd 'chef_repo2' }
610
637
  it 'knife list --local -Rfp lists everything' do
611
638
  knife('list --local -Rfp').should_succeed <<EOM
612
639
  clients/
@@ -630,7 +657,7 @@ EOM
630
657
  end
631
658
 
632
659
  context 'when cwd is inside chef_repo2/data_bags' do
633
- cwd 'chef_repo2/data_bags'
660
+ before { cwd 'chef_repo2/data_bags' }
634
661
  it 'knife list --local -Rfp lists data bags' do
635
662
  knife('list --local -Rfp').should_succeed <<EOM
636
663
  bag3/
@@ -653,7 +680,7 @@ EOM
653
680
  end
654
681
 
655
682
  context 'when cwd is at the top level' do
656
- cwd '.'
683
+ before { cwd '.' }
657
684
  it 'knife list --local -Rfp lists everything' do
658
685
  knife('list --local -Rfp').should_succeed <<EOM
659
686
  clients/
@@ -686,7 +713,7 @@ EOM
686
713
  end
687
714
 
688
715
  context 'when cwd is inside the data_bags directory' do
689
- cwd 'data_bags'
716
+ before { cwd 'data_bags' }
690
717
  it 'knife list --local -Rfp lists data bags' do
691
718
  knife('list --local -Rfp').should_succeed <<EOM
692
719
  bag/
@@ -698,7 +725,7 @@ EOM
698
725
  end
699
726
 
700
727
  context 'when cwd is inside chef_repo2' do
701
- cwd 'chef_repo2'
728
+ before { cwd 'chef_repo2' }
702
729
  it 'knife list --local -Rfp lists everything' do
703
730
  knife('list --local -Rfp').should_succeed <<EOM
704
731
  clients/
@@ -731,7 +758,7 @@ EOM
731
758
  end
732
759
 
733
760
  context 'when cwd is inside chef_repo2/data_bags' do
734
- cwd 'chef_repo2/data_bags'
761
+ before { cwd 'chef_repo2/data_bags' }
735
762
  it 'knife list --local -Rfp lists data bags' do
736
763
  knife('list --local -Rfp').should_succeed <<EOM
737
764
  bag/
@@ -753,14 +780,14 @@ EOM
753
780
  end
754
781
 
755
782
  context 'when cwd is at the top level' do
756
- cwd '.'
783
+ before { cwd '.' }
757
784
  it 'knife list --local -Rfp fails' do
758
785
  knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
759
786
  end
760
787
  end
761
788
 
762
789
  context 'when cwd is inside the data_bags directory' do
763
- cwd 'data_bags'
790
+ before { cwd 'data_bags' }
764
791
  it 'knife list --local -Rfp lists data bags' do
765
792
  knife('list --local -Rfp').should_succeed <<EOM
766
793
  bag/
@@ -770,7 +797,7 @@ EOM
770
797
  end
771
798
 
772
799
  context 'when cwd is inside chef_repo2' do
773
- cwd 'chef_repo2'
800
+ before { cwd 'chef_repo2' }
774
801
  it 'knife list --local -Rfp lists everything' do
775
802
  knife('list --local -Rfp').should_succeed <<EOM
776
803
  clients/
@@ -794,7 +821,7 @@ EOM
794
821
  end
795
822
 
796
823
  context 'when cwd is inside chef_repo2/data_bags' do
797
- cwd 'chef_repo2/data_bags'
824
+ before { cwd 'chef_repo2/data_bags' }
798
825
  it 'knife list --local -Rfp fails' do
799
826
  knife('list --local -Rfp').should_fail("ERROR: Attempt to use relative path '' when current directory is outside the repository path\n")
800
827
  end
@@ -828,7 +855,7 @@ EOM
828
855
  end
829
856
 
830
857
  context 'when cwd is inside the data_bags directory' do
831
- cwd 'data_bags'
858
+ before { cwd 'data_bags' }
832
859
  it 'knife list --local -Rfp lists data bags' do
833
860
  knife('list --local -Rfp').should_succeed <<EOM
834
861
  bag/