berkshelf 2.0.3 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +7 -0
- data/Gemfile +2 -0
- data/berkshelf.gemspec +5 -4
- data/features/berksfile.feature +56 -0
- data/features/install_command.feature +99 -13
- data/features/json_formatter.feature +1 -1
- data/features/lockfile.feature +50 -23
- data/features/step_definitions/filesystem_steps.rb +14 -1
- data/features/step_definitions/json_steps.rb +1 -1
- data/features/update_command.feature +2 -2
- data/features/upload_command.feature +0 -1
- data/lib/berkshelf.rb +1 -15
- data/lib/berkshelf/berksfile.rb +27 -21
- data/lib/berkshelf/cli.rb +2 -3
- data/lib/berkshelf/commands/test_command.rb +4 -2
- data/lib/berkshelf/community_rest.rb +6 -0
- data/lib/berkshelf/cookbook_source.rb +15 -37
- data/lib/berkshelf/core_ext/rbzip2.rb +8 -0
- data/lib/berkshelf/downloader.rb +56 -47
- data/lib/berkshelf/errors.rb +9 -2
- data/lib/berkshelf/formatters/human_readable.rb +10 -3
- data/lib/berkshelf/formatters/json.rb +7 -3
- data/lib/berkshelf/git.rb +2 -1
- data/lib/berkshelf/init_generator.rb +18 -12
- data/lib/berkshelf/location.rb +4 -14
- data/lib/berkshelf/locations/chef_api_location.rb +0 -1
- data/lib/berkshelf/locations/git_location.rb +1 -2
- data/lib/berkshelf/locations/path_location.rb +35 -11
- data/lib/berkshelf/locations/site_location.rb +0 -1
- data/lib/berkshelf/resolver.rb +18 -14
- data/lib/berkshelf/version.rb +1 -1
- data/spec/fixtures/cookbooks/example_cookbook/Berksfile +1 -0
- data/spec/unit/berkshelf/berksfile_spec.rb +30 -2
- data/spec/unit/berkshelf/community_rest_spec.rb +49 -11
- data/spec/unit/berkshelf/cookbook_source_spec.rb +11 -7
- data/spec/unit/berkshelf/downloader_spec.rb +1 -1
- data/spec/unit/berkshelf/location_spec.rb +0 -6
- data/spec/unit/berkshelf/locations/chef_api_location_spec.rb +0 -4
- data/spec/unit/berkshelf/locations/git_location_spec.rb +0 -5
- data/spec/unit/berkshelf/locations/path_location_spec.rb +0 -41
- data/spec/unit/berkshelf_spec.rb +0 -25
- metadata +37 -16
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 2.0.4
|
2
|
+
|
3
|
+
* Fix bug where community cookbooks compressed with bzip2 would not download and install
|
4
|
+
* Fix bug regression in Git caching which was previously fixed in 1.4.4
|
5
|
+
* Fix validation bug where a cookbook would be considered invalid if any spaces were present in the path to the directory containing the cookbook
|
6
|
+
* Fix issues with uploading cookbooks on Windows
|
7
|
+
|
1
8
|
# 2.0.3
|
2
9
|
|
3
10
|
* Fix issue where groups defined in the Berksfile would not be evaluated
|
data/Gemfile
CHANGED
data/berkshelf.gemspec
CHANGED
@@ -32,20 +32,21 @@ Gem::Specification.new do |s|
|
|
32
32
|
|
33
33
|
s.add_dependency 'activesupport', '>= 3.2.0'
|
34
34
|
s.add_dependency 'addressable', '~> 2.3.4'
|
35
|
+
s.add_dependency 'buff-shell_out', '~> 0.1'
|
35
36
|
s.add_dependency 'celluloid', '>= 0.14.0'
|
36
37
|
s.add_dependency 'chozo', '>= 0.6.1'
|
37
38
|
s.add_dependency 'faraday', '>= 0.8.5'
|
38
39
|
s.add_dependency 'hashie', '>= 2.0.2'
|
39
40
|
s.add_dependency 'minitar', '~> 0.5.4'
|
40
41
|
s.add_dependency 'retryable', '~> 1.3.3'
|
41
|
-
s.add_dependency 'ridley', '~> 1.
|
42
|
-
s.add_dependency 'solve', '>= 0.
|
43
|
-
s.add_dependency 'test-kitchen', '>= 1.0.0.alpha7'
|
42
|
+
s.add_dependency 'ridley', '~> 1.2.1'
|
43
|
+
s.add_dependency 'solve', '>= 0.5.0'
|
44
44
|
s.add_dependency 'thor', '~> 0.18.0'
|
45
|
+
s.add_dependency 'rbzip2', '~> 0.2.0'
|
45
46
|
|
46
47
|
s.add_development_dependency 'aruba', '~> 0.5'
|
47
48
|
s.add_development_dependency 'cane', '~> 2.5'
|
48
|
-
s.add_development_dependency 'chef-zero', '~> 1.
|
49
|
+
s.add_development_dependency 'chef-zero', '~> 1.5.0'
|
49
50
|
s.add_development_dependency 'fuubar', '~> 1.1'
|
50
51
|
s.add_development_dependency 'rake', '~> 0.9'
|
51
52
|
s.add_development_dependency 'rspec', '~> 2.13'
|
@@ -0,0 +1,56 @@
|
|
1
|
+
Feature: Evaluating a Berksfile
|
2
|
+
As a user with a Berksfile
|
3
|
+
I want to evaluate things and see nice errors
|
4
|
+
So I can identify my syntax errors and faults
|
5
|
+
|
6
|
+
Scenario: Containing pure Ruby
|
7
|
+
Given I write to "Berksfile" with:
|
8
|
+
"""
|
9
|
+
if ENV['BACON']
|
10
|
+
puts "If you don't got bacon..."
|
11
|
+
else
|
12
|
+
puts "No bacon :'("
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
And the environment variable BACON is "1"
|
16
|
+
When I successfully run `berks install`
|
17
|
+
Then the output should contain:
|
18
|
+
"""
|
19
|
+
If you don't got bacon...
|
20
|
+
"""
|
21
|
+
And the exit status should be 0
|
22
|
+
|
23
|
+
Scenario: Calling valid DSL methods:
|
24
|
+
Given I write to "Berksfile" with:
|
25
|
+
"""
|
26
|
+
site :opscode
|
27
|
+
"""
|
28
|
+
When I successfully run `berks install`
|
29
|
+
And the exit status should be 0
|
30
|
+
|
31
|
+
Scenario: Containing methods I shouldn't be able to call
|
32
|
+
Given I write to "Berksfile" with:
|
33
|
+
"""
|
34
|
+
add_location(:foo)
|
35
|
+
"""
|
36
|
+
When I run `berks install`
|
37
|
+
Then the output should contain:
|
38
|
+
"""
|
39
|
+
An error occurred while reading the Berksfile:
|
40
|
+
|
41
|
+
undefined method `add_location' for
|
42
|
+
"""
|
43
|
+
And the CLI should exit with the status code for error "BerksfileReadError"
|
44
|
+
|
45
|
+
Scenario: Containing Ruby syntax errors
|
46
|
+
Given I write to "Berksfile" with:
|
47
|
+
"""
|
48
|
+
ptus "This is a ruby syntax error"
|
49
|
+
"""
|
50
|
+
When I run `berks install`
|
51
|
+
Then the output should contain:
|
52
|
+
"""
|
53
|
+
An error occurred while reading the Berksfile:
|
54
|
+
|
55
|
+
undefined method `ptus' for
|
56
|
+
"""
|
@@ -70,7 +70,7 @@ Feature: install cookbooks from a Berksfile
|
|
70
70
|
When I successfully run `berks install`
|
71
71
|
Then the output should contain:
|
72
72
|
"""
|
73
|
-
Using example_cookbook (0.5.0) at
|
73
|
+
Using example_cookbook (0.5.0) at '
|
74
74
|
"""
|
75
75
|
And the exit status should be 0
|
76
76
|
|
@@ -80,7 +80,7 @@ Feature: install cookbooks from a Berksfile
|
|
80
80
|
cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git"
|
81
81
|
"""
|
82
82
|
When I successfully run `berks install`
|
83
|
-
Then the cookbook store should have the git
|
83
|
+
Then the cookbook store should have the cookbooks installed by git:
|
84
84
|
| berkshelf-cookbook-fixture | 1.0.0 | a97b9447cbd41a5fe58eee2026e48ccb503bd3bc |
|
85
85
|
And the output should contain:
|
86
86
|
"""
|
@@ -88,13 +88,54 @@ Feature: install cookbooks from a Berksfile
|
|
88
88
|
"""
|
89
89
|
And the exit status should be 0
|
90
90
|
|
91
|
+
Scenario: installing a Berksfile that contains a Git location that has already been downloaded
|
92
|
+
Given I write to "Berksfile" with:
|
93
|
+
"""
|
94
|
+
cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git"
|
95
|
+
"""
|
96
|
+
And the cookbook store has the cookbooks installed by git:
|
97
|
+
| berkshelf-cookbook-fixture | 1.0.0 | a97b9447cbd41a5fe58eee2026e48ccb503bd3bc |
|
98
|
+
And I successfully run `berks install`
|
99
|
+
When I successfully run `berks install`
|
100
|
+
Then the exit status should be 0
|
101
|
+
|
102
|
+
Scenario: installing a Berksfile that contains a Git location with a rel
|
103
|
+
Given I write to "Berksfile" with:
|
104
|
+
"""
|
105
|
+
cookbook "berkshelf-cookbook-fixture", github: 'RiotGames/berkshelf-cookbook-fixture', branch: 'rel', rel: 'cookbooks/berkshelf-cookbook-fixture'
|
106
|
+
"""
|
107
|
+
When I successfully run `berks install`
|
108
|
+
Then the cookbook store should have the cookbooks installed by git:
|
109
|
+
| berkshelf-cookbook-fixture | 1.0.0 | 93f5768b7d14df45e10d16c8bf6fe98ba3ff809a |
|
110
|
+
And the output should contain:
|
111
|
+
"""
|
112
|
+
Installing berkshelf-cookbook-fixture (1.0.0)
|
113
|
+
"""
|
114
|
+
And the exit status should be 0
|
115
|
+
|
116
|
+
Scenario: installing a Berksfile that contains a Git location with a rel that has already been downloaded
|
117
|
+
Given I write to "Berksfile" with:
|
118
|
+
"""
|
119
|
+
site :opscode
|
120
|
+
cookbook 'berkshelf-cookbook-fixture', github: 'RiotGames/berkshelf-cookbook-fixture', branch: 'rel', rel: 'cookbooks/berkshelf-cookbook-fixture'
|
121
|
+
"""
|
122
|
+
And the cookbook store has the cookbooks installed by git:
|
123
|
+
| berkshelf-cookbook-fixture | 1.0.0 | 93f5768b7d14df45e10d16c8bf6fe98ba3ff809a |
|
124
|
+
And I successfully run `berks install`
|
125
|
+
When I run `berks install`
|
126
|
+
Then the output should contain:
|
127
|
+
"""
|
128
|
+
Installing berkshelf-cookbook-fixture (1.0.0)
|
129
|
+
"""
|
130
|
+
And the exit status should be 0
|
131
|
+
|
91
132
|
Scenario: installing a Berksfile that contains a Git location with a tag
|
92
133
|
Given I write to "Berksfile" with:
|
93
134
|
"""
|
94
135
|
cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git", tag: "v0.2.0"
|
95
136
|
"""
|
96
137
|
When I successfully run `berks install`
|
97
|
-
Then the cookbook store should have the git
|
138
|
+
Then the cookbook store should have the cookbooks installed by git:
|
98
139
|
| berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
|
99
140
|
And the output should contain:
|
100
141
|
"""
|
@@ -108,7 +149,7 @@ Feature: install cookbooks from a Berksfile
|
|
108
149
|
cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0"
|
109
150
|
"""
|
110
151
|
When I successfully run `berks install`
|
111
|
-
Then the cookbook store should have the git
|
152
|
+
Then the cookbook store should have the cookbooks installed by git:
|
112
153
|
| berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
|
113
154
|
And the output should contain:
|
114
155
|
"""
|
@@ -122,7 +163,7 @@ Feature: install cookbooks from a Berksfile
|
|
122
163
|
cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0"
|
123
164
|
"""
|
124
165
|
When I successfully run `berks install`
|
125
|
-
Then the cookbook store should have the git
|
166
|
+
Then the cookbook store should have the cookbooks installed by git:
|
126
167
|
| berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
|
127
168
|
And the output should contain:
|
128
169
|
"""
|
@@ -136,7 +177,7 @@ Feature: install cookbooks from a Berksfile
|
|
136
177
|
cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v1.0.0", protocol: "<protocol>"
|
137
178
|
"""
|
138
179
|
When I successfully run `berks install`
|
139
|
-
Then the cookbook store should have the git
|
180
|
+
Then the cookbook store should have the cookbooks installed by git:
|
140
181
|
| berkshelf-cookbook-fixture | 1.0.0 | b4f968c9001ad8de30f564a2107fab9cfa91f771 |
|
141
182
|
And the output should contain:
|
142
183
|
"""
|
@@ -184,9 +225,24 @@ Feature: install cookbooks from a Berksfile
|
|
184
225
|
"""
|
185
226
|
When I cd to "sparkle_motion"
|
186
227
|
And I successfully run `berks install`
|
187
|
-
Then the output should contain:
|
228
|
+
Then the output should contain exactly:
|
229
|
+
"""
|
230
|
+
Using sparkle_motion (0.0.0) from metadata
|
231
|
+
|
232
|
+
"""
|
233
|
+
And the exit status should be 0
|
234
|
+
|
235
|
+
Scenario: running install when current project is a cookbook and the 'metadata' is specified with a path
|
236
|
+
Given a cookbook named "fake"
|
237
|
+
And I write to "Berksfile" with:
|
238
|
+
"""
|
239
|
+
metadata path: './fake'
|
188
240
|
"""
|
189
|
-
|
241
|
+
When I successfully run `berks install`
|
242
|
+
Then the output should contain exactly:
|
243
|
+
"""
|
244
|
+
Using fake (0.0.0) from metadata at './fake'
|
245
|
+
|
190
246
|
"""
|
191
247
|
And the exit status should be 0
|
192
248
|
|
@@ -237,6 +293,39 @@ Feature: install cookbooks from a Berksfile
|
|
237
293
|
"""
|
238
294
|
And the CLI should exit with the status code for error "DuplicateSourceDefined"
|
239
295
|
|
296
|
+
Scenario: When a version constraint in the metadata exists, but does not satisfy
|
297
|
+
Given a cookbook named "fake"
|
298
|
+
And I write to "Berksfile" with:
|
299
|
+
"""
|
300
|
+
site :opscode
|
301
|
+
cookbook 'fake', path: './fake'
|
302
|
+
"""
|
303
|
+
And the cookbook "fake" has the file "metadata.rb" with:
|
304
|
+
"""
|
305
|
+
name 'fake'
|
306
|
+
version '1.0.0'
|
307
|
+
|
308
|
+
depends 'berkshelf-cookbook-fixture', '~> 0.2.0'
|
309
|
+
"""
|
310
|
+
And the cookbook store has the cookbooks:
|
311
|
+
| berkshelf-cookbook-fixture | 0.2.0 |
|
312
|
+
And I successfully run `berks install`
|
313
|
+
And the cookbook "fake" has the file "metadata.rb" with:
|
314
|
+
"""
|
315
|
+
name 'fake'
|
316
|
+
version '1.0.0'
|
317
|
+
|
318
|
+
depends 'berkshelf-cookbook-fixture', '~> 1.0.0'
|
319
|
+
"""
|
320
|
+
When I successfully run `berks install`
|
321
|
+
Then the output should contain:
|
322
|
+
"""
|
323
|
+
Installing berkshelf-cookbook-fixture (1.0.0)
|
324
|
+
"""
|
325
|
+
And the cookbook store should have the cookbooks:
|
326
|
+
| berkshelf-cookbook-fixture | 1.0.0 |
|
327
|
+
And the exit status should be 0
|
328
|
+
|
240
329
|
Scenario: installing when a git source defines a branch that does not satisfy the version constraint
|
241
330
|
Given I write to "Berksfile" with:
|
242
331
|
"""
|
@@ -334,12 +423,9 @@ Feature: install cookbooks from a Berksfile
|
|
334
423
|
When I run `berks install`
|
335
424
|
Then the output should contain:
|
336
425
|
"""
|
337
|
-
|
338
|
-
|
339
|
-
fatal: remote error:
|
340
|
-
Repository not found.
|
426
|
+
Failed to download 'doesntexist' from git:
|
341
427
|
"""
|
342
|
-
And the CLI should exit with the status code for error "
|
428
|
+
And the CLI should exit with the status code for error "CookbookNotFound"
|
343
429
|
|
344
430
|
Scenario: invalid site symbol
|
345
431
|
Given I write to "Berksfile" with:
|
@@ -68,7 +68,7 @@ Feature: --format json
|
|
68
68
|
{
|
69
69
|
"name": "example_cookbook",
|
70
70
|
"version": "0.5.0",
|
71
|
-
"location": "
|
71
|
+
"location": "../../spec/fixtures/cookbooks/example_cookbook-0.5.0",
|
72
72
|
"uploaded_to": "http://localhost:4000/"
|
73
73
|
}
|
74
74
|
],
|
data/features/lockfile.feature
CHANGED
@@ -29,6 +29,7 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
29
29
|
| fake | 1.0.0 |
|
30
30
|
And I write to "Berksfile" with:
|
31
31
|
"""
|
32
|
+
site :opscode
|
32
33
|
cookbook 'fake', '1.0.0'
|
33
34
|
"""
|
34
35
|
And I write to "Berksfile.lock" with:
|
@@ -40,11 +41,11 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
40
41
|
Then the file "Berksfile.lock" should contain JSON:
|
41
42
|
"""
|
42
43
|
{
|
43
|
-
"sha":"
|
44
|
-
"sources":{
|
45
|
-
"fake":{
|
46
|
-
"
|
47
|
-
"
|
44
|
+
"sha": "374a3d22920abae4a6d620a14a32b90d8babda8f",
|
45
|
+
"sources": {
|
46
|
+
"fake": {
|
47
|
+
"constraint": "= 1.0.0",
|
48
|
+
"locked_version": "1.0.0"
|
48
49
|
}
|
49
50
|
}
|
50
51
|
}
|
@@ -65,10 +66,9 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
65
66
|
Then the file "Berksfile.lock" should contain JSON:
|
66
67
|
"""
|
67
68
|
{
|
68
|
-
"sha":"
|
69
|
+
"sha":"ebf27d476739b5aba7e7e8a61de23b3330e20a7d",
|
69
70
|
"sources":{
|
70
71
|
"fake":{
|
71
|
-
"locked_version":"0.0.0",
|
72
72
|
"constraint":"= 0.0.0",
|
73
73
|
"path":"./fake"
|
74
74
|
}
|
@@ -183,7 +183,7 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
183
183
|
And I write to "Berksfile.lock" with:
|
184
184
|
"""
|
185
185
|
{
|
186
|
-
"sha":"
|
186
|
+
"sha":"c6438d7590f4d695d8abae83ff22586ba6d3a52e",
|
187
187
|
"sources":{
|
188
188
|
"berkshelf-cookbook-fixture":{
|
189
189
|
"constraint":"= 1.0.0",
|
@@ -331,41 +331,68 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
331
331
|
Then the file "Berksfile.lock" should contain JSON:
|
332
332
|
"""
|
333
333
|
{
|
334
|
-
"sha": "
|
334
|
+
"sha": "a148a5a75397588393801a2fd55df1325080868c",
|
335
335
|
"sources":{
|
336
336
|
"fake":{
|
337
|
-
"path":"./fake"
|
338
|
-
"locked_version":"0.0.0"
|
337
|
+
"path":"./fake"
|
339
338
|
}
|
340
339
|
}
|
341
340
|
}
|
342
341
|
"""
|
343
342
|
|
344
|
-
Scenario:
|
345
|
-
Given
|
343
|
+
Scenario: Installing a Berksfile with a metadata location
|
344
|
+
Given a cookbook named "fake"
|
345
|
+
And the cookbook "fake" has the file "Berksfile" with:
|
346
346
|
"""
|
347
|
-
|
348
|
-
|
347
|
+
site :opscode
|
348
|
+
metadata
|
349
349
|
"""
|
350
|
-
|
350
|
+
When I cd to "fake"
|
351
|
+
And I successfully run `berks install`
|
352
|
+
Then the file "Berksfile.lock" should contain JSON:
|
353
|
+
"""
|
354
|
+
{
|
355
|
+
"sha": "a7371143bae509b849bf94e5d65987581bf93133",
|
356
|
+
"sources": {
|
357
|
+
"fake": {
|
358
|
+
"path": "."
|
359
|
+
}
|
360
|
+
}
|
361
|
+
}
|
362
|
+
"""
|
363
|
+
|
364
|
+
Scenario: Installing a Berksfile with a metadata location
|
365
|
+
Given a cookbook named "fake"
|
366
|
+
And the cookbook "fake" has the file "Berksfile" with:
|
351
367
|
"""
|
352
368
|
site :opscode
|
353
369
|
metadata
|
354
370
|
"""
|
355
|
-
|
371
|
+
And the cookbook "fake" has the file "Berksfile.lock" with:
|
372
|
+
"""
|
373
|
+
{
|
374
|
+
"sha": "a7371143bae509b849bf94e5d65987581bf93133",
|
375
|
+
"sources": {
|
376
|
+
"fake": {
|
377
|
+
"path": "."
|
378
|
+
}
|
379
|
+
}
|
380
|
+
}
|
381
|
+
"""
|
382
|
+
When I cd to "fake"
|
383
|
+
And I successfully run `berks install`
|
356
384
|
Then the file "Berksfile.lock" should contain JSON:
|
357
385
|
"""
|
358
386
|
{
|
359
|
-
"sha": "
|
360
|
-
"sources":{
|
361
|
-
"fake":{
|
362
|
-
"path":"."
|
363
|
-
"locked_version":"1.0.0",
|
364
|
-
"constraint":"= 1.0.0"
|
387
|
+
"sha": "a7371143bae509b849bf94e5d65987581bf93133",
|
388
|
+
"sources": {
|
389
|
+
"fake": {
|
390
|
+
"path": "."
|
365
391
|
}
|
366
392
|
}
|
367
393
|
}
|
368
394
|
"""
|
395
|
+
And the exit status should be 0
|
369
396
|
|
370
397
|
Scenario: Updating a Berksfile.lock with a different site location
|
371
398
|
Given pending we have a reliable non-opscode site to test
|
@@ -56,6 +56,19 @@ Given /^the cookbook store has the cookbooks:$/ do |cookbooks|
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
+
Given /^the cookbook store has the cookbooks installed by git:$/ do |cookbooks|
|
60
|
+
cookbooks.raw.each do |name, version, sha|
|
61
|
+
folder = "#{name}-#{sha}"
|
62
|
+
metadata = File.join(folder, 'metadata.rb')
|
63
|
+
|
64
|
+
create_dir(folder)
|
65
|
+
write_file(metadata, [
|
66
|
+
"name '#{name}'",
|
67
|
+
"version '#{version}'"
|
68
|
+
].join("\n"))
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
59
72
|
Given /^the cookbook store contains a cookbook "(.*?)" "(.*?)" with dependencies:$/ do |name, version, dependencies|
|
60
73
|
generate_cookbook(cookbook_store, name, version, dependencies: dependencies.raw)
|
61
74
|
end
|
@@ -72,7 +85,7 @@ Then /^the cookbook store should have the cookbooks:$/ do |cookbooks|
|
|
72
85
|
end
|
73
86
|
end
|
74
87
|
|
75
|
-
Then /^the cookbook store should have the git
|
88
|
+
Then /^the cookbook store should have the cookbooks installed by git:$/ do |cookbooks|
|
76
89
|
cookbooks.raw.each do |name, version, sha1|
|
77
90
|
expect(cookbook_store).to have_structure {
|
78
91
|
directory "#{name}-#{sha1}" do
|