berkshelf 3.0.0.beta6 → 3.0.0.beta7
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -6,8 +6,14 @@ Feature: berks show
|
|
6
6
|
"""
|
7
7
|
cookbook 'fake', '1.0.0'
|
8
8
|
"""
|
9
|
-
And
|
10
|
-
|
9
|
+
And I write to "Berksfile.lock" with:
|
10
|
+
"""
|
11
|
+
DEPENDENCIES
|
12
|
+
fake (= 1.0.0)
|
13
|
+
|
14
|
+
GRAPH
|
15
|
+
fake (1.0.0)
|
16
|
+
"""
|
11
17
|
When I successfully run `berks show fake`
|
12
18
|
Then the output should contain:
|
13
19
|
"""
|
@@ -19,12 +25,43 @@ Feature: berks show
|
|
19
25
|
License: none
|
20
26
|
"""
|
21
27
|
|
28
|
+
Scenario: When the parameter is a transitive dependency
|
29
|
+
Given the cookbook store has the cookbooks:
|
30
|
+
| dep | 1.0.0 |
|
31
|
+
And the cookbook store contains a cookbook "fake" "1.0.0" with dependencies:
|
32
|
+
| dep | ~> 1.0.0 |
|
33
|
+
And I have a Berksfile pointing at the local Berkshelf API with:
|
34
|
+
"""
|
35
|
+
cookbook 'fake', '1.0.0'
|
36
|
+
"""
|
37
|
+
And I write to "Berksfile.lock" with:
|
38
|
+
"""
|
39
|
+
DEPENDENCIES
|
40
|
+
fake (= 1.0.0)
|
41
|
+
|
42
|
+
GRAPH
|
43
|
+
dep (1.0.0)
|
44
|
+
fake (1.0.0)
|
45
|
+
dep (~> 1.0.0)
|
46
|
+
"""
|
47
|
+
And I successfully run `berks install`
|
48
|
+
When I successfully run `berks show dep`
|
49
|
+
Then the output should contain:
|
50
|
+
"""
|
51
|
+
Name: dep
|
52
|
+
Version: 1.0.0
|
53
|
+
Description: A fabulous new cookbook
|
54
|
+
Author: YOUR_COMPANY_NAME
|
55
|
+
Email: YOUR_EMAIL
|
56
|
+
License: none
|
57
|
+
"""
|
58
|
+
|
22
59
|
Scenario: When the cookbook is not in the Berksfile
|
23
60
|
Given I have a Berksfile pointing at the local Berkshelf API
|
24
61
|
When I run `berks show fake`
|
25
62
|
Then the output should contain:
|
26
63
|
"""
|
27
|
-
Could not find cookbook
|
64
|
+
Could not find cookbook 'fake'. Make sure it is in your Berksfile, then run `berks install` to download and install the missing dependencies.
|
28
65
|
"""
|
29
66
|
And the exit status should be "DependencyNotFound"
|
30
67
|
|
@@ -36,9 +73,9 @@ Feature: berks show
|
|
36
73
|
When I run `berks show fake`
|
37
74
|
Then the output should contain:
|
38
75
|
"""
|
39
|
-
Could not find cookbook 'fake
|
76
|
+
Could not find cookbook 'fake'. Make sure it is in your Berksfile, then run `berks install` to download and install the missing dependencies.
|
40
77
|
"""
|
41
|
-
And the exit status should be "
|
78
|
+
And the exit status should be "DependencyNotFound"
|
42
79
|
|
43
80
|
Scenario: When the cookbook is not installed
|
44
81
|
Given the cookbook store is empty
|
@@ -46,11 +83,17 @@ Feature: berks show
|
|
46
83
|
"""
|
47
84
|
cookbook 'fake', '1.0.0'
|
48
85
|
"""
|
49
|
-
And
|
50
|
-
|
86
|
+
And I write to "Berksfile.lock" with:
|
87
|
+
"""
|
88
|
+
DEPENDENCIES
|
89
|
+
fake (= 1.0.0)
|
90
|
+
|
91
|
+
GRAPH
|
92
|
+
fake (1.0.0)
|
93
|
+
"""
|
51
94
|
When I run `berks show fake`
|
52
95
|
Then the output should contain:
|
53
96
|
"""
|
54
|
-
Could not find cookbook 'fake (1.0.0)'.
|
97
|
+
Could not find cookbook 'fake (1.0.0)'. Run `berks install` to download and install the missing cookbook.
|
55
98
|
"""
|
56
99
|
And the exit status should be "CookbookNotFound"
|
@@ -11,36 +11,64 @@ Feature: berks update
|
|
11
11
|
Scenario: Without a cookbook specified
|
12
12
|
And I have a Berksfile pointing at the local Berkshelf API with:
|
13
13
|
"""
|
14
|
-
cookbook 'fake', '~> 0.1'
|
15
14
|
cookbook 'ekaf', '~> 1.0.0'
|
15
|
+
cookbook 'fake', '~> 0.1'
|
16
|
+
"""
|
17
|
+
And I write to "Berksfile.lock" with:
|
18
|
+
"""
|
19
|
+
DEPENDENCIES
|
20
|
+
ekaf (~> 1.0.0)
|
21
|
+
fake (~> 0.1)
|
22
|
+
|
23
|
+
GRAPH
|
24
|
+
ekaf (1.0.0)
|
25
|
+
fake (0.1.0)
|
16
26
|
"""
|
17
|
-
And the Lockfile has:
|
18
|
-
| fake | 0.1.0 |
|
19
|
-
| ekaf | 1.0.0 |
|
20
27
|
When I successfully run `berks update`
|
21
|
-
Then the
|
22
|
-
|
23
|
-
|
28
|
+
Then the file "Berksfile.lock" should contain:
|
29
|
+
"""
|
30
|
+
DEPENDENCIES
|
31
|
+
ekaf (~> 1.0.0)
|
32
|
+
fake (~> 0.1)
|
33
|
+
|
34
|
+
GRAPH
|
35
|
+
ekaf (1.0.1)
|
36
|
+
fake (0.2.0)
|
37
|
+
"""
|
24
38
|
|
25
39
|
Scenario: With a single cookbook specified
|
26
40
|
And I have a Berksfile pointing at the local Berkshelf API with:
|
27
41
|
"""
|
28
|
-
cookbook 'fake', '~> 0.1'
|
29
42
|
cookbook 'ekaf', '~> 1.0.0'
|
43
|
+
cookbook 'fake', '~> 0.1'
|
44
|
+
"""
|
45
|
+
And I write to "Berksfile.lock" with:
|
46
|
+
"""
|
47
|
+
DEPENDENCIES
|
48
|
+
ekaf (~> 1.0.0)
|
49
|
+
fake (~> 0.1)
|
50
|
+
|
51
|
+
GRAPH
|
52
|
+
ekaf (1.0.0)
|
53
|
+
fake (0.1.0)
|
30
54
|
"""
|
31
|
-
And the Lockfile has:
|
32
|
-
| fake | 0.1.0 |
|
33
|
-
| ekaf | 1.0.0 |
|
34
55
|
When I successfully run `berks update fake`
|
35
|
-
Then the
|
36
|
-
|
37
|
-
|
56
|
+
Then the file "Berksfile.lock" should contain:
|
57
|
+
"""
|
58
|
+
DEPENDENCIES
|
59
|
+
ekaf (~> 1.0.0)
|
60
|
+
fake (~> 0.1)
|
61
|
+
|
62
|
+
GRAPH
|
63
|
+
ekaf (1.0.0)
|
64
|
+
fake (0.2.0)
|
65
|
+
"""
|
38
66
|
|
39
67
|
Scenario: With a cookbook that does not exist
|
40
68
|
Given I have a Berksfile pointing at the local Berkshelf API
|
41
69
|
When I run `berks update not_real`
|
42
70
|
Then the output should contain:
|
43
71
|
"""
|
44
|
-
Could not find cookbook
|
72
|
+
Could not find cookbook 'not_real'. Make sure it is in your Berksfile, then run `berks install` to download and install the missing dependencies.
|
45
73
|
"""
|
46
74
|
And the exit status should be "DependencyNotFound"
|
@@ -49,7 +49,7 @@ Feature: berks upload
|
|
49
49
|
When I run `berks upload reset`
|
50
50
|
Then the output should contain:
|
51
51
|
"""
|
52
|
-
Could not find cookbook
|
52
|
+
Could not find cookbook 'reset'. Make sure it is in your Berksfile, then run `berks install` to download and install the missing dependencies.
|
53
53
|
"""
|
54
54
|
And the exit status should be "DependencyNotFound"
|
55
55
|
|
@@ -169,6 +169,7 @@ Feature: berks upload
|
|
169
169
|
Given a cookbook named "fake"
|
170
170
|
And the cookbook "fake" has the file "Berksfile" with:
|
171
171
|
"""
|
172
|
+
source 'https://api.berkshelf.com'
|
172
173
|
metadata
|
173
174
|
"""
|
174
175
|
And the Chef Server has frozen cookbooks:
|
@@ -182,6 +183,7 @@ Feature: berks upload
|
|
182
183
|
|
183
184
|
* fake (0.0.0)
|
184
185
|
"""
|
186
|
+
|
185
187
|
Scenario: When the syntax check is skipped
|
186
188
|
Given a cookbook named "fake"
|
187
189
|
And the cookbook "fake" has the file "recipes/default.rb" with:
|
@@ -200,6 +202,7 @@ Feature: berks upload
|
|
200
202
|
"""
|
201
203
|
And the cookbook "fake" has the file "Berksfile" with:
|
202
204
|
"""
|
205
|
+
source 'https://api.berkshelf.com'
|
203
206
|
metadata
|
204
207
|
"""
|
205
208
|
And I cd to "fake"
|
@@ -30,6 +30,24 @@ Feature: Vendoring cookbooks to a directory
|
|
30
30
|
When I successfully run `berks vendor cukebooks`
|
31
31
|
And the directory "cukebooks/fake" should contain version "0.0.0" of the "fake" cookbook
|
32
32
|
|
33
|
+
Scenario: vendoring a cookbook with transitive dependencies
|
34
|
+
Given I have a Berksfile pointing at the local Berkshelf API with:
|
35
|
+
"""
|
36
|
+
metadata
|
37
|
+
"""
|
38
|
+
And I write to "metadata.rb" with:
|
39
|
+
"""
|
40
|
+
name 'bacon'
|
41
|
+
version '1.0.0'
|
42
|
+
|
43
|
+
depends 'fake'
|
44
|
+
depends 'ekaf'
|
45
|
+
"""
|
46
|
+
When I successfully run `berks vendor vendor`
|
47
|
+
Then the directory "vendor/bacon" should contain version "1.0.0" of the "bacon" cookbook
|
48
|
+
And the directory "vendor/fake" should contain version "1.0.0" of the "fake" cookbook
|
49
|
+
And the directory "vendor/ekaf" should contain version "2.0.0" of the "ekaf" cookbook
|
50
|
+
|
33
51
|
Scenario: vendoring without an explicit path to vendor into
|
34
52
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
35
53
|
"""
|
@@ -46,3 +64,12 @@ Feature: Vendoring cookbooks to a directory
|
|
46
64
|
And a directory named "cukebooks"
|
47
65
|
When I run `berks vendor cukebooks`
|
48
66
|
And the exit status should be "VendorError"
|
67
|
+
|
68
|
+
Scenario: vendoring into a nested directory
|
69
|
+
Given I have a Berksfile pointing at the local Berkshelf API with:
|
70
|
+
"""
|
71
|
+
cookbook 'fake'
|
72
|
+
"""
|
73
|
+
When I successfully run `berks vendor path/to/cukebooks`
|
74
|
+
Then the directory "path/to/cukebooks/fake" should contain version "1.0.0" of the "fake" cookbook
|
75
|
+
|
@@ -28,14 +28,14 @@ Feature: --format json
|
|
28
28
|
|
29
29
|
],
|
30
30
|
"messages": [
|
31
|
-
"
|
31
|
+
"Fetching cookbook index from http://0.0.0.0:26210..."
|
32
32
|
]
|
33
33
|
}
|
34
34
|
"""
|
35
35
|
|
36
36
|
Scenario: JSON output installing a cookbook we already have
|
37
37
|
Given the cookbook store has the cookbooks:
|
38
|
-
| berkshelf-cookbook-fixture
|
38
|
+
| berkshelf-cookbook-fixture | 1.0.0 |
|
39
39
|
And I have a Berksfile pointing at the local Berkshelf API with:
|
40
40
|
"""
|
41
41
|
cookbook 'berkshelf-cookbook-fixture', '1.0.0'
|
@@ -54,7 +54,7 @@ Feature: --format json
|
|
54
54
|
|
55
55
|
],
|
56
56
|
"messages": [
|
57
|
-
"
|
57
|
+
"Fetching cookbook index from http://0.0.0.0:26210..."
|
58
58
|
]
|
59
59
|
}
|
60
60
|
"""
|
@@ -66,8 +66,14 @@ Feature: --format json
|
|
66
66
|
"""
|
67
67
|
cookbook 'fake', '1.0.0'
|
68
68
|
"""
|
69
|
-
And
|
70
|
-
|
69
|
+
And I write to "Berksfile.lock" with:
|
70
|
+
"""
|
71
|
+
DEPENDENCIES
|
72
|
+
fake (= 1.0.0)
|
73
|
+
|
74
|
+
GRAPH
|
75
|
+
fake (1.0.0)
|
76
|
+
"""
|
71
77
|
When I successfully run `berks show fake --format json`
|
72
78
|
Then the output should contain JSON:
|
73
79
|
"""
|
@@ -111,7 +117,7 @@ Feature: --format json
|
|
111
117
|
|
112
118
|
],
|
113
119
|
"messages": [
|
114
|
-
"
|
120
|
+
"Fetching cookbook index from http://0.0.0.0:26210..."
|
115
121
|
]
|
116
122
|
}
|
117
123
|
"""
|
@@ -128,8 +134,14 @@ Feature: --format json
|
|
128
134
|
"""
|
129
135
|
cookbook 'seth', '~> 0.1'
|
130
136
|
"""
|
131
|
-
And
|
132
|
-
|
137
|
+
And I write to "Berksfile.lock" with:
|
138
|
+
"""
|
139
|
+
DEPENDENCIES
|
140
|
+
seth (~> 0.1)
|
141
|
+
|
142
|
+
GRAPH
|
143
|
+
seth (0.1.0)
|
144
|
+
"""
|
133
145
|
And I successfully run `berks outdated --format json`
|
134
146
|
Then the output should contain JSON:
|
135
147
|
"""
|
data/features/lockfile.feature
CHANGED
@@ -17,37 +17,14 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
17
17
|
cookbook 'fake', '1.0.0'
|
18
18
|
"""
|
19
19
|
When I successfully run `berks install`
|
20
|
-
Then the
|
21
|
-
| fake | 1.0.0 |
|
22
|
-
|
23
|
-
Scenario: Writing the Berksfile.lock when a 1.0 lockfile is present
|
24
|
-
Given I have a Berksfile pointing at the local Berkshelf API with:
|
25
|
-
"""
|
26
|
-
cookbook 'fake', '1.0.0'
|
27
|
-
"""
|
28
|
-
And I write to "Berksfile.lock" with:
|
20
|
+
Then the file "Berksfile.lock" should contain:
|
29
21
|
"""
|
30
|
-
|
31
|
-
|
32
|
-
When I successfully run `berks install`
|
33
|
-
Then the output should warn about the old lockfile format
|
34
|
-
And the Lockfile should have:
|
35
|
-
| fake | 1.0.0 |
|
22
|
+
DEPENDENCIES
|
23
|
+
fake (= 1.0.0)
|
36
24
|
|
37
|
-
|
38
|
-
|
39
|
-
And I have a Berksfile pointing at the local Berkshelf API with:
|
40
|
-
"""
|
41
|
-
cookbook 'fake', '0.0.0', path: './fake'
|
25
|
+
GRAPH
|
26
|
+
fake (1.0.0)
|
42
27
|
"""
|
43
|
-
And I write to "Berksfile.lock" with:
|
44
|
-
"""
|
45
|
-
cookbook 'fake', :locked_version => '0.0.0', path: '../../tmp/aruba/fake'
|
46
|
-
"""
|
47
|
-
When I successfully run `berks install`
|
48
|
-
Then the output should warn about the old lockfile format
|
49
|
-
Then the Lockfile should have:
|
50
|
-
| fake | ./fake |
|
51
28
|
|
52
29
|
Scenario: Writing the Berksfile.lock when a 2.0 lockfile is present
|
53
30
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
@@ -65,19 +42,39 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
65
42
|
}
|
66
43
|
"""
|
67
44
|
When I successfully run `berks install`
|
68
|
-
Then the
|
69
|
-
|
45
|
+
Then the output should contain:
|
46
|
+
"""
|
47
|
+
It looks like you are using an older version of the lockfile.
|
48
|
+
"""
|
49
|
+
And the file "Berksfile.lock" should contain:
|
50
|
+
"""
|
51
|
+
DEPENDENCIES
|
52
|
+
fake (= 1.0.0)
|
53
|
+
|
54
|
+
GRAPH
|
55
|
+
fake (1.0.0)
|
56
|
+
"""
|
70
57
|
|
71
58
|
Scenario: Reading the Berksfile.lock when it contains an invalid path location
|
72
59
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
73
60
|
"""
|
74
61
|
cookbook 'fake'
|
75
62
|
"""
|
76
|
-
And
|
77
|
-
|
63
|
+
And I write to "Berksfile.lock" with:
|
64
|
+
"""
|
65
|
+
DEPENDENCIES
|
66
|
+
non-existent (~> 0.1)
|
67
|
+
path: /this/path/does/not/exist
|
68
|
+
"""
|
78
69
|
When I successfully run `berks install`
|
79
|
-
|
80
|
-
|
70
|
+
And the file "Berksfile.lock" should contain:
|
71
|
+
"""
|
72
|
+
DEPENDENCIES
|
73
|
+
fake
|
74
|
+
|
75
|
+
GRAPH
|
76
|
+
fake (1.0.0)
|
77
|
+
"""
|
81
78
|
|
82
79
|
Scenario: Installing a cookbook with dependencies
|
83
80
|
Given the cookbook store has the cookbooks:
|
@@ -89,42 +86,85 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
89
86
|
cookbook 'fake', '1.0.0'
|
90
87
|
"""
|
91
88
|
When I successfully run `berks install`
|
92
|
-
Then the
|
93
|
-
|
94
|
-
|
89
|
+
Then the file "Berksfile.lock" should contain:
|
90
|
+
"""
|
91
|
+
DEPENDENCIES
|
92
|
+
fake (= 1.0.0)
|
93
|
+
|
94
|
+
GRAPH
|
95
|
+
dep (1.0.0)
|
96
|
+
fake (1.0.0)
|
97
|
+
dep (~> 1.0.0)
|
98
|
+
"""
|
95
99
|
|
96
100
|
Scenario: Writing the Berksfile.lock with a pessimistic lock
|
97
101
|
And I have a Berksfile pointing at the local Berkshelf API with:
|
98
102
|
"""
|
99
103
|
cookbook 'fake', '~> 1.0.0'
|
100
104
|
"""
|
101
|
-
And
|
102
|
-
|
105
|
+
And I write to "Berksfile.lock" with:
|
106
|
+
"""
|
107
|
+
DEPENDENCIES
|
108
|
+
fake (~> 1.0.0)
|
109
|
+
|
110
|
+
GRAPH
|
111
|
+
fake (1.0.0)
|
112
|
+
"""
|
103
113
|
When I successfully run `berks install`
|
104
|
-
Then the
|
105
|
-
|
114
|
+
Then the file "Berksfile.lock" should contain:
|
115
|
+
"""
|
116
|
+
DEPENDENCIES
|
117
|
+
fake (~> 1.0.0)
|
118
|
+
|
119
|
+
GRAPH
|
120
|
+
fake (1.0.0)
|
121
|
+
"""
|
106
122
|
|
107
123
|
Scenario: Updating with a Berksfile.lock with pessimistic lock
|
108
124
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
109
125
|
"""
|
110
126
|
cookbook 'fake', '~> 0.1'
|
111
127
|
"""
|
112
|
-
And
|
113
|
-
|
128
|
+
And I write to "Berksfile.lock" with:
|
129
|
+
"""
|
130
|
+
DEPENDENCIES
|
131
|
+
fake (~> 0.1)
|
132
|
+
|
133
|
+
GRAPH
|
134
|
+
fake (0.1.0)
|
135
|
+
"""
|
114
136
|
When I successfully run `berks update fake`
|
115
|
-
Then the
|
116
|
-
|
137
|
+
Then the file "Berksfile.lock" should contain:
|
138
|
+
"""
|
139
|
+
DEPENDENCIES
|
140
|
+
fake (~> 0.1)
|
141
|
+
|
142
|
+
GRAPH
|
143
|
+
fake (0.2.0)
|
144
|
+
"""
|
117
145
|
|
118
146
|
Scenario: Updating with a Berksfile.lock with hard lock
|
119
147
|
And I have a Berksfile pointing at the local Berkshelf API with:
|
120
148
|
"""
|
121
149
|
cookbook 'fake', '0.1.0'
|
122
150
|
"""
|
123
|
-
And
|
124
|
-
|
151
|
+
And I write to "Berksfile.lock" with:
|
152
|
+
"""
|
153
|
+
DEPENDENCIES
|
154
|
+
fake (= 0.1.0)
|
155
|
+
|
156
|
+
GRAPH
|
157
|
+
fake (0.1.0)
|
158
|
+
"""
|
125
159
|
When I successfully run `berks update fake`
|
126
|
-
Then the
|
127
|
-
|
160
|
+
Then the file "Berksfile.lock" should contain:
|
161
|
+
"""
|
162
|
+
DEPENDENCIES
|
163
|
+
fake (= 0.1.0)
|
164
|
+
|
165
|
+
GRAPH
|
166
|
+
fake (0.1.0)
|
167
|
+
"""
|
128
168
|
|
129
169
|
Scenario: Updating a Berksfile.lock with a git location
|
130
170
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
@@ -132,8 +172,16 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
132
172
|
cookbook 'berkshelf-cookbook-fixture', git: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git', ref: '919afa0c4'
|
133
173
|
"""
|
134
174
|
When I successfully run `berks install`
|
135
|
-
Then the
|
136
|
-
|
175
|
+
Then the file "Berksfile.lock" should contain:
|
176
|
+
"""
|
177
|
+
DEPENDENCIES
|
178
|
+
berkshelf-cookbook-fixture
|
179
|
+
git: git://github.com/RiotGames/berkshelf-cookbook-fixture.git
|
180
|
+
ref: 919afa0c402089df23ebdf36637f12271b8a96b4
|
181
|
+
|
182
|
+
GRAPH
|
183
|
+
berkshelf-cookbook-fixture (1.0.0)
|
184
|
+
"""
|
137
185
|
|
138
186
|
Scenario: Updating a Berksfile.lock with a git location and a branch
|
139
187
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
@@ -141,8 +189,17 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
141
189
|
cookbook 'berkshelf-cookbook-fixture', git: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git', branch: 'master'
|
142
190
|
"""
|
143
191
|
When I successfully run `berks install`
|
144
|
-
Then the
|
145
|
-
|
192
|
+
Then the file "Berksfile.lock" should contain:
|
193
|
+
"""
|
194
|
+
DEPENDENCIES
|
195
|
+
berkshelf-cookbook-fixture
|
196
|
+
git: git://github.com/RiotGames/berkshelf-cookbook-fixture.git
|
197
|
+
branch: master
|
198
|
+
ref: a97b9447cbd41a5fe58eee2026e48ccb503bd3bc
|
199
|
+
|
200
|
+
GRAPH
|
201
|
+
berkshelf-cookbook-fixture (1.0.0)
|
202
|
+
"""
|
146
203
|
|
147
204
|
Scenario: Updating a Berksfile.lock with a git location and a branch
|
148
205
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
@@ -150,8 +207,17 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
150
207
|
cookbook 'berkshelf-cookbook-fixture', git: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git', tag: 'v0.2.0'
|
151
208
|
"""
|
152
209
|
When I successfully run `berks install`
|
153
|
-
Then the
|
154
|
-
|
210
|
+
Then the file "Berksfile.lock" should contain:
|
211
|
+
"""
|
212
|
+
DEPENDENCIES
|
213
|
+
berkshelf-cookbook-fixture
|
214
|
+
git: git://github.com/RiotGames/berkshelf-cookbook-fixture.git
|
215
|
+
branch: v0.2.0
|
216
|
+
ref: 70a527e17d91f01f031204562460ad1c17f972ee
|
217
|
+
|
218
|
+
GRAPH
|
219
|
+
berkshelf-cookbook-fixture (0.2.0)
|
220
|
+
"""
|
155
221
|
|
156
222
|
Scenario: Updating a Berksfile.lock with a GitHub location
|
157
223
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
@@ -159,8 +225,16 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
159
225
|
cookbook 'berkshelf-cookbook-fixture', github: 'RiotGames/berkshelf-cookbook-fixture', ref: '919afa0c4'
|
160
226
|
"""
|
161
227
|
When I successfully run `berks install`
|
162
|
-
Then the
|
163
|
-
|
228
|
+
Then the file "Berksfile.lock" should contain:
|
229
|
+
"""
|
230
|
+
DEPENDENCIES
|
231
|
+
berkshelf-cookbook-fixture
|
232
|
+
git: git://github.com/RiotGames/berkshelf-cookbook-fixture.git
|
233
|
+
ref: 919afa0c402089df23ebdf36637f12271b8a96b4
|
234
|
+
|
235
|
+
GRAPH
|
236
|
+
berkshelf-cookbook-fixture (1.0.0)
|
237
|
+
"""
|
164
238
|
|
165
239
|
Scenario: Updating a Berksfile.lock when a git location with :rel
|
166
240
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
@@ -168,8 +242,18 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
168
242
|
cookbook 'berkshelf-cookbook-fixture', github: 'RiotGames/berkshelf-cookbook-fixture', branch: 'rel', rel: 'cookbooks/berkshelf-cookbook-fixture'
|
169
243
|
"""
|
170
244
|
When I successfully run `berks install`
|
171
|
-
Then the
|
172
|
-
|
245
|
+
Then the file "Berksfile.lock" should contain:
|
246
|
+
"""
|
247
|
+
DEPENDENCIES
|
248
|
+
berkshelf-cookbook-fixture
|
249
|
+
git: git://github.com/RiotGames/berkshelf-cookbook-fixture.git
|
250
|
+
branch: rel
|
251
|
+
ref: 93f5768b7d14df45e10d16c8bf6fe98ba3ff809a
|
252
|
+
rel: cookbooks/berkshelf-cookbook-fixture
|
253
|
+
|
254
|
+
GRAPH
|
255
|
+
berkshelf-cookbook-fixture (1.0.0)
|
256
|
+
"""
|
173
257
|
|
174
258
|
Scenario: Updating a Berksfile.lock with a path location
|
175
259
|
Given a cookbook named "fake"
|
@@ -178,8 +262,15 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
178
262
|
cookbook 'fake', path: './fake'
|
179
263
|
"""
|
180
264
|
When I successfully run `berks install`
|
181
|
-
Then the
|
182
|
-
|
265
|
+
Then the file "Berksfile.lock" should contain:
|
266
|
+
"""
|
267
|
+
DEPENDENCIES
|
268
|
+
fake
|
269
|
+
path: ./fake
|
270
|
+
|
271
|
+
GRAPH
|
272
|
+
fake (0.0.0)
|
273
|
+
"""
|
183
274
|
|
184
275
|
Scenario: Installing a Berksfile with a metadata location
|
185
276
|
Given a cookbook named "fake"
|
@@ -189,29 +280,59 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
189
280
|
metadata
|
190
281
|
"""
|
191
282
|
When I successfully run `berks install`
|
192
|
-
Then the
|
193
|
-
|
283
|
+
Then the file "Berksfile.lock" should contain:
|
284
|
+
"""
|
285
|
+
DEPENDENCIES
|
286
|
+
fake
|
287
|
+
path: .
|
288
|
+
metadata: true
|
194
289
|
|
195
|
-
|
290
|
+
GRAPH
|
291
|
+
fake (0.0.0)
|
292
|
+
"""
|
293
|
+
|
294
|
+
Scenario: Installing a Berksfile with a locked metadata location
|
196
295
|
Given a cookbook named "fake"
|
197
296
|
And I cd to "fake"
|
198
297
|
And I have a Berksfile pointing at the local Berkshelf API with:
|
199
298
|
"""
|
200
299
|
metadata
|
201
300
|
"""
|
202
|
-
And
|
203
|
-
|
301
|
+
And I write to "Berksfile.lock" with:
|
302
|
+
"""
|
303
|
+
DEPENDENCIES
|
304
|
+
fake
|
305
|
+
path: .
|
306
|
+
metadata: true
|
307
|
+
|
308
|
+
GRAPH
|
309
|
+
fake (0.0.0)
|
310
|
+
"""
|
204
311
|
When I successfully run `berks install`
|
205
|
-
Then the
|
206
|
-
|
312
|
+
Then the file "Berksfile.lock" should contain:
|
313
|
+
"""
|
314
|
+
DEPENDENCIES
|
315
|
+
fake
|
316
|
+
path: .
|
317
|
+
metadata: true
|
318
|
+
|
319
|
+
GRAPH
|
320
|
+
fake (0.0.0)
|
321
|
+
"""
|
207
322
|
|
208
323
|
Scenario: Installing when the locked version is no longer satisfied
|
209
324
|
Given I have a Berksfile pointing at the local Berkshelf API with:
|
210
325
|
"""
|
211
326
|
cookbook 'fake', '~> 1.3.0'
|
212
327
|
"""
|
213
|
-
And
|
214
|
-
|
328
|
+
And I write to "Berksfile.lock" with:
|
329
|
+
"""
|
330
|
+
DEPENDENCIES
|
331
|
+
fake (~> 1.3.0)
|
332
|
+
|
333
|
+
GRAPH
|
334
|
+
fake (1.0.0)
|
335
|
+
"""
|
215
336
|
When I run `berks install`
|
216
337
|
Then the output should contain:
|
217
338
|
"""
|
@@ -250,6 +371,6 @@ Feature: Creating and reading the Berkshelf lockfile
|
|
250
371
|
When I run `berks install`
|
251
372
|
Then the output should contain:
|
252
373
|
"""
|
253
|
-
Error reading the Berkshelf lockfile
|
374
|
+
Error reading the Berkshelf lockfile:
|
254
375
|
"""
|
255
376
|
And the exit status should be "LockfileParserError"
|