berkshelf 3.0.0.beta6 → 3.0.0.beta7
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.
- checksums.yaml +4 -4
- data/features/berksfile.feature +2 -0
- data/features/commands/apply.feature +1 -1
- data/features/commands/contingent.feature +5 -3
- data/features/commands/install.feature +40 -40
- data/features/commands/list.feature +42 -20
- data/features/commands/outdated.feature +60 -16
- data/features/commands/show.feature +51 -8
- data/features/commands/update.feature +43 -15
- data/features/commands/upload.feature +4 -1
- data/features/commands/vendor.feature +27 -0
- data/features/json_formatter.feature +20 -8
- data/features/lockfile.feature +192 -71
- data/generator_files/CHANGELOG.md.erb +5 -0
- data/lib/berkshelf/berksfile.rb +166 -139
- data/lib/berkshelf/cli.rb +33 -30
- data/lib/berkshelf/cookbook_generator.rb +1 -0
- data/lib/berkshelf/dependency.rb +64 -14
- data/lib/berkshelf/downloader.rb +7 -10
- data/lib/berkshelf/errors.rb +59 -11
- data/lib/berkshelf/formatters/human_readable.rb +23 -36
- data/lib/berkshelf/formatters/json.rb +25 -29
- data/lib/berkshelf/installer.rb +111 -122
- data/lib/berkshelf/locations/git_location.rb +22 -9
- data/lib/berkshelf/locations/mercurial_location.rb +20 -5
- data/lib/berkshelf/locations/path_location.rb +22 -7
- data/lib/berkshelf/lockfile.rb +435 -203
- data/lib/berkshelf/resolver.rb +4 -2
- data/lib/berkshelf/source.rb +10 -1
- data/lib/berkshelf/version.rb +1 -1
- data/spec/fixtures/cookbooks/example_cookbook/Berksfile.lock +3 -4
- data/spec/fixtures/lockfiles/2.0.lock +17 -0
- data/spec/fixtures/lockfiles/blank.lock +0 -0
- data/spec/fixtures/lockfiles/default.lock +18 -10
- data/spec/fixtures/lockfiles/empty.lock +3 -0
- data/spec/unit/berkshelf/berksfile_spec.rb +31 -74
- data/spec/unit/berkshelf/cookbook_generator_spec.rb +4 -0
- data/spec/unit/berkshelf/installer_spec.rb +4 -7
- data/spec/unit/berkshelf/lockfile_parser_spec.rb +124 -0
- data/spec/unit/berkshelf/lockfile_spec.rb +140 -163
- metadata +11 -6
- data/features/licenses.feature +0 -79
- data/features/step_definitions/lockfile_steps.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 093e4db16726fd19aa0f3851481f7f4223e8ddc5
|
4
|
+
data.tar.gz: 66efef230a148c0ac4a68db77a16722cce697b4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7604553987f1fd224a37128cf05d189873f96bcc4d96f1c4cee0e2ee9a45beeb5eefe8095012adfb1696c429e559fd16a58946ed8232f5310a9da428f414f447
|
7
|
+
data.tar.gz: 62e0a0d8b2df6393da22d846e857389b1b4e003dcb1f1d60c84d1011e878bd8732277e1ba715f09f694c64e2380d95975f25265daf1edbe05ea0d26d8af70f2e
|
data/features/berksfile.feature
CHANGED
@@ -16,10 +16,11 @@ Feature: berks contingent
|
|
16
16
|
cookbook 'fake', '1.0.0'
|
17
17
|
cookbook 'ekaf', '1.0.0'
|
18
18
|
"""
|
19
|
+
And I run `berks install`
|
19
20
|
And I successfully run `berks contingent dep`
|
20
21
|
Then the output should contain:
|
21
22
|
"""
|
22
|
-
Cookbooks in this Berksfile contingent upon dep:
|
23
|
+
Cookbooks in this Berksfile contingent upon 'dep':
|
23
24
|
* ekaf (1.0.0)
|
24
25
|
* fake (1.0.0)
|
25
26
|
"""
|
@@ -31,10 +32,11 @@ Feature: berks contingent
|
|
31
32
|
"""
|
32
33
|
cookbook 'fake', '1.0.0'
|
33
34
|
"""
|
35
|
+
And I run `berks install`
|
34
36
|
And I successfully run `berks contingent dep`
|
35
37
|
Then the output should contain:
|
36
38
|
"""
|
37
|
-
There are no cookbooks contingent upon 'dep'
|
39
|
+
There are no cookbooks in this Berksfile contingent upon 'dep'.
|
38
40
|
"""
|
39
41
|
|
40
42
|
Scenario: When the cookbook is not in the Berksfile
|
@@ -42,5 +44,5 @@ Feature: berks contingent
|
|
42
44
|
And I successfully run `berks contingent dep`
|
43
45
|
Then the output should contain:
|
44
46
|
"""
|
45
|
-
There are no cookbooks contingent upon 'dep'
|
47
|
+
There are no cookbooks in this Berksfile contingent upon 'dep'.
|
46
48
|
"""
|
@@ -56,8 +56,8 @@ Feature: berks install
|
|
56
56
|
When I successfully run `berks install`
|
57
57
|
Then the output should contain:
|
58
58
|
"""
|
59
|
-
Installing
|
60
|
-
Installing
|
59
|
+
Installing elixir (1.0.0) from http://0.0.0.0:26210 ([chef_server] http://localhost:26310/)
|
60
|
+
Installing ruby (1.0.0) from http://0.0.0.0:26210 ([chef_server] http://localhost:26310/)
|
61
61
|
"""
|
62
62
|
And the cookbook store should have the cookbooks:
|
63
63
|
| ruby | 1.0.0 |
|
@@ -101,7 +101,7 @@ Feature: berks install
|
|
101
101
|
cookbook 'takeme', group: :take_me
|
102
102
|
cookbook 'notme', group: :not_me
|
103
103
|
"""
|
104
|
-
When I successfully run `berks
|
104
|
+
When I successfully run `berks install --only take_me not_me`
|
105
105
|
Then the output should contain "Using takeme (1.0.0)"
|
106
106
|
Then the output should contain "Using notme (1.0.0)"
|
107
107
|
|
@@ -114,7 +114,7 @@ Feature: berks install
|
|
114
114
|
cookbook 'takeme', group: :take_me
|
115
115
|
cookbook 'notme', group: :not_me
|
116
116
|
"""
|
117
|
-
When I successfully run `berks
|
117
|
+
When I successfully run `berks install --except not_me`
|
118
118
|
Then the output should contain "Using takeme (1.0.0)"
|
119
119
|
Then the output should not contain "Using notme (1.0.0)"
|
120
120
|
|
@@ -127,7 +127,7 @@ Feature: berks install
|
|
127
127
|
cookbook 'takeme', group: :take_me
|
128
128
|
cookbook 'notme', group: :not_me
|
129
129
|
"""
|
130
|
-
When I successfully run `berks
|
130
|
+
When I successfully run `berks install --except take_me not_me`
|
131
131
|
Then the output should not contain "Using takeme (1.0.0)"
|
132
132
|
Then the output should not contain "Using notme (1.0.0)"
|
133
133
|
|
@@ -140,7 +140,7 @@ Feature: berks install
|
|
140
140
|
When I successfully run `berks install`
|
141
141
|
Then the output should contain:
|
142
142
|
"""
|
143
|
-
Using example_cookbook (0.5.0)
|
143
|
+
Using example_cookbook (0.5.0) from source at ../../fixtures/cookbooks/example_cookbook-0.5.0
|
144
144
|
"""
|
145
145
|
|
146
146
|
Scenario: installing a demand from a path location with a conflicting constraint
|
@@ -165,12 +165,12 @@ Feature: berks install
|
|
165
165
|
When I successfully run `berks install`
|
166
166
|
Then the output should contain:
|
167
167
|
"""
|
168
|
-
Using example_cookbook (0.5.0)
|
168
|
+
Using example_cookbook (0.5.0) from source at ../../fixtures/cookbooks/example_cookbook-0.5.0
|
169
169
|
"""
|
170
170
|
|
171
171
|
Scenario: installing a demand from a path location locks the graph to that version
|
172
172
|
Given the Chef Server has cookbooks:
|
173
|
-
| example_cookbook | 1.0.0 | |
|
173
|
+
# | example_cookbook | 1.0.0 | |
|
174
174
|
| other_cookbook | 1.0.0 | example_cookbook ~> 1.0.0 |
|
175
175
|
And I have a Berksfile pointing at the local Berkshelf API with:
|
176
176
|
"""
|
@@ -192,7 +192,7 @@ Feature: berks install
|
|
192
192
|
When I successfully run `berks install -b subdirectory/Berksfile`
|
193
193
|
Then the output should contain:
|
194
194
|
"""
|
195
|
-
Using example_cookbook (0.5.0)
|
195
|
+
Using example_cookbook (0.5.0) from source at ../../../fixtures/cookbooks/example_cookbook-0.5.0
|
196
196
|
"""
|
197
197
|
|
198
198
|
Scenario: installing a demand from a Git location
|
@@ -205,9 +205,9 @@ Feature: berks install
|
|
205
205
|
| berkshelf-cookbook-fixture | 1.0.0 | a97b9447cbd41a5fe58eee2026e48ccb503bd3bc |
|
206
206
|
And the output should contain:
|
207
207
|
"""
|
208
|
-
Fetching 'berkshelf-cookbook-fixture' from git
|
209
|
-
|
210
|
-
Using berkshelf-cookbook-fixture (1.0.0)
|
208
|
+
Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at master)
|
209
|
+
Fetching cookbook index from http://0.0.0.0:26210...
|
210
|
+
Using berkshelf-cookbook-fixture (1.0.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at master)
|
211
211
|
"""
|
212
212
|
|
213
213
|
Scenario: installing a demand from a Git location that has already been installed
|
@@ -220,7 +220,7 @@ Feature: berks install
|
|
220
220
|
When I successfully run `berks install`
|
221
221
|
Then the output should contain:
|
222
222
|
"""
|
223
|
-
Using berkshelf-cookbook-fixture (1.0.0)
|
223
|
+
Using berkshelf-cookbook-fixture (1.0.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at master)
|
224
224
|
"""
|
225
225
|
|
226
226
|
Scenario: installing a Berksfile that contains a Git location with a rel
|
@@ -233,9 +233,9 @@ Feature: berks install
|
|
233
233
|
| berkshelf-cookbook-fixture | 1.0.0 | 93f5768b7d14df45e10d16c8bf6fe98ba3ff809a |
|
234
234
|
And the output should contain:
|
235
235
|
"""
|
236
|
-
Fetching 'berkshelf-cookbook-fixture' from
|
237
|
-
|
238
|
-
Using berkshelf-cookbook-fixture (1.0.0)
|
236
|
+
Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at rel/cookbooks/berkshelf-cookbook-fixture)
|
237
|
+
Fetching cookbook index from http://0.0.0.0:26210...
|
238
|
+
Using berkshelf-cookbook-fixture (1.0.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at rel/cookbooks/berkshelf-cookbook-fixture)
|
239
239
|
"""
|
240
240
|
|
241
241
|
Scenario: installing a Berksfile that contains a Git location with a tag
|
@@ -248,9 +248,9 @@ Feature: berks install
|
|
248
248
|
| berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
|
249
249
|
And the output should contain:
|
250
250
|
"""
|
251
|
-
Fetching 'berkshelf-cookbook-fixture' from git
|
252
|
-
|
253
|
-
Using berkshelf-cookbook-fixture (0.2.0)
|
251
|
+
Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
252
|
+
Fetching cookbook index from http://0.0.0.0:26210...
|
253
|
+
Using berkshelf-cookbook-fixture (0.2.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
254
254
|
"""
|
255
255
|
|
256
256
|
Scenario: installing a Berksfile that contains a Git location with a ref
|
@@ -263,24 +263,24 @@ Feature: berks install
|
|
263
263
|
| berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
|
264
264
|
And the output should contain:
|
265
265
|
"""
|
266
|
-
Fetching 'berkshelf-cookbook-fixture' from git
|
267
|
-
|
268
|
-
Using berkshelf-cookbook-fixture (0.2.0)
|
266
|
+
Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at 70a527e)
|
267
|
+
Fetching cookbook index from http://0.0.0.0:26210...
|
268
|
+
Using berkshelf-cookbook-fixture (0.2.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at 70a527e)
|
269
269
|
"""
|
270
270
|
|
271
271
|
Scenario: installing a Berksfile that contains a Git location with an abbreviated ref
|
272
272
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
273
273
|
"""
|
274
|
-
cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git", ref: "
|
274
|
+
cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git", ref: "70a527e"
|
275
275
|
"""
|
276
276
|
When I successfully run `berks install`
|
277
277
|
Then the cookbook store should have the git cookbooks:
|
278
278
|
| berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
|
279
279
|
And the output should contain:
|
280
280
|
"""
|
281
|
-
Fetching 'berkshelf-cookbook-fixture' from git
|
282
|
-
|
283
|
-
Using berkshelf-cookbook-fixture (0.2.0)
|
281
|
+
Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at 70a527e)
|
282
|
+
Fetching cookbook index from http://0.0.0.0:26210...
|
283
|
+
Using berkshelf-cookbook-fixture (0.2.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at 70a527e)
|
284
284
|
"""
|
285
285
|
|
286
286
|
Scenario: installing a Berksfile that contains a GitHub location
|
@@ -293,9 +293,9 @@ Feature: berks install
|
|
293
293
|
| berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
|
294
294
|
And the output should contain:
|
295
295
|
"""
|
296
|
-
Fetching 'berkshelf-cookbook-fixture' from
|
297
|
-
|
298
|
-
Using berkshelf-cookbook-fixture (0.2.0)
|
296
|
+
Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
297
|
+
Fetching cookbook index from http://0.0.0.0:26210...
|
298
|
+
Using berkshelf-cookbook-fixture (0.2.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
299
299
|
"""
|
300
300
|
|
301
301
|
Scenario: installing a Berksfile that contains a GitHub location ending in .git
|
@@ -320,9 +320,9 @@ Feature: berks install
|
|
320
320
|
| berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
|
321
321
|
And the output should contain:
|
322
322
|
"""
|
323
|
-
Fetching 'berkshelf-cookbook-fixture' from
|
324
|
-
|
325
|
-
Using berkshelf-cookbook-fixture (0.2.0)
|
323
|
+
Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
324
|
+
Fetching cookbook index from http://0.0.0.0:26210...
|
325
|
+
Using berkshelf-cookbook-fixture (0.2.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
326
326
|
"""
|
327
327
|
|
328
328
|
Scenario: installing a Berksfile that contains a Github location and protocol https
|
@@ -335,9 +335,9 @@ Feature: berks install
|
|
335
335
|
| berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
|
336
336
|
And the output should contain:
|
337
337
|
"""
|
338
|
-
Fetching 'berkshelf-cookbook-fixture' from
|
339
|
-
|
340
|
-
Using berkshelf-cookbook-fixture (0.2.0)
|
338
|
+
Fetching 'berkshelf-cookbook-fixture' from https://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
339
|
+
Fetching cookbook index from http://0.0.0.0:26210...
|
340
|
+
Using berkshelf-cookbook-fixture (0.2.0) from https://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
341
341
|
"""
|
342
342
|
|
343
343
|
# GitHub doesn't permit anonymous SSH access, so we are going to get a
|
@@ -471,7 +471,7 @@ Feature: berks install
|
|
471
471
|
When I run `berks install`
|
472
472
|
Then the output should contain:
|
473
473
|
"""
|
474
|
-
Fetching 'berkshelf-cookbook-fixture' from git
|
474
|
+
Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v0.2.0)
|
475
475
|
The cookbook downloaded for berkshelf-cookbook-fixture (= 1.0.0) did not satisfy the constraint.
|
476
476
|
"""
|
477
477
|
And the exit status should be "CookbookValidationFailure"
|
@@ -486,9 +486,9 @@ Feature: berks install
|
|
486
486
|
When I successfully run `berks install`
|
487
487
|
Then the output should contain:
|
488
488
|
"""
|
489
|
-
Fetching 'berkshelf-cookbook-fixture' from git
|
490
|
-
|
491
|
-
Using berkshelf-cookbook-fixture (1.0.0)
|
489
|
+
Fetching 'berkshelf-cookbook-fixture' from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v1.0.0)
|
490
|
+
Fetching cookbook index from http://0.0.0.0:26210...
|
491
|
+
Using berkshelf-cookbook-fixture (1.0.0) from git://github.com/RiotGames/berkshelf-cookbook-fixture.git (at v1.0.0)
|
492
492
|
"""
|
493
493
|
|
494
494
|
Scenario: with a cookbook definition containing an invalid option
|
@@ -512,7 +512,7 @@ Feature: berks install
|
|
512
512
|
When I run `berks install`
|
513
513
|
Then the output should contain:
|
514
514
|
"""
|
515
|
-
Fetching 'doesntexist' from git
|
515
|
+
Fetching 'doesntexist' from git://github.com/asdjhfkljashflkjashfakljsf (at master)
|
516
516
|
An error occurred during Git execution:
|
517
517
|
"""
|
518
518
|
And the exit status should be "GitError"
|
@@ -1,5 +1,5 @@
|
|
1
1
|
Feature: berks list
|
2
|
-
Scenario:
|
2
|
+
Scenario: When everything is good
|
3
3
|
Given the cookbook store has the cookbooks:
|
4
4
|
| fake1 | 1.0.0 |
|
5
5
|
| fake2 | 1.0.1 |
|
@@ -8,9 +8,16 @@ Feature: berks list
|
|
8
8
|
cookbook 'fake1', '1.0.0'
|
9
9
|
cookbook 'fake2', '1.0.1'
|
10
10
|
"""
|
11
|
-
And
|
12
|
-
|
13
|
-
|
11
|
+
And I write to "Berksfile.lock" with:
|
12
|
+
"""
|
13
|
+
DEPENDENCIES
|
14
|
+
fake1 (= 1.0.0)
|
15
|
+
fake2 (= 1.0.1)
|
16
|
+
|
17
|
+
GRAPH
|
18
|
+
fake1 (1.0.0)
|
19
|
+
fake2 (1.0.1)
|
20
|
+
"""
|
14
21
|
When I successfully run `berks list`
|
15
22
|
Then the output should contain:
|
16
23
|
"""
|
@@ -19,38 +26,53 @@ Feature: berks list
|
|
19
26
|
* fake2 (1.0.1)
|
20
27
|
"""
|
21
28
|
|
22
|
-
Scenario:
|
23
|
-
|
29
|
+
Scenario: When the lockfile is not present
|
30
|
+
Given I have a Berksfile pointing at the local Berkshelf API with:
|
24
31
|
"""
|
25
32
|
cookbook 'fake', '1.0.0'
|
26
33
|
"""
|
27
|
-
And the Lockfile has:
|
28
|
-
| fake | 1.0.0 |
|
29
34
|
When I run `berks list`
|
30
35
|
Then the output should contain:
|
31
36
|
"""
|
32
|
-
|
37
|
+
Lockfile not found! Run `berks install` to create the lockfile.
|
33
38
|
"""
|
34
|
-
And the exit status should be "
|
39
|
+
And the exit status should be "LockfileNotFound"
|
35
40
|
|
36
|
-
Scenario:
|
37
|
-
Given
|
38
|
-
| fake | 1.0.0 |
|
39
|
-
And I have a Berksfile pointing at the local Berkshelf API with:
|
41
|
+
Scenario: When a dependency is not in the lockfile
|
42
|
+
Given I have a Berksfile pointing at the local Berkshelf API with:
|
40
43
|
"""
|
41
44
|
cookbook 'fake', '1.0.0'
|
42
45
|
"""
|
46
|
+
And I write to "Berksfile.lock" with:
|
47
|
+
"""
|
48
|
+
DEPENDENCIES
|
49
|
+
|
50
|
+
GRAPH
|
51
|
+
not_fake (1.0.0)
|
52
|
+
"""
|
43
53
|
When I run `berks list`
|
44
54
|
Then the output should contain:
|
45
55
|
"""
|
46
|
-
|
56
|
+
The lockfile is out of sync! Run `berks install` to sync the lockfile.
|
47
57
|
"""
|
48
|
-
And the exit status should be "
|
58
|
+
And the exit status should be "LockfileOutOfSync"
|
49
59
|
|
50
|
-
Scenario:
|
51
|
-
Given I have a Berksfile pointing at the local Berkshelf API
|
52
|
-
|
60
|
+
Scenario: When a dependency is not installed
|
61
|
+
Given I have a Berksfile pointing at the local Berkshelf API with:
|
62
|
+
"""
|
63
|
+
cookbook 'fake', '1.0.0'
|
64
|
+
"""
|
65
|
+
And I write to "Berksfile.lock" with:
|
66
|
+
"""
|
67
|
+
DEPENDENCIES
|
68
|
+
fake (= 1.0.0)
|
69
|
+
|
70
|
+
GRAPH
|
71
|
+
fake (1.0.0)
|
72
|
+
"""
|
73
|
+
When I run `berks list`
|
53
74
|
Then the output should contain:
|
54
75
|
"""
|
55
|
-
|
76
|
+
The cookbook 'fake (1.0.0)' is not installed. Please run `berks install` to download and install the missing dependency.
|
56
77
|
"""
|
78
|
+
And the exit status should be "DependencyNotInstalled"
|
@@ -10,8 +10,15 @@ Feature: berks outdated
|
|
10
10
|
"""
|
11
11
|
cookbook 'bacon', '~> 1.1.0'
|
12
12
|
"""
|
13
|
-
And
|
14
|
-
|
13
|
+
And I write to "Berksfile.lock" with:
|
14
|
+
"""
|
15
|
+
DEPENDENCIES
|
16
|
+
bacon (~> 1.1.0)
|
17
|
+
|
18
|
+
GRAPH
|
19
|
+
bacon (1.1.0)
|
20
|
+
"""
|
21
|
+
|
15
22
|
When I successfully run `berks outdated`
|
16
23
|
Then the output should contain:
|
17
24
|
"""
|
@@ -29,8 +36,14 @@ Feature: berks outdated
|
|
29
36
|
"""
|
30
37
|
cookbook 'bacon'
|
31
38
|
"""
|
32
|
-
And
|
33
|
-
|
39
|
+
And I write to "Berksfile.lock" with:
|
40
|
+
"""
|
41
|
+
DEPENDENCIES
|
42
|
+
bacon
|
43
|
+
|
44
|
+
GRAPH
|
45
|
+
bacon (1.0.0)
|
46
|
+
"""
|
34
47
|
When I successfully run `berks outdated`
|
35
48
|
Then the output should contain:
|
36
49
|
"""
|
@@ -50,8 +63,14 @@ Feature: berks outdated
|
|
50
63
|
"""
|
51
64
|
cookbook 'bacon', '~> 1.0'
|
52
65
|
"""
|
53
|
-
And
|
54
|
-
|
66
|
+
And I write to "Berksfile.lock" with:
|
67
|
+
"""
|
68
|
+
DEPENDENCIES
|
69
|
+
bacon (~> 1.0)
|
70
|
+
|
71
|
+
GRAPH
|
72
|
+
bacon (1.0.0)
|
73
|
+
"""
|
55
74
|
When I successfully run `berks outdated`
|
56
75
|
Then the output should contain:
|
57
76
|
"""
|
@@ -59,28 +78,53 @@ Feature: berks outdated
|
|
59
78
|
* bacon (1.5.8)
|
60
79
|
"""
|
61
80
|
|
62
|
-
Scenario: When
|
63
|
-
|
81
|
+
Scenario: When the lockfile is not present
|
82
|
+
Given I have a Berksfile pointing at the local Berkshelf API with:
|
64
83
|
"""
|
65
84
|
cookbook 'bacon', '1.0.0'
|
66
85
|
"""
|
67
86
|
When I run `berks outdated`
|
68
87
|
Then the output should contain:
|
69
88
|
"""
|
70
|
-
|
89
|
+
Lockfile not found! Run `berks install` to create the lockfile.
|
71
90
|
"""
|
72
|
-
And the exit status should be "
|
91
|
+
And the exit status should be "LockfileNotFound"
|
73
92
|
|
74
|
-
Scenario: When
|
75
|
-
|
93
|
+
Scenario: When a dependency is not in the lockfile
|
94
|
+
Given I have a Berksfile pointing at the local Berkshelf API with:
|
76
95
|
"""
|
77
96
|
cookbook 'bacon', '1.0.0'
|
78
97
|
"""
|
79
|
-
And
|
80
|
-
|
98
|
+
And I write to "Berksfile.lock" with:
|
99
|
+
"""
|
100
|
+
DEPENDENCIES
|
101
|
+
|
102
|
+
GRAPH
|
103
|
+
not_fake (1.0.0)
|
104
|
+
"""
|
105
|
+
When I run `berks outdated`
|
106
|
+
Then the output should contain:
|
107
|
+
"""
|
108
|
+
The lockfile is out of sync! Run `berks install` to sync the lockfile.
|
109
|
+
"""
|
110
|
+
And the exit status should be "LockfileOutOfSync"
|
111
|
+
|
112
|
+
Scenario: When a dependency is not installed
|
113
|
+
Given I have a Berksfile pointing at the local Berkshelf API with:
|
114
|
+
"""
|
115
|
+
cookbook 'bacon', '1.0.0'
|
116
|
+
"""
|
117
|
+
And I write to "Berksfile.lock" with:
|
118
|
+
"""
|
119
|
+
DEPENDENCIES
|
120
|
+
bacon (= 1.0.0)
|
121
|
+
|
122
|
+
GRAPH
|
123
|
+
bacon (1.0.0)
|
124
|
+
"""
|
81
125
|
When I run `berks outdated`
|
82
126
|
Then the output should contain:
|
83
127
|
"""
|
84
|
-
|
128
|
+
The cookbook 'bacon (1.0.0)' is not installed. Please run `berks install` to download and install the missing dependency.
|
85
129
|
"""
|
86
|
-
And the exit status should be "
|
130
|
+
And the exit status should be "DependencyNotInstalled"
|