berkshelf 2.0.0.beta → 2.0.0
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 +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"
|