berkshelf 7.0.6 → 7.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +7 -7
  3. data/Rakefile +2 -2
  4. data/berkshelf.gemspec +9 -10
  5. data/bin/berks +5 -0
  6. data/lib/berkshelf.rb +2 -2
  7. data/lib/berkshelf/api_client/chef_server_connection.rb +3 -2
  8. data/lib/berkshelf/api_client/connection.rb +1 -1
  9. data/lib/berkshelf/berksfile.rb +47 -41
  10. data/lib/berkshelf/cached_cookbook.rb +6 -4
  11. data/lib/berkshelf/chef_config_compat.rb +1 -0
  12. data/lib/berkshelf/chef_repo_universe.rb +6 -4
  13. data/lib/berkshelf/cli.rb +12 -7
  14. data/lib/berkshelf/commands/shelf.rb +1 -1
  15. data/lib/berkshelf/community_rest.rb +4 -4
  16. data/lib/berkshelf/config.rb +1 -1
  17. data/lib/berkshelf/core_ext.rb +1 -1
  18. data/lib/berkshelf/core_ext/file_utils.rb +2 -2
  19. data/lib/berkshelf/dependency.rb +1 -1
  20. data/lib/berkshelf/downloader.rb +10 -3
  21. data/lib/berkshelf/errors.rb +2 -2
  22. data/lib/berkshelf/formatters/human.rb +1 -1
  23. data/lib/berkshelf/formatters/json.rb +4 -4
  24. data/lib/berkshelf/installer.rb +1 -1
  25. data/lib/berkshelf/location.rb +3 -3
  26. data/lib/berkshelf/lockfile.rb +14 -14
  27. data/lib/berkshelf/logger.rb +4 -2
  28. data/lib/berkshelf/mixin/git.rb +1 -1
  29. data/lib/berkshelf/packager.rb +2 -2
  30. data/lib/berkshelf/resolver.rb +1 -1
  31. data/lib/berkshelf/ridley_compat.rb +1 -1
  32. data/lib/berkshelf/shell.rb +1 -0
  33. data/lib/berkshelf/source.rb +6 -5
  34. data/lib/berkshelf/ssl_policies.rb +1 -3
  35. data/lib/berkshelf/thor.rb +1 -1
  36. data/lib/berkshelf/thor_ext.rb +1 -1
  37. data/lib/berkshelf/uploader.rb +11 -9
  38. data/lib/berkshelf/version.rb +1 -1
  39. data/lib/berkshelf/visualizer.rb +1 -1
  40. data/spec/config/knife.rb +1 -1
  41. data/spec/support/chef_server.rb +2 -2
  42. data/spec/support/git.rb +18 -18
  43. data/spec/support/path_helpers.rb +4 -4
  44. data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/attributes/default.rb +0 -0
  45. data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/files/default/file.h +0 -0
  46. data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/metadata.rb +2 -0
  47. data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/recipes/default.rb +0 -0
  48. data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/templates/default/template.erb +0 -0
  49. data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/attributes/default.rb +0 -0
  50. data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/files/default/file.h +0 -0
  51. data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/metadata.rb +3 -0
  52. data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/recipes/default.rb +0 -0
  53. data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/templates/default/template.erb +0 -0
  54. data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/attributes/default.rb +0 -0
  55. data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/files/default/file.h +0 -0
  56. data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/metadata.rb +3 -0
  57. data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/recipes/default.rb +0 -0
  58. data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/templates/default/template.erb +0 -0
  59. data/spec/unit/berkshelf/berksfile_spec.rb +7 -7
  60. data/spec/unit/berkshelf/cli_spec.rb +1 -2
  61. data/spec/unit/berkshelf/community_rest_spec.rb +1 -1
  62. data/spec/unit/berkshelf/core_ext/file_utils_spec.rb +2 -2
  63. data/spec/unit/berkshelf/dependency_spec.rb +5 -5
  64. data/spec/unit/berkshelf/downloader_spec.rb +29 -8
  65. data/spec/unit/berkshelf/locations/base_spec.rb +1 -2
  66. data/spec/unit/berkshelf/locations/path_spec.rb +1 -2
  67. data/spec/unit/berkshelf/lockfile_spec.rb +9 -18
  68. data/spec/unit/berkshelf/ridley_compat_spec.rb +1 -1
  69. data/spec/unit/berkshelf/source_spec.rb +8 -7
  70. data/spec/unit/berkshelf/ssl_policies_spec.rb +3 -5
  71. data/spec/unit/berkshelf/uploader_spec.rb +6 -10
  72. metadata +49 -188
  73. data/.github/lock.yml +0 -1
  74. data/.gitignore +0 -30
  75. data/.rubocop.yml +0 -12
  76. data/.travis.yml +0 -73
  77. data/CHANGELOG.legacy.md +0 -307
  78. data/CHANGELOG.md +0 -1582
  79. data/CONTRIBUTING.md +0 -68
  80. data/Gemfile.lock +0 -301
  81. data/PLUGINS.md +0 -25
  82. data/README.md +0 -72
  83. data/Thorfile +0 -61
  84. data/appveyor.yml +0 -31
  85. data/docs/berkshelf_for_newcomers.md +0 -64
  86. data/features/artifactory.feature +0 -70
  87. data/features/berksfile.feature +0 -46
  88. data/features/commands/apply.feature +0 -41
  89. data/features/commands/contingent.feature +0 -47
  90. data/features/commands/info.feature +0 -141
  91. data/features/commands/install.feature +0 -646
  92. data/features/commands/list.feature +0 -78
  93. data/features/commands/outdated.feature +0 -127
  94. data/features/commands/package.feature +0 -17
  95. data/features/commands/search.feature +0 -17
  96. data/features/commands/shelf/list.feature +0 -32
  97. data/features/commands/shelf/show.feature +0 -113
  98. data/features/commands/shelf/uninstall.feature +0 -96
  99. data/features/commands/show.feature +0 -83
  100. data/features/commands/update.feature +0 -142
  101. data/features/commands/upload.feature +0 -499
  102. data/features/commands/vendor.feature +0 -154
  103. data/features/commands/verify.feature +0 -29
  104. data/features/commands/viz.feature +0 -66
  105. data/features/community_site.feature +0 -37
  106. data/features/help.feature +0 -11
  107. data/features/json_formatter.feature +0 -158
  108. data/features/lifecycle.feature +0 -378
  109. data/features/lockfile.feature +0 -378
  110. data/features/step_definitions/berksfile_steps.rb +0 -54
  111. data/features/step_definitions/chef/config_steps.rb +0 -12
  112. data/features/step_definitions/chef_server_steps.rb +0 -60
  113. data/features/step_definitions/cli_steps.rb +0 -18
  114. data/features/step_definitions/config_steps.rb +0 -46
  115. data/features/step_definitions/environment_steps.rb +0 -11
  116. data/features/step_definitions/filesystem_steps.rb +0 -286
  117. data/features/step_definitions/gem_steps.rb +0 -13
  118. data/features/step_definitions/json_steps.rb +0 -29
  119. data/features/step_definitions/utility_steps.rb +0 -11
  120. data/features/support/aruba.rb +0 -12
  121. data/features/support/env.rb +0 -77
  122. data/spec/fixtures/cookbooks/example_cookbook/.gitignore +0 -2
  123. data/spec/fixtures/cookbooks/example_cookbook/.kitchen.yml +0 -26
@@ -1,646 +0,0 @@
1
- Feature: berks install
2
- Background:
3
- * the Chef Server is empty
4
- * the cookbook store is empty
5
-
6
- Scenario: installing the version that best satisfies our demand
7
- Given I have a Berksfile pointing at the local Berkshelf API with:
8
- """
9
- cookbook 'berkshelf'
10
- """
11
- And the Chef Server has cookbooks:
12
- | berkshelf | 1.0.0 |
13
- | berkshelf | 2.0.0 |
14
- When I successfully run `berks install`
15
- Then the output should contain:
16
- """
17
- Installing berkshelf (2.0.0)
18
- """
19
- And the cookbook store should have the cookbooks:
20
- | berkshelf | 2.0.0 |
21
-
22
- Scenario: installing an explicit version demand
23
- Given I have a Berksfile pointing at the local Berkshelf API with:
24
- """
25
- cookbook 'berkshelf', '1.0.0'
26
- """
27
- And the Chef Server has cookbooks:
28
- | berkshelf | 1.0.0 |
29
- | berkshelf | 2.0.0 |
30
- When I successfully run `berks install`
31
- Then the output should contain:
32
- """
33
- Installing berkshelf (1.0.0)
34
- """
35
- And the cookbook store should have the cookbooks:
36
- | berkshelf | 1.0.0 |
37
-
38
- Scenario: installing demands from all groups
39
- Given I have a Berksfile pointing at the local Berkshelf API with:
40
- """
41
- group :one do
42
- cookbook 'ruby'
43
- end
44
-
45
- group :two do
46
- cookbook 'elixir'
47
- end
48
- """
49
- And the Chef Server has cookbooks:
50
- | ruby | 1.0.0 |
51
- | elixir | 1.0.0 |
52
- When I successfully run `berks install`
53
- Then the output should contain "Installing elixir (1.0.0)"
54
- And the output should contain "Installing ruby (1.0.0)"
55
- And the cookbook store should have the cookbooks:
56
- | ruby | 1.0.0 |
57
- | elixir | 1.0.0 |
58
-
59
- Scenario: installing a demand that has already been installed
60
- Given I have a Berksfile pointing at the local Berkshelf API with:
61
- """
62
- cookbook 'berkshelf-cookbook-fixture',
63
- github: 'RiotGames/berkshelf-cookbook-fixture',
64
- branch: 'deps'
65
- """
66
- And the cookbook store contains a cookbook "berkshelf" "1.0.0" with dependencies:
67
- | hostsfile | = 1.0.1 |
68
- And the cookbook store has the cookbooks:
69
- | hostsfile | 1.0.1 |
70
- When I successfully run `berks install`
71
- Then the output should contain:
72
- """
73
- Using hostsfile (1.0.1)
74
- """
75
-
76
- Scenario: installing a single groups of demands with the --only flag
77
- Given the cookbook store has the cookbooks:
78
- | takeme | 1.0.0 |
79
- | notme | 1.0.0 |
80
- And I have a Berksfile pointing at the local Berkshelf API with:
81
- """
82
- cookbook 'takeme', group: :take_me
83
- cookbook 'notme', group: :not_me
84
- """
85
- When I successfully run `berks install --only take_me`
86
- Then the output should contain "Using takeme (1.0.0)"
87
- Then the output should not contain "Using notme (1.0.0)"
88
-
89
- Scenario: installing multiple groups of demands with the --only flag
90
- Given the cookbook store has the cookbooks:
91
- | takeme | 1.0.0 |
92
- | notme | 1.0.0 |
93
- And I have a Berksfile pointing at the local Berkshelf API with:
94
- """
95
- cookbook 'takeme', group: :take_me
96
- cookbook 'notme', group: :not_me
97
- """
98
- When I successfully run `berks install --only take_me not_me`
99
- Then the output should contain "Using takeme (1.0.0)"
100
- Then the output should contain "Using notme (1.0.0)"
101
-
102
- Scenario: skipping a single group to install with the --except flag
103
- Given the cookbook store has the cookbooks:
104
- | takeme | 1.0.0 |
105
- | notme | 1.0.0 |
106
- And I have a Berksfile pointing at the local Berkshelf API with:
107
- """
108
- cookbook 'takeme', group: :take_me
109
- cookbook 'notme', group: :not_me
110
- """
111
- When I successfully run `berks install --except not_me`
112
- Then the output should contain "Using takeme (1.0.0)"
113
- Then the output should not contain "Using notme (1.0.0)"
114
-
115
- Scenario: skipping multiple groups to install with the --except flag
116
- Given the cookbook store has the cookbooks:
117
- | takeme | 1.0.0 |
118
- | notme | 1.0.0 |
119
- And I have a Berksfile pointing at the local Berkshelf API with:
120
- """
121
- cookbook 'takeme', group: :take_me
122
- cookbook 'notme', group: :not_me
123
- """
124
- When I successfully run `berks install --except take_me not_me`
125
- Then the output should not contain "Using takeme (1.0.0)"
126
- Then the output should not contain "Using notme (1.0.0)"
127
-
128
- Scenario: installing a demand from a path location
129
- Given I have a Berksfile pointing at the local Berkshelf API with:
130
- """
131
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
132
- """
133
- When I successfully run `berks install`
134
- Then the output should contain:
135
- """
136
- Using example_cookbook (0.5.0) from source at ../../spec/fixtures/cookbooks/example_cookbook-0.5.0
137
- """
138
-
139
- Scenario: installing a demand from a path location with a conflicting constraint
140
- Given I have a Berksfile pointing at the local Berkshelf API with:
141
- """
142
- cookbook 'example_cookbook', '~> 1.0.0', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
143
- """
144
- When I run `berks install`
145
- Then the output should contain:
146
- """
147
- The cookbook downloaded for example_cookbook (~> 1.0.0) did not satisfy the constraint.
148
- """
149
-
150
- Scenario: installing a demand from a path location that also exists in other locations with conflicting dependencies
151
- Given the Chef Server has cookbooks:
152
- | example_cookbook | 0.5.0 | missing_cookbook >= 1.0.0 |
153
- And I have a Berksfile pointing at the local Berkshelf API with:
154
- """
155
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
156
- """
157
- When I successfully run `berks install`
158
- Then the output should contain:
159
- """
160
- Using example_cookbook (0.5.0) from source at ../../spec/fixtures/cookbooks/example_cookbook-0.5.0
161
- """
162
-
163
- Scenario: installing a demand from a path location locks the graph to that version
164
- Given the Chef Server has cookbooks:
165
- | other_cookbook | 1.0.0 | example_cookbook ~> 1.0.0 |
166
- And I have a Berksfile pointing at the local Berkshelf API with:
167
- """
168
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
169
- cookbook 'other_cookbook'
170
- """
171
- When I run `berks install`
172
- Then the output should contain:
173
- """
174
- Unable to find a solution for demands: example_cookbook (0.5.0), other_cookbook (>= 0.0.0)
175
- """
176
-
177
- Scenario: installing a Berksfile from a remote directory that contains a path location
178
- Given I have a Berksfile at "subdirectory" pointing at the local Berkshelf API with:
179
- """
180
- cookbook 'example_cookbook', path: '../../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
181
- """
182
- When I successfully run `berks install -b subdirectory/Berksfile`
183
- Then the output should contain:
184
- """
185
- Using example_cookbook (0.5.0) from source at ../../../spec/fixtures/cookbooks/example_cookbook-0.5.0
186
- """
187
-
188
- Scenario: installing a demand from a Git location
189
- Given I have a Berksfile pointing at the local Berkshelf API with:
190
- """
191
- cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git"
192
- """
193
- When I successfully run `berks install`
194
- Then the cookbook store should have the git cookbooks:
195
- | berkshelf-cookbook-fixture | 1.0.0 | a97b9447cbd41a5fe58eee2026e48ccb503bd3bc |
196
- And the output should contain:
197
- """
198
- Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at master)
199
- Fetching cookbook index from http://127.0.0.1:26310...
200
- Using berkshelf-cookbook-fixture (1.0.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at master)
201
- """
202
-
203
- Scenario: installing a demand from a Git location that has already been installed
204
- Given I have a Berksfile pointing at the local Berkshelf API with:
205
- """
206
- cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git"
207
- """
208
- And the cookbook store has the git cookbooks:
209
- | berkshelf-cookbook-fixture | 1.0.0 | a97b9447cbd41a5fe58eee2026e48ccb503bd3bc |
210
- When I successfully run `berks install`
211
- Then the output should contain:
212
- """
213
- Using berkshelf-cookbook-fixture (1.0.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at master)
214
- """
215
-
216
- Scenario: installing a Berksfile that contains a Git location with a rel
217
- Given I have a Berksfile pointing at the local Berkshelf API with:
218
- """
219
- cookbook 'berkshelf-cookbook-fixture',
220
- github: 'RiotGames/berkshelf-cookbook-fixture',
221
- branch: 'rel',
222
- rel: 'cookbooks/berkshelf-cookbook-fixture'
223
- """
224
- When I successfully run `berks install`
225
- Then the cookbook store should have the git cookbooks:
226
- | berkshelf-cookbook-fixture | 1.0.0 | 93f5768b7d14df45e10d16c8bf6fe98ba3ff809a |
227
- And the output should contain:
228
- """
229
- Fetching 'berkshelf-cookbook-fixture' from https://github.com/RiotGames/berkshelf-cookbook-fixture.git (at rel/cookbooks/berkshelf-cookbook-fixture)
230
- Fetching cookbook index from http://127.0.0.1:26310...
231
- Using berkshelf-cookbook-fixture (1.0.0) from https://github.com/RiotGames/berkshelf-cookbook-fixture.git (at rel/cookbooks/berkshelf-cookbook-fixture)
232
- """
233
-
234
- Scenario: installing a Berksfile that contains a Git location
235
- Given I have a Berksfile pointing at the local Berkshelf API with:
236
- """
237
- cookbook 'berkshelf-cookbook-fixture',
238
- git: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git',
239
- tag: 'v0.2.0'
240
- """
241
- When I successfully run `berks install`
242
- Then the cookbook store should have the git cookbooks:
243
- | berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
244
- And the git cookbook "berkshelf-cookbook-fixture-70a527e17d91f01f031204562460ad1c17f972ee" should not have the following directories:
245
- | .git |
246
-
247
- Scenario: installing a Berksfile that contains a Git location with a tag
248
- Given I have a Berksfile pointing at the local Berkshelf API with:
249
- """
250
- cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git", tag: "v0.2.0"
251
- """
252
- When I successfully run `berks install`
253
- Then the cookbook store should have the git cookbooks:
254
- | berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
255
- And the output should contain:
256
- """
257
- Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
258
- Fetching cookbook index from http://127.0.0.1:26310...
259
- Using berkshelf-cookbook-fixture (0.2.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
260
- """
261
-
262
- Scenario: installing a Berksfile that contains a Git location with a ref
263
- Given I have a Berksfile pointing at the local Berkshelf API with:
264
- """
265
- cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git", ref: "70a527e17d91f01f031204562460ad1c17f972ee"
266
- """
267
- When I successfully run `berks install`
268
- Then the cookbook store should have the git cookbooks:
269
- | berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
270
- And the output should contain:
271
- """
272
- Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at 70a527e)
273
- Fetching cookbook index from http://127.0.0.1:26310...
274
- Using berkshelf-cookbook-fixture (0.2.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at 70a527e)
275
- """
276
-
277
- Scenario: installing a Berksfile that contains a Git location with an abbreviated ref
278
- Given I have a Berksfile pointing at the local Berkshelf API with:
279
- """
280
- cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git", ref: "70a527e"
281
- """
282
- When I successfully run `berks install`
283
- Then the cookbook store should have the git cookbooks:
284
- | berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
285
- And the output should contain:
286
- """
287
- Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at 70a527e)
288
- Fetching cookbook index from http://127.0.0.1:26310...
289
- Using berkshelf-cookbook-fixture (0.2.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at 70a527e)
290
- """
291
-
292
- Scenario: installing a Berksfile that contains a GitHub location
293
- Given I have a Berksfile pointing at the local Berkshelf API with:
294
- """
295
- cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0"
296
- """
297
- When I successfully run `berks install`
298
- Then the cookbook store should have the git cookbooks:
299
- | berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
300
- And the output should contain:
301
- """
302
- Fetching 'berkshelf-cookbook-fixture' from https://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
303
- Fetching cookbook index from http://127.0.0.1:26310...
304
- Using berkshelf-cookbook-fixture (0.2.0) from https://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
305
- """
306
-
307
- Scenario: installing a Berksfile that contains a GitHub location
308
- Given I have a Berksfile pointing at the local Berkshelf API with:
309
- """
310
- cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0"
311
- """
312
- When I successfully run `berks install`
313
- Then the cookbook store should have the git cookbooks:
314
- | berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
315
- And the output should contain:
316
- """
317
- Fetching 'berkshelf-cookbook-fixture' from https://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
318
- Fetching cookbook index from http://127.0.0.1:26310...
319
- Using berkshelf-cookbook-fixture (0.2.0) from https://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
320
- """
321
-
322
- Scenario: running install when current project is a cookbook and the 'metadata' is specified
323
- Given a cookbook named "sparkle_motion"
324
- And I cd to "sparkle_motion"
325
- And I have a Berksfile pointing at the local Berkshelf API with:
326
- """
327
- metadata
328
- """
329
- When I successfully run `berks install`
330
- Then the output should contain:
331
- """
332
- Using sparkle_motion (0.0.0)
333
- """
334
-
335
- Scenario: running install when current project is a cookbook and the 'metadata' is specified with a path
336
- Given a cookbook named "fake"
337
- And I have a Berksfile pointing at the local Berkshelf API with:
338
- """
339
- metadata path: './fake'
340
- """
341
- When I successfully run `berks install`
342
- Then the output should contain:
343
- """
344
- Using fake (0.0.0)
345
- """
346
-
347
- Scenario: running install when a Berksfile.lock is present
348
- Given the Chef Server has cookbooks:
349
- | bacon | 0.1.0 |
350
- | bacon | 0.2.0 |
351
- | bacon | 1.0.0 |
352
- And I have a Berksfile pointing at the local Berkshelf API with:
353
- """
354
- cookbook 'bacon', '~> 0.1'
355
- """
356
- And I write to "Berksfile.lock" with:
357
- """
358
- DEPENDENCIES
359
- bacon (~> 0.1)
360
-
361
- GRAPH
362
- bacon (0.2.0)
363
- """
364
- When I successfully run `berks install`
365
- Then the output should contain:
366
- """
367
- Installing bacon (0.2.0)
368
- """
369
-
370
- Scenario: running install with no Berksfile or Berksfile.lock
371
- When I run `berks install`
372
- Then the output should contain:
373
- """
374
- No Berksfile or Berksfile.lock found at '
375
- """
376
- And the exit status should be "BerksfileNotFound"
377
-
378
- Scenario: running install when the Cookbook is not found on the remote site
379
- Given I have a Berksfile pointing at the local Berkshelf API with:
380
- """
381
- cookbook 'doesntexist'
382
- cookbook 'other-failure'
383
- """
384
- And I run `berks install`
385
- Then the output should contain:
386
- """
387
- Unable to find a solution for demands: doesntexist (>= 0.0.0), other-failure (>= 0.0.0)
388
- """
389
- And the exit status should be "NoSolutionError"
390
-
391
- Scenario: running install when the Cookbook from Berksfile.lock is not found in the sources
392
- Given I have a Berksfile pointing at the local Berkshelf API with:
393
- """
394
- cookbook 'foo'
395
- """
396
- And I write to "Berksfile.lock" with:
397
- """
398
- DEPENDENCIES
399
- foo
400
-
401
- GRAPH
402
- foo (0.1.0)
403
- """
404
- When I run `berks install`
405
- Then the output should contain:
406
- """
407
- Cookbook 'foo' (0.1.0) not found in any of the sources! This can happen if the remote cookbook has been deleted or if the sources inside the Berksfile have changed. Please run `berks update foo` to resolve to a valid version.
408
- """
409
-
410
- Scenario: running install when the version from Berksfile.lock is not found in the sources
411
- Given the Chef Server has cookbooks:
412
- | foo | 0.3.0 |
413
- | foo | 0.2.0 |
414
- And I have a Berksfile pointing at the local Berkshelf API with:
415
- """
416
- cookbook 'foo'
417
- """
418
- And I write to "Berksfile.lock" with:
419
- """
420
- DEPENDENCIES
421
- foo
422
-
423
- GRAPH
424
- foo (0.1.0)
425
- """
426
- When I run `berks install`
427
- Then the output should contain:
428
- """
429
- Cookbook 'foo' (0.1.0) not found in any of the sources! This can happen if the remote cookbook has been deleted or if the sources inside the Berksfile have changed. Please run `berks update foo` to resolve to a valid version.
430
- """
431
-
432
- Scenario: installing when there are sources with duplicate names defined in the same group
433
- Given I have a Berksfile pointing at the local Berkshelf API with:
434
- """
435
- cookbook 'berkshelf-cookbook-fixture'
436
- cookbook 'berkshelf-cookbook-fixture'
437
- """
438
- When I run `berks install`
439
- Then the output should contain:
440
- """
441
- Your Berksfile contains multiple entries named 'berkshelf-cookbook-fixture'. Please remove duplicate dependencies, or put them in different groups.
442
- """
443
- And the exit status should be "DuplicateDependencyDefined"
444
-
445
- Scenario: when a Git demand points to a branch that does not satisfy the version constraint
446
- Given I have a Berksfile pointing at the local Berkshelf API with:
447
- """
448
- cookbook "berkshelf-cookbook-fixture", "1.0.0", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git", tag: "v0.2.0"
449
- """
450
- When I run `berks install`
451
- Then the output should contain:
452
- """
453
- Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
454
- The cookbook downloaded for berkshelf-cookbook-fixture (= 1.0.0) did not satisfy the constraint.
455
- """
456
- And the exit status should be "CookbookValidationFailure"
457
-
458
- Scenario: when a Git demand is defined and a cookbook of the same name and version is already in the cookbook store
459
- Given I have a Berksfile pointing at the local Berkshelf API with:
460
- """
461
- cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git", tag: "v1.0.0"
462
- """
463
- And the cookbook store has the cookbooks:
464
- | berkshelf-cookbook-fixture | 1.0.0 |
465
- When I successfully run `berks install`
466
- Then the output should contain:
467
- """
468
- Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v1.0.0)
469
- Fetching cookbook index from http://127.0.0.1:26310...
470
- Using berkshelf-cookbook-fixture (1.0.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v1.0.0)
471
- """
472
-
473
- Scenario: with a git error during download
474
- Given I have a Berksfile pointing at the local Berkshelf API with:
475
- """
476
- cookbook 'berkshelf-cookbook-fixture', '1.0.0'
477
- cookbook "doesntexist", git: "git://github.com/asdjhfkljashflkjashfakljsf"
478
- """
479
- When I run `berks install`
480
- Then the exit status should be "GitError"
481
-
482
- Scenario: transitive dependencies in metadata
483
- Given the cookbook store contains a cookbook "fake" "1.0.0" with dependencies:
484
- | bacon | >= 0.0.0 |
485
- And I have a Berksfile pointing at the local Berkshelf API with:
486
- """
487
- metadata
488
- """
489
- And I write to "metadata.rb" with:
490
- """
491
- name "myface"
492
- depends 'fake', '1.0.0'
493
- depends 'bacon', '0.2.0'
494
- """
495
- And the Chef Server has cookbooks:
496
- | bacon | 0.1.0 |
497
- | bacon | 0.2.0 |
498
- | bacon | 1.0.0 |
499
- When I successfully run `berks install`
500
- Then the cookbook store should have the cookbooks:
501
- | bacon | 0.2.0 |
502
- Then the output should contain:
503
- """
504
- Installing bacon (0.2.0)
505
- """
506
-
507
- Scenario: transitive dependencies in metadata when cookbooks are downloaded
508
- Given the cookbook store contains a cookbook "fake" "1.0.0" with dependencies:
509
- | bacon | >= 0.0.0 |
510
- And the cookbook store has the cookbooks:
511
- | bacon | 1.0.0 |
512
- | bacon | 0.3.0 |
513
- | bacon | 0.2.0 |
514
- And I have a Berksfile pointing at the local Berkshelf API with:
515
- """
516
- metadata
517
- """
518
- And I write to "metadata.rb" with:
519
- """
520
- name "myface"
521
- depends 'fake', '1.0.0'
522
- depends 'bacon', '0.2.0'
523
- """
524
- When I successfully run `berks install`
525
- Then the output should contain:
526
- """
527
- Using bacon (0.2.0)
528
- """
529
-
530
- Scenario: when asking for the :ruby solver engine without precedence, no error is raised
531
- Given I have a Berksfile pointing at the local Berkshelf API with:
532
- """
533
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
534
- solver :ruby
535
- """
536
- When I successfully run `berks install`
537
- Then the output should contain:
538
- """
539
- Resolving cookbook dependencies...
540
- """
541
-
542
- Scenario: when asking for the :gecode solver engine without precedence, no error is raised
543
- Given I have a Berksfile pointing at the local Berkshelf API with:
544
- """
545
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
546
- solver :gecode
547
- """
548
- When I successfully run `berks install`
549
- Then the output should contain:
550
- """
551
- Resolving cookbook dependencies...
552
- """
553
-
554
- Scenario: when asking for an unknown solver engine without precedence, no error is raised
555
- Given I have a Berksfile pointing at the local Berkshelf API with:
556
- """
557
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
558
- solver :unknown
559
- """
560
- When I successfully run `berks install`
561
- Then the output should contain:
562
- """
563
- Resolving cookbook dependencies...
564
- """
565
-
566
- Scenario: when preferring the :gecode solver engine, no error is raised
567
- Given I have a Berksfile pointing at the local Berkshelf API with:
568
- """
569
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
570
- solver :gecode, :preferred
571
- """
572
- When I successfully run `berks install`
573
- Then the output should contain:
574
- """
575
- Resolving cookbook dependencies...
576
- """
577
-
578
- Scenario: when preferring an unknown solver engine, no error is raised
579
- Given I have a Berksfile pointing at the local Berkshelf API with:
580
- """
581
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
582
- solver :unknown, :preferred
583
- """
584
- When I successfully run `berks install`
585
- Then the output should contain:
586
- """
587
- Resolving cookbook dependencies...
588
- """
589
-
590
- Scenario: when requiring an unknown solver engine, an error is raised
591
- Given I have a Berksfile pointing at the local Berkshelf API with:
592
- """
593
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
594
- solver :unknown, :required
595
- """
596
- When I run `berks install`
597
- Then the output should contain:
598
- """
599
- Engine `unknown` is not supported.
600
- """
601
- And the exit status should be "ArgumentError"
602
-
603
- Scenario: when requiring the :ruby solver engine, no error is raised
604
- Given I have a Berksfile pointing at the local Berkshelf API with:
605
- """
606
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
607
- solver :ruby, :required
608
- """
609
- When I successfully run `berks install`
610
- Then the output should contain:
611
- """
612
- Resolving cookbook dependencies...
613
- """
614
-
615
- Scenario: when requiring the :gecode solver engine, no error is raised
616
- Given I have a Berksfile pointing at the local Berkshelf API with:
617
- """
618
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
619
- solver :gecode, :required
620
- """
621
- When I successfully run `berks install`
622
- Then the output should contain:
623
- """
624
- Resolving cookbook dependencies...
625
- """
626
-
627
- Scenario: when using a chef_repo source
628
- Given I use a fixture named "complex-cookbook-path"
629
- And a file named "Berksfile" with:
630
- """
631
- source chef_repo: '.'
632
-
633
- cookbook 'jenkins-config'
634
- """
635
- When I successfully run `berks install`
636
- Then the output should contain:
637
- """
638
- Installing jenkins (2.0.1) from
639
- """
640
- And the output should contain:
641
- """
642
- Installing jenkins-config (0.1.0) from
643
- """
644
- And the cookbook store should have the cookbooks:
645
- | jenkins | 2.0.1 |
646
- | jenkins-config | 0.1.0 |