berkshelf 2.0.0.beta → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +19 -1
- data/CONTRIBUTING.md +1 -3
- data/Gemfile +0 -20
- data/Guardfile +3 -3
- data/LICENSE +6 -5
- data/README.md +1 -0
- data/Thorfile +48 -67
- data/berkshelf.gemspec +48 -37
- data/features/apply_command.feature +17 -11
- data/features/config.feature +11 -11
- data/features/configure_command.feature +8 -8
- data/features/contingent_command.feature +37 -8
- data/features/cookbook_command.feature +17 -14
- data/features/groups_install.feature +24 -20
- data/features/install_command.feature +24 -33
- data/features/licenses.feature +112 -0
- data/features/list_command.feature +17 -5
- data/features/lockfile.feature +307 -188
- data/features/outdated_command.feature +1 -4
- data/features/package_command.feature +41 -19
- data/features/shelf/list.feature +39 -0
- data/features/shelf/show.feature +152 -0
- data/features/shelf/uninstall.feature +103 -0
- data/features/show_command.feature +49 -17
- data/features/step_definitions/filesystem_steps.rb +12 -3
- data/features/step_definitions/utility_steps.rb +0 -1
- data/features/support/env.rb +11 -4
- data/features/update_command.feature +22 -10
- data/features/upload_command.feature +174 -127
- data/features/vendor_install.feature +6 -6
- data/generator_files/Berksfile.erb +1 -1
- data/generator_files/metadata.rb.erb +7 -7
- data/lib/berkshelf.rb +39 -27
- data/lib/berkshelf/base_generator.rb +2 -3
- data/lib/berkshelf/berksfile.rb +69 -17
- data/lib/berkshelf/cached_cookbook.rb +17 -1
- data/lib/berkshelf/chef.rb +2 -4
- data/lib/berkshelf/chef/config.rb +51 -75
- data/lib/berkshelf/chef/cookbook.rb +1 -2
- data/lib/berkshelf/chef/cookbook/chefignore.rb +1 -1
- data/lib/berkshelf/cli.rb +144 -194
- data/lib/berkshelf/command.rb +11 -12
- data/lib/berkshelf/commands/shelf.rb +130 -0
- data/lib/berkshelf/commands/test_command.rb +11 -0
- data/lib/berkshelf/community_rest.rb +1 -2
- data/lib/berkshelf/config.rb +14 -10
- data/lib/berkshelf/cookbook_generator.rb +30 -24
- data/lib/berkshelf/cookbook_source.rb +1 -1
- data/lib/berkshelf/cookbook_store.rb +0 -1
- data/lib/berkshelf/core_ext.rb +1 -1
- data/lib/berkshelf/core_ext/file.rb +1 -1
- data/lib/berkshelf/downloader.rb +3 -1
- data/lib/berkshelf/errors.rb +128 -53
- data/lib/berkshelf/formatters.rb +2 -6
- data/lib/berkshelf/formatters/human_readable.rb +8 -2
- data/lib/berkshelf/formatters/json.rb +7 -1
- data/lib/berkshelf/formatters/null.rb +0 -1
- data/lib/berkshelf/git.rb +16 -16
- data/lib/berkshelf/init_generator.rb +28 -26
- data/lib/berkshelf/location.rb +12 -11
- data/lib/berkshelf/locations/chef_api_location.rb +2 -2
- data/lib/berkshelf/locations/git_location.rb +0 -1
- data/lib/berkshelf/locations/github_location.rb +0 -1
- data/lib/berkshelf/locations/path_location.rb +1 -2
- data/lib/berkshelf/locations/site_location.rb +3 -2
- data/lib/berkshelf/lockfile.rb +29 -10
- data/lib/berkshelf/mixin/config.rb +155 -0
- data/lib/berkshelf/mixin/logging.rb +0 -1
- data/lib/berkshelf/mixin/shellout.rb +71 -0
- data/lib/berkshelf/resolver.rb +7 -4
- data/lib/berkshelf/test.rb +1 -3
- data/lib/berkshelf/ui.rb +8 -4
- data/lib/berkshelf/version.rb +1 -1
- data/lib/thor/monkies/shell.rb +0 -1
- data/spec/config/berkshelf.pem +27 -0
- data/spec/config/knife.rb +12 -0
- data/spec/config/validator.pem +27 -0
- data/spec/spec_helper.rb +4 -8
- data/spec/support/chef_api.rb +14 -9
- data/spec/support/chef_server.rb +3 -4
- data/spec/unit/berkshelf/berksfile_spec.rb +1 -1
- data/spec/unit/berkshelf/cookbook_generator_spec.rb +12 -6
- data/spec/unit/berkshelf/cookbook_source_spec.rb +13 -1
- data/spec/unit/berkshelf/init_generator_spec.rb +5 -0
- data/spec/unit/chef/config_spec.rb +9 -10
- metadata +216 -93
- data/features/info_command.feature +0 -39
- data/features/open_command.feature +0 -36
- data/lib/berkshelf/cli_commands/test_command.rb +0 -11
- data/lib/berkshelf/mixin.rb +0 -10
- data/lib/berkshelf/mixin/path_helpers.rb +0 -30
- data/spec/support/knife.rb +0 -18
@@ -1,4 +1,4 @@
|
|
1
|
-
Feature: outdated
|
1
|
+
Feature: Displaying outdated cookbooks
|
2
2
|
As a user
|
3
3
|
I want to know what cookbooks are outdated before I run update
|
4
4
|
So that I can decide whether to update everything at once
|
@@ -7,7 +7,6 @@ Feature: outdated command
|
|
7
7
|
Given I write to "Berksfile" with:
|
8
8
|
"""
|
9
9
|
site :opscode
|
10
|
-
|
11
10
|
cookbook 'berkshelf-cookbook-fixture'
|
12
11
|
"""
|
13
12
|
When I successfully run `berks outdated`
|
@@ -24,7 +23,6 @@ Feature: outdated command
|
|
24
23
|
Given I write to "Berksfile" with:
|
25
24
|
"""
|
26
25
|
site :opscode
|
27
|
-
|
28
26
|
cookbook 'berkshelf-cookbook-fixture', '>= 0.1'
|
29
27
|
"""
|
30
28
|
When I run `berks outdated`
|
@@ -41,7 +39,6 @@ Feature: outdated command
|
|
41
39
|
Given I write to "Berksfile" with:
|
42
40
|
"""
|
43
41
|
site :opscode
|
44
|
-
|
45
42
|
cookbook 'berkshelf-cookbook-fixture', '~> 0.1'
|
46
43
|
"""
|
47
44
|
When I run `berks outdated`
|
@@ -1,39 +1,61 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: Packaging a cookbook as a tarball for distribution
|
2
2
|
As a user
|
3
3
|
I want to be able to package a cookbook
|
4
4
|
So that I can use it outside of Berkshelf
|
5
5
|
|
6
|
-
Scenario:
|
7
|
-
Given
|
6
|
+
Scenario: When no options are passed
|
7
|
+
Given the cookbook store has the cookbooks:
|
8
|
+
| fake | 1.0.0 |
|
9
|
+
And I write to "Berksfile" with:
|
8
10
|
"""
|
9
11
|
site :opscode
|
10
|
-
cookbook '
|
12
|
+
cookbook 'fake', '~> 1.0.0'
|
13
|
+
"""
|
14
|
+
When I successfully run `berks package fake`
|
15
|
+
Then a file named "fake.tar.gz" should exist
|
16
|
+
And the output should contain:
|
17
|
+
"""
|
18
|
+
Cookbook(s) packaged to
|
11
19
|
"""
|
12
|
-
And I successfully run `berks install`
|
13
|
-
When I successfully run `berks package berkshelf-cookbook-fixture`
|
14
|
-
Then a file named "berkshelf-cookbook-fixture.tar.gz" should exist
|
15
|
-
And the output should contain "Cookbook 'berkshelf-cookbook-fixture' saved to "
|
16
20
|
And the exit status should be 0
|
17
21
|
|
18
|
-
Scenario:
|
19
|
-
Given
|
22
|
+
Scenario: With the --output option
|
23
|
+
Given the cookbook store has the cookbooks:
|
24
|
+
| fake | 1.0.0 |
|
25
|
+
And I write to "Berksfile" with:
|
20
26
|
"""
|
21
27
|
site :opscode
|
22
|
-
cookbook '
|
28
|
+
cookbook 'fake', '~> 1.0.0'
|
23
29
|
"""
|
24
|
-
|
25
|
-
|
26
|
-
Then a file named "foo/bar/berkshelf-cookbook-fixture.tar.gz" should exist
|
30
|
+
When I successfully run `berks package fake --output foo/bar`
|
31
|
+
Then a file named "foo/bar/fake.tar.gz" should exist
|
27
32
|
And the exit status should be 0
|
28
33
|
|
29
|
-
Scenario:
|
30
|
-
Given
|
34
|
+
Scenario: With an installed cookbook name
|
35
|
+
Given the cookbook store has the cookbooks:
|
36
|
+
| fake | 1.0.0 |
|
37
|
+
And I write to "Berksfile" with:
|
31
38
|
"""
|
32
39
|
site :opscode
|
33
|
-
cookbook '
|
40
|
+
cookbook 'fake', '~> 1.0.0'
|
34
41
|
"""
|
35
|
-
And I successfully run `berks install`
|
36
42
|
When I run `berks package non-existent`
|
37
43
|
Then a file named "non-existent.tar.gz" should not exist
|
38
|
-
And the output should contain
|
44
|
+
And the output should contain:
|
45
|
+
"""
|
46
|
+
Cookbook 'non-existent' is not in your Berksfile
|
47
|
+
"""
|
39
48
|
And the CLI should exit with the status code for error "CookbookNotFound"
|
49
|
+
|
50
|
+
Scenario: With an invalid cookbook
|
51
|
+
Given a cookbook named "cookbook with spaces"
|
52
|
+
And I write to "Berksfile" with:
|
53
|
+
"""
|
54
|
+
cookbook 'cookbook with spaces', path: './cookbook with spaces'
|
55
|
+
"""
|
56
|
+
When I run `berks package`
|
57
|
+
Then the output should contain:
|
58
|
+
"""
|
59
|
+
The cookbook 'cookbook with spaces' has invalid filenames:
|
60
|
+
"""
|
61
|
+
And the CLI should exit with the status code for error "InvalidCookbookFiles"
|
@@ -0,0 +1,39 @@
|
|
1
|
+
Feature: Listing all cookbooks in the Berkshelf shelf
|
2
|
+
As a user with a cookbook store
|
3
|
+
I want to show all the cookbooks I have installed
|
4
|
+
So that I can be well informed
|
5
|
+
|
6
|
+
Scenario: With no cookbooks in the store
|
7
|
+
When I successfully run `berks shelf list`
|
8
|
+
Then the output should contain:
|
9
|
+
"""
|
10
|
+
There are no cookbooks in the Berkshelf shelf
|
11
|
+
"""
|
12
|
+
And the exit status should be 0
|
13
|
+
|
14
|
+
Scenario: With two cookbooks in the store
|
15
|
+
Given the cookbook store has the cookbooks:
|
16
|
+
| fake | 1.0.0 |
|
17
|
+
| ekaf | 2.3.4 |
|
18
|
+
When I successfully run `berks shelf list`
|
19
|
+
Then the output should contain:
|
20
|
+
"""
|
21
|
+
Cookbooks in the Berkshelf shelf:
|
22
|
+
* ekaf (2.3.4)
|
23
|
+
* fake (1.0.0)
|
24
|
+
"""
|
25
|
+
And the exit status should be 0
|
26
|
+
|
27
|
+
Scenario: With multiple cookbook versions installed
|
28
|
+
Given the cookbook store has the cookbooks:
|
29
|
+
| fake | 1.0.0 |
|
30
|
+
| fake | 1.1.0 |
|
31
|
+
| fake | 1.2.0 |
|
32
|
+
| fake | 2.0.0 |
|
33
|
+
When I successfully run `berks shelf list`
|
34
|
+
Then the output should contain:
|
35
|
+
"""
|
36
|
+
Cookbooks in the Berkshelf shelf:
|
37
|
+
* fake (1.0.0, 1.1.0, 1.2.0, 2.0.0)
|
38
|
+
"""
|
39
|
+
And the exit status should be 0
|
@@ -0,0 +1,152 @@
|
|
1
|
+
Feature: Displaying information about a cookbook in the Berkshelf shelf
|
2
|
+
As a user with a cookbook store
|
3
|
+
I want to show information about a specific cookbook in my cookbook store
|
4
|
+
So that I can be well informed
|
5
|
+
|
6
|
+
Scenario: With a cookbook that is not in the store
|
7
|
+
When I run `berks shelf show fake`
|
8
|
+
Then the output should contain:
|
9
|
+
"""
|
10
|
+
Cookbook 'fake' is not in the Berkshelf shelf
|
11
|
+
"""
|
12
|
+
And the CLI should exit with the status code for error "CookbookNotFound"
|
13
|
+
|
14
|
+
Scenario: With cookbooks in the store
|
15
|
+
Given the cookbook store has the cookbooks:
|
16
|
+
| fake | 1.0.0 |
|
17
|
+
| ekaf | 2.3.4 |
|
18
|
+
When I successfully run `berks shelf show fake`
|
19
|
+
Then the output should contain:
|
20
|
+
"""
|
21
|
+
Displaying all versions of 'fake' in the Berkshelf shelf:
|
22
|
+
Name: fake
|
23
|
+
Version: 1.0.0
|
24
|
+
Description: A fabulous new cookbook
|
25
|
+
Author: YOUR_COMPANY_NAME
|
26
|
+
Email: YOUR_EMAIL
|
27
|
+
License: none
|
28
|
+
"""
|
29
|
+
And the output should not contain:
|
30
|
+
"""
|
31
|
+
Name: ekaf
|
32
|
+
"""
|
33
|
+
And the exit status should be 0
|
34
|
+
|
35
|
+
|
36
|
+
Scenario: With cookbooks in the store and the --version option
|
37
|
+
Given the cookbook store has the cookbooks:
|
38
|
+
| fake | 1.0.0 |
|
39
|
+
| ekaf | 2.3.4 |
|
40
|
+
When I successfully run `berks shelf show fake --version 1.0.0`
|
41
|
+
Then the output should contain:
|
42
|
+
"""
|
43
|
+
Displaying 'fake' (1.0.0) in the Berkshelf shelf:
|
44
|
+
Name: fake
|
45
|
+
Version: 1.0.0
|
46
|
+
Description: A fabulous new cookbook
|
47
|
+
Author: YOUR_COMPANY_NAME
|
48
|
+
Email: YOUR_EMAIL
|
49
|
+
License: none
|
50
|
+
"""
|
51
|
+
And the output should not contain:
|
52
|
+
"""
|
53
|
+
Name: ekaf
|
54
|
+
"""
|
55
|
+
And the exit status should be 0
|
56
|
+
|
57
|
+
Scenario: With cookbooks in the store and the --version option doesn't exist
|
58
|
+
Given the cookbook store has the cookbooks:
|
59
|
+
| fake | 1.0.0 |
|
60
|
+
| ekaf | 2.3.4 |
|
61
|
+
When I run `berks shelf show fake --version 1.2.3`
|
62
|
+
Then the output should contain:
|
63
|
+
"""
|
64
|
+
Cookbook 'fake' (1.2.3) is not in the Berkshelf shelf
|
65
|
+
"""
|
66
|
+
And the CLI should exit with the status code for error "CookbookNotFound"
|
67
|
+
|
68
|
+
Scenario: With multiple cookbook versions installed
|
69
|
+
Given the cookbook store has the cookbooks:
|
70
|
+
| fake | 1.0.0 |
|
71
|
+
| fake | 1.1.0 |
|
72
|
+
| fake | 1.2.0 |
|
73
|
+
| fake | 2.0.0 |
|
74
|
+
When I successfully run `berks shelf show fake`
|
75
|
+
Then the output should contain:
|
76
|
+
"""
|
77
|
+
Displaying all versions of 'fake' in the Berkshelf shelf:
|
78
|
+
Name: fake
|
79
|
+
Version: 1.0.0
|
80
|
+
Description: A fabulous new cookbook
|
81
|
+
Author: YOUR_COMPANY_NAME
|
82
|
+
Email: YOUR_EMAIL
|
83
|
+
License: none
|
84
|
+
|
85
|
+
Name: fake
|
86
|
+
Version: 1.1.0
|
87
|
+
Description: A fabulous new cookbook
|
88
|
+
Author: YOUR_COMPANY_NAME
|
89
|
+
Email: YOUR_EMAIL
|
90
|
+
License: none
|
91
|
+
|
92
|
+
Name: fake
|
93
|
+
Version: 1.2.0
|
94
|
+
Description: A fabulous new cookbook
|
95
|
+
Author: YOUR_COMPANY_NAME
|
96
|
+
Email: YOUR_EMAIL
|
97
|
+
License: none
|
98
|
+
|
99
|
+
Name: fake
|
100
|
+
Version: 2.0.0
|
101
|
+
Description: A fabulous new cookbook
|
102
|
+
Author: YOUR_COMPANY_NAME
|
103
|
+
Email: YOUR_EMAIL
|
104
|
+
License: none
|
105
|
+
"""
|
106
|
+
And the exit status should be 0
|
107
|
+
|
108
|
+
Scenario: With multiple cookbook versions installed and the --version flag
|
109
|
+
Given the cookbook store has the cookbooks:
|
110
|
+
| fake | 1.0.0 |
|
111
|
+
| fake | 1.1.0 |
|
112
|
+
| fake | 1.2.0 |
|
113
|
+
| fake | 2.0.0 |
|
114
|
+
When I successfully run `berks shelf show fake --version 1.0.0`
|
115
|
+
Then the output should contain:
|
116
|
+
"""
|
117
|
+
Displaying 'fake' (1.0.0) in the Berkshelf shelf:
|
118
|
+
Name: fake
|
119
|
+
Version: 1.0.0
|
120
|
+
Description: A fabulous new cookbook
|
121
|
+
Author: YOUR_COMPANY_NAME
|
122
|
+
Email: YOUR_EMAIL
|
123
|
+
License: none
|
124
|
+
"""
|
125
|
+
And the output should not contain:
|
126
|
+
"""
|
127
|
+
Name: fake
|
128
|
+
Version: 1.1.0
|
129
|
+
Description: A fabulous new cookbook
|
130
|
+
Author: YOUR_COMPANY_NAME
|
131
|
+
Email: YOUR_EMAIL
|
132
|
+
License: none
|
133
|
+
"""
|
134
|
+
And the output should not contain:
|
135
|
+
"""
|
136
|
+
Name: fake
|
137
|
+
Version: 1.2.0
|
138
|
+
Description: A fabulous new cookbook
|
139
|
+
Author: YOUR_COMPANY_NAME
|
140
|
+
Email: YOUR_EMAIL
|
141
|
+
License: none
|
142
|
+
"""
|
143
|
+
And the output should not contain:
|
144
|
+
"""
|
145
|
+
Name: fake
|
146
|
+
Version: 2.0.0
|
147
|
+
Description: A fabulous new cookbook
|
148
|
+
Author: YOUR_COMPANY_NAME
|
149
|
+
Email: YOUR_EMAIL
|
150
|
+
License: none
|
151
|
+
"""
|
152
|
+
And the exit status should be 0
|
@@ -0,0 +1,103 @@
|
|
1
|
+
Feature: Removing a cookbook from the Berkshelf shelf
|
2
|
+
As a user with a cookbook store
|
3
|
+
I want to remove a cookbook because it's a bad version
|
4
|
+
So that I don't have to manually touch things in the ~/.berkshelf directory
|
5
|
+
|
6
|
+
Scenario: With no cookbooks in the store
|
7
|
+
When I run `berks shelf uninstall fake`
|
8
|
+
Then the output should contain:
|
9
|
+
"""
|
10
|
+
Cookbook 'fake' is not in the Berkshelf shelf
|
11
|
+
"""
|
12
|
+
And the CLI should exit with the status code for error "CookbookNotFound"
|
13
|
+
|
14
|
+
Scenario: With two cookbooks in the store
|
15
|
+
Given the cookbook store has the cookbooks:
|
16
|
+
| fake | 1.0.0 |
|
17
|
+
| ekaf | 2.3.4 |
|
18
|
+
When I successfully run `berks shelf uninstall fake`
|
19
|
+
Then the output should contain:
|
20
|
+
"""
|
21
|
+
Successfully uninstalled fake (1.0.0)
|
22
|
+
"""
|
23
|
+
And the cookbook store should not have the cookbooks:
|
24
|
+
| fake | 1.0.0 |
|
25
|
+
And the cookbook store should have the cookbooks:
|
26
|
+
| ekaf | 2.3.4 |
|
27
|
+
And the exit status should be 0
|
28
|
+
|
29
|
+
|
30
|
+
Scenario: With multiple cookbook versions installed
|
31
|
+
Given the cookbook store has the cookbooks:
|
32
|
+
| fake | 1.0.0 |
|
33
|
+
| fake | 1.1.0 |
|
34
|
+
| fake | 1.2.0 |
|
35
|
+
| fake | 2.0.0 |
|
36
|
+
When I successfully run `berks shelf uninstall fake`
|
37
|
+
Then the output should contain:
|
38
|
+
"""
|
39
|
+
Successfully uninstalled fake (1.0.0)
|
40
|
+
Successfully uninstalled fake (1.1.0)
|
41
|
+
Successfully uninstalled fake (1.2.0)
|
42
|
+
Successfully uninstalled fake (2.0.0)
|
43
|
+
"""
|
44
|
+
And the cookbook store should not have the cookbooks:
|
45
|
+
| fake | 1.0.0 |
|
46
|
+
| fake | 1.1.0 |
|
47
|
+
| fake | 1.2.0 |
|
48
|
+
| fake | 2.0.0 |
|
49
|
+
And the exit status should be 0
|
50
|
+
|
51
|
+
Scenario: When specifying a version
|
52
|
+
Given the cookbook store has the cookbooks:
|
53
|
+
| fake | 1.0.0 |
|
54
|
+
| fake | 1.1.0 |
|
55
|
+
| fake | 1.2.0 |
|
56
|
+
| fake | 2.0.0 |
|
57
|
+
When I successfully run `berks shelf uninstall fake --version 1.0.0`
|
58
|
+
Then the output should contain:
|
59
|
+
"""
|
60
|
+
Successfully uninstalled fake (1.0.0)
|
61
|
+
"""
|
62
|
+
And the cookbook store should not have the cookbooks:
|
63
|
+
| fake | 1.0.0 |
|
64
|
+
And the cookbook store should have the cookbooks:
|
65
|
+
| fake | 1.1.0 |
|
66
|
+
| fake | 1.2.0 |
|
67
|
+
| fake | 2.0.0 |
|
68
|
+
And the exit status should be 0
|
69
|
+
|
70
|
+
Scenario: With contingencies
|
71
|
+
Given the cookbook store contains a cookbook "fake" "1.0.0" with dependencies:
|
72
|
+
| ekaf | 2.3.4 |
|
73
|
+
And the cookbook store has the cookbooks:
|
74
|
+
| ekaf | 2.3.4 |
|
75
|
+
When I run `berks shelf uninstall ekaf` interactively
|
76
|
+
And I type "yes"
|
77
|
+
Then the output should contain:
|
78
|
+
"""
|
79
|
+
[fake (1.0.0)] depend on ekaf.
|
80
|
+
|
81
|
+
Are you sure you want to continue? (y/N)
|
82
|
+
"""
|
83
|
+
And the output should contain:
|
84
|
+
"""
|
85
|
+
Successfully uninstalled ekaf (2.3.4)
|
86
|
+
"""
|
87
|
+
And the cookbook store should not have the cookbooks:
|
88
|
+
| ekaf | 2.3.4 |
|
89
|
+
And the exit status should be 0
|
90
|
+
|
91
|
+
Scenario: With contingencies and the --force flag
|
92
|
+
Given the cookbook store contains a cookbook "fake" "1.0.0" with dependencies:
|
93
|
+
| ekaf | 2.3.4 |
|
94
|
+
And the cookbook store has the cookbooks:
|
95
|
+
| ekaf | 2.3.4 |
|
96
|
+
When I run `berks shelf uninstall ekaf --force`
|
97
|
+
Then the output should contain:
|
98
|
+
"""
|
99
|
+
Successfully uninstalled ekaf (2.3.4)
|
100
|
+
"""
|
101
|
+
And the cookbook store should not have the cookbooks:
|
102
|
+
| ekaf | 2.3.4 |
|
103
|
+
And the exit status should be 0
|
@@ -1,26 +1,58 @@
|
|
1
|
-
Feature:
|
2
|
-
As a user
|
3
|
-
I want
|
4
|
-
So that I can
|
1
|
+
Feature: Displaying information about a cookbook defined by a Berksfile
|
2
|
+
As a user
|
3
|
+
I want to be able to view the metadata information of a cached cookbook
|
4
|
+
So that I can troubleshoot bugs or satisfy my own curiosity
|
5
5
|
|
6
|
-
Scenario:
|
6
|
+
Scenario: With no options
|
7
7
|
Given the cookbook store has the cookbooks:
|
8
|
-
|
|
8
|
+
| fake | 1.0.0 |
|
9
9
|
And I write to "Berksfile" with:
|
10
10
|
"""
|
11
|
-
|
12
|
-
|
11
|
+
cookbook 'fake', '1.0.0'
|
12
|
+
"""
|
13
|
+
When I successfully run `berks show fake`
|
14
|
+
Then the output should contain:
|
15
|
+
"""
|
16
|
+
Name: fake
|
17
|
+
Version: 1.0.0
|
18
|
+
Description: A fabulous new cookbook
|
19
|
+
Author: YOUR_COMPANY_NAME
|
20
|
+
Email: YOUR_EMAIL
|
21
|
+
License: none
|
13
22
|
"""
|
14
|
-
When I successfully run `berks show berkshelf-cookbook-fixture`
|
15
|
-
Then the output should contain "berkshelf/tmp/berkshelf/cookbooks/berkshelf-cookbook-fixture-1.0.0"
|
16
|
-
And the exit status should be 0
|
17
23
|
|
18
|
-
Scenario:
|
19
|
-
Given
|
24
|
+
Scenario: When JSON is requested
|
25
|
+
Given the cookbook store has the cookbooks:
|
26
|
+
| fake | 1.0.0 |
|
27
|
+
And I write to "Berksfile" with:
|
28
|
+
"""
|
29
|
+
cookbook 'fake', '1.0.0'
|
20
30
|
"""
|
21
|
-
|
22
|
-
|
31
|
+
When I successfully run `berks show fake --format json`
|
32
|
+
Then the output should contain:
|
23
33
|
"""
|
24
|
-
|
25
|
-
|
34
|
+
{
|
35
|
+
"cookbooks": [
|
36
|
+
{
|
37
|
+
"name": "fake",
|
38
|
+
"version": "1.0.0",
|
39
|
+
"description": "A fabulous new cookbook",
|
40
|
+
"author": "YOUR_COMPANY_NAME",
|
41
|
+
"email": "YOUR_EMAIL",
|
42
|
+
"license": "none"
|
43
|
+
}
|
44
|
+
],
|
45
|
+
"errors": [
|
46
|
+
|
47
|
+
],
|
48
|
+
"messages": [
|
49
|
+
|
50
|
+
]
|
51
|
+
}
|
52
|
+
"""
|
53
|
+
|
54
|
+
Scenario: When the cookbook is not in the Berksfile
|
55
|
+
Given an empty file named "Berksfile"
|
56
|
+
When I run `berks show fake`
|
57
|
+
Then the output should contain "Cookbook 'fake' is not installed by your Berksfile"
|
26
58
|
And the CLI should exit with the status code for error "CookbookNotFound"
|