berkshelf 3.0.0.beta4 → 3.0.0.beta5

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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +6 -0
  4. data/README.md +3 -0
  5. data/berkshelf-complete.sh +10 -3
  6. data/berkshelf.gemspec +12 -11
  7. data/features/berksfile.feature +0 -2
  8. data/features/commands/apply.feature +0 -1
  9. data/features/commands/contingent.feature +0 -3
  10. data/features/commands/cookbook.feature +0 -3
  11. data/features/commands/init.feature +0 -2
  12. data/features/commands/install.feature +42 -35
  13. data/features/commands/list.feature +0 -3
  14. data/features/commands/outdated.feature +0 -4
  15. data/features/commands/package.feature +2 -39
  16. data/features/commands/shelf/list.feature +0 -2
  17. data/features/commands/shelf/show.feature +0 -5
  18. data/features/commands/shelf/uninstall.feature +0 -5
  19. data/features/commands/show.feature +0 -3
  20. data/features/commands/update.feature +0 -3
  21. data/features/commands/upload.feature +0 -13
  22. data/features/commands/vendor.feature +0 -5
  23. data/features/community_site.feature +0 -2
  24. data/features/config.feature +0 -6
  25. data/features/json_formatter.feature +0 -5
  26. data/features/licenses.feature +0 -5
  27. data/features/lockfile.feature +0 -20
  28. data/features/step_definitions/chef_server_steps.rb +8 -2
  29. data/generator_files/Gemfile.erb +2 -2
  30. data/lib/berkshelf.rb +0 -4
  31. data/lib/berkshelf/berksfile.rb +21 -51
  32. data/lib/berkshelf/cli.rb +26 -15
  33. data/lib/berkshelf/config.rb +4 -0
  34. data/lib/berkshelf/cookbook_generator.rb +1 -1
  35. data/lib/berkshelf/cookbook_store.rb +8 -0
  36. data/lib/berkshelf/core_ext/file.rb +2 -2
  37. data/lib/berkshelf/core_ext/pathname.rb +5 -7
  38. data/lib/berkshelf/dependency.rb +8 -1
  39. data/lib/berkshelf/downloader.rb +37 -0
  40. data/lib/berkshelf/errors.rb +1 -0
  41. data/lib/berkshelf/formatters.rb +1 -0
  42. data/lib/berkshelf/formatters/human_readable.rb +23 -9
  43. data/lib/berkshelf/formatters/json.rb +7 -9
  44. data/lib/berkshelf/git.rb +0 -1
  45. data/lib/berkshelf/init_generator.rb +1 -1
  46. data/lib/berkshelf/installer.rb +43 -19
  47. data/lib/berkshelf/location.rb +8 -13
  48. data/lib/berkshelf/locations/git_location.rb +12 -19
  49. data/lib/berkshelf/locations/mercurial_location.rb +5 -18
  50. data/lib/berkshelf/locations/path_location.rb +7 -0
  51. data/lib/berkshelf/lockfile.rb +5 -1
  52. data/lib/berkshelf/packager.rb +73 -0
  53. data/lib/berkshelf/resolver.rb +7 -5
  54. data/lib/berkshelf/resolver/graph.rb +7 -0
  55. data/lib/berkshelf/source.rb +22 -2
  56. data/lib/berkshelf/ui.rb +0 -2
  57. data/lib/berkshelf/version.rb +1 -1
  58. data/spec/support/git.rb +1 -0
  59. data/spec/support/mercurial.rb +37 -36
  60. data/spec/unit/berkshelf/berksfile_spec.rb +2 -34
  61. data/spec/unit/berkshelf/cli_spec.rb +3 -2
  62. data/spec/unit/berkshelf/config_spec.rb +3 -3
  63. data/spec/unit/berkshelf/core_ext/pathname_spec.rb +46 -0
  64. data/spec/unit/berkshelf/dependency_spec.rb +3 -3
  65. data/spec/unit/berkshelf/formatters_spec.rb +4 -4
  66. data/spec/unit/berkshelf/git_spec.rb +8 -8
  67. data/spec/unit/berkshelf/installer_spec.rb +2 -2
  68. data/spec/unit/berkshelf/locations/git_location_spec.rb +2 -8
  69. data/spec/unit/berkshelf/locations/mercurial_location_spec.rb +4 -23
  70. data/spec/unit/berkshelf/lockfile_spec.rb +1 -1
  71. data/spec/unit/berkshelf/mercurial_spec.rb +6 -7
  72. data/spec/unit/berkshelf/packager_spec.rb +39 -0
  73. data/spec/unit/berkshelf/ui_spec.rb +2 -2
  74. data/spec/unit/berkshelf_spec.rb +2 -2
  75. metadata +37 -24
  76. data/lib/berkshelf/api_client.rb +0 -65
  77. data/lib/berkshelf/api_client/remote_cookbook.rb +0 -55
  78. data/spec/unit/berkshelf/api_client/remote_cookbook_spec.rb +0 -23
  79. data/spec/unit/berkshelf/api_client_spec.rb +0 -57
@@ -19,7 +19,6 @@ Feature: berks list
19
19
  * fake2 (1.0.1)
20
20
  """
21
21
 
22
-
23
22
  Scenario: Running the list command when the dependencies aren't downloaded
24
23
  And I have a Berksfile pointing at the local Berkshelf API with:
25
24
  """
@@ -34,7 +33,6 @@ Feature: berks list
34
33
  """
35
34
  And the exit status should be "CookbookNotFound"
36
35
 
37
-
38
36
  Scenario: Running the list command when the lockfile isn't present
39
37
  Given the cookbook store has the cookbooks:
40
38
  | fake | 1.0.0 |
@@ -49,7 +47,6 @@ Feature: berks list
49
47
  """
50
48
  And the exit status should be "CookbookNotFound"
51
49
 
52
-
53
50
  Scenario: Running the list command with no dependencies defined
54
51
  Given I have a Berksfile pointing at the local Berkshelf API
55
52
  When I successfully run `berks list`
@@ -18,7 +18,6 @@ Feature: berks outdated
18
18
  All cookbooks up to date!
19
19
  """
20
20
 
21
-
22
21
  Scenario: the dependency has no version constraint and there are new items
23
22
  Given the Chef Server has cookbooks:
24
23
  | bacon | 1.0.0 |
@@ -39,7 +38,6 @@ Feature: berks outdated
39
38
  * bacon (1.1.0)
40
39
  """
41
40
 
42
-
43
41
  Scenario: the dependency has a version constraint and there are new items that satisfy it
44
42
  Given the Chef Server has cookbooks:
45
43
  | bacon | 1.1.0 |
@@ -61,7 +59,6 @@ Feature: berks outdated
61
59
  * bacon (1.5.8)
62
60
  """
63
61
 
64
-
65
62
  Scenario: When there is no lockfile present
66
63
  And I have a Berksfile pointing at the local Berkshelf API with:
67
64
  """
@@ -74,7 +71,6 @@ Feature: berks outdated
74
71
  """
75
72
  And the exit status should be "CookbookNotFound"
76
73
 
77
-
78
74
  Scenario: When the cookbook is not installed
79
75
  And I have a Berksfile pointing at the local Berkshelf API with:
80
76
  """
@@ -9,46 +9,9 @@ Feature: berks package
9
9
  """
10
10
  cookbook 'fake', '~> 1.0.0'
11
11
  """
12
- When I successfully run `berks package fake`
13
- Then a file named "fake.tar.gz" should exist
12
+ When I successfully run `berks package my-cookbooks.tar.gz`
13
+ Then a file named "my-cookbooks.tar.gz" should exist
14
14
  And the output should contain:
15
15
  """
16
16
  Cookbook(s) packaged to
17
17
  """
18
-
19
-
20
- Scenario: With the --output option
21
- Given I have a Berksfile pointing at the local Berkshelf API with:
22
- """
23
- cookbook 'fake', '~> 1.0.0'
24
- """
25
- When I successfully run `berks package fake --output foo/bar`
26
- Then a file named "foo/bar/fake.tar.gz" should exist
27
-
28
-
29
- Scenario: With an installed cookbook name
30
- Given I have a Berksfile pointing at the local Berkshelf API with:
31
- """
32
- cookbook 'fake', '~> 1.0.0'
33
- """
34
- When I run `berks package non-existent`
35
- Then a file named "non-existent.tar.gz" should not exist
36
- And the output should contain:
37
- """
38
- Cookbook 'non-existent' is not in your Berksfile
39
- """
40
- And the exit status should be "CookbookNotFound"
41
-
42
-
43
- Scenario: With an invalid cookbook
44
- Given a cookbook named "cookbook with spaces"
45
- And I have a Berksfile pointing at the local Berkshelf API with:
46
- """
47
- cookbook 'cookbook with spaces', path: './cookbook with spaces'
48
- """
49
- When I run `berks package`
50
- Then the output should contain:
51
- """
52
- The cookbook 'cookbook with spaces' has invalid filenames:
53
- """
54
- And the exit status should be "InvalidCookbookFiles"
@@ -6,7 +6,6 @@ Feature: berks shelf list
6
6
  There are no cookbooks in the Berkshelf shelf
7
7
  """
8
8
 
9
-
10
9
  Scenario: With two cookbooks in the store
11
10
  Given the cookbook store has the cookbooks:
12
11
  | fake | 1.0.0 |
@@ -19,7 +18,6 @@ Feature: berks shelf list
19
18
  * fake (1.0.0)
20
19
  """
21
20
 
22
-
23
21
  Scenario: With multiple cookbook versions installed
24
22
  Given the cookbook store has the cookbooks:
25
23
  | fake | 1.0.0 |
@@ -7,7 +7,6 @@ Feature: berks shelf show
7
7
  """
8
8
  And the exit status should be "CookbookNotFound"
9
9
 
10
-
11
10
  Scenario: With cookbooks in the store
12
11
  Given the cookbook store has the cookbooks:
13
12
  | fake | 1.0.0 |
@@ -28,7 +27,6 @@ Feature: berks shelf show
28
27
  Name: ekaf
29
28
  """
30
29
 
31
-
32
30
  Scenario: With cookbooks in the store and the --version option
33
31
  Given the cookbook store has the cookbooks:
34
32
  | fake | 1.0.0 |
@@ -49,7 +47,6 @@ Feature: berks shelf show
49
47
  Name: ekaf
50
48
  """
51
49
 
52
-
53
50
  Scenario: With cookbooks in the store and the --version option doesn't exist
54
51
  Given the cookbook store has the cookbooks:
55
52
  | fake | 1.0.0 |
@@ -61,7 +58,6 @@ Feature: berks shelf show
61
58
  """
62
59
  And the exit status should be "CookbookNotFound"
63
60
 
64
-
65
61
  Scenario: With multiple cookbook versions installed
66
62
  Given the cookbook store has the cookbooks:
67
63
  | fake | 1.0.0 |
@@ -101,7 +97,6 @@ Feature: berks shelf show
101
97
  License: none
102
98
  """
103
99
 
104
-
105
100
  Scenario: With multiple cookbook versions installed and the --version flag
106
101
  Given the cookbook store has the cookbooks:
107
102
  | fake | 1.0.0 |
@@ -7,7 +7,6 @@ Feature: berks shelf uninstall
7
7
  """
8
8
  And the exit status should be "CookbookNotFound"
9
9
 
10
-
11
10
  Scenario: With two cookbooks in the store
12
11
  Given the cookbook store has the cookbooks:
13
12
  | fake | 1.0.0 |
@@ -22,7 +21,6 @@ Feature: berks shelf uninstall
22
21
  And the cookbook store should have the cookbooks:
23
22
  | ekaf | 2.3.4 |
24
23
 
25
-
26
24
  Scenario: With multiple cookbook versions installed
27
25
  Given the cookbook store has the cookbooks:
28
26
  | fake | 1.0.0 |
@@ -43,7 +41,6 @@ Feature: berks shelf uninstall
43
41
  | fake | 1.2.0 |
44
42
  | fake | 2.0.0 |
45
43
 
46
-
47
44
  Scenario: When specifying a version
48
45
  Given the cookbook store has the cookbooks:
49
46
  | fake | 1.0.0 |
@@ -62,7 +59,6 @@ Feature: berks shelf uninstall
62
59
  | fake | 1.2.0 |
63
60
  | fake | 2.0.0 |
64
61
 
65
-
66
62
  @spawn
67
63
  Scenario: With contingencies
68
64
  Given the cookbook store contains a cookbook "fake" "1.0.0" with dependencies:
@@ -84,7 +80,6 @@ Feature: berks shelf uninstall
84
80
  And the cookbook store should not have the cookbooks:
85
81
  | ekaf | 2.3.4 |
86
82
 
87
-
88
83
  Scenario: With contingencies and the --force flag
89
84
  Given the cookbook store contains a cookbook "fake" "1.0.0" with dependencies:
90
85
  | ekaf | 2.3.4 |
@@ -19,7 +19,6 @@ Feature: berks show
19
19
  License: none
20
20
  """
21
21
 
22
-
23
22
  Scenario: When the cookbook is not in the Berksfile
24
23
  Given I have a Berksfile pointing at the local Berkshelf API
25
24
  When I run `berks show fake`
@@ -29,7 +28,6 @@ Feature: berks show
29
28
  """
30
29
  And the exit status should be "DependencyNotFound"
31
30
 
32
-
33
31
  Scenario: When there is no lockfile present
34
32
  And I have a Berksfile pointing at the local Berkshelf API with:
35
33
  """
@@ -42,7 +40,6 @@ Feature: berks show
42
40
  """
43
41
  And the exit status should be "CookbookNotFound"
44
42
 
45
-
46
43
  Scenario: When the cookbook is not installed
47
44
  Given the cookbook store is empty
48
45
  And I have a Berksfile pointing at the local Berkshelf API with:
@@ -8,7 +8,6 @@ Feature: berks update
8
8
  | ekaf | 1.0.0 |
9
9
  | ekaf | 1.0.1 |
10
10
 
11
-
12
11
  Scenario: Without a cookbook specified
13
12
  And I have a Berksfile pointing at the local Berkshelf API with:
14
13
  """
@@ -23,7 +22,6 @@ Feature: berks update
23
22
  | fake | 0.2.0 |
24
23
  | ekaf | 1.0.1 |
25
24
 
26
-
27
25
  Scenario: With a single cookbook specified
28
26
  And I have a Berksfile pointing at the local Berkshelf API with:
29
27
  """
@@ -38,7 +36,6 @@ Feature: berks update
38
36
  | fake | 0.2.0 |
39
37
  | ekaf | 1.0.0 |
40
38
 
41
-
42
39
  Scenario: With a cookbook that does not exist
43
40
  Given I have a Berksfile pointing at the local Berkshelf API
44
41
  When I run `berks update not_real`
@@ -7,7 +7,6 @@ Feature: berks upload
7
7
  | ekaf | 2.0.0 |
8
8
  | oops | 3.0.0 |
9
9
 
10
-
11
10
  Scenario: multiple cookbooks with no arguments
12
11
  And I have a Berksfile pointing at the local Berkshelf API with:
13
12
  """
@@ -19,7 +18,6 @@ Feature: berks upload
19
18
  | fake | 1.0.0 |
20
19
  | ekaf | 2.0.0 |
21
20
 
22
-
23
21
  Scenario: a cookbook with a path location
24
22
  Given a cookbook named "fake"
25
23
  And I have a Berksfile pointing at the local Berkshelf API with:
@@ -30,7 +28,6 @@ Feature: berks upload
30
28
  Then the Chef Server should have the cookbooks:
31
29
  | fake | 0.0.0 |
32
30
 
33
-
34
31
  Scenario: specifying a single cookbook with dependencies
35
32
  Given the cookbook store contains a cookbook "reset" "3.4.5" with dependencies:
36
33
  | fake | = 1.0.0 |
@@ -47,7 +44,6 @@ Feature: berks upload
47
44
  And the Chef Server should not have the cookbooks:
48
45
  | ekaf | 2.0.0 |
49
46
 
50
-
51
47
  Scenario: specifying a dependency not defined in the Berksfile
52
48
  Given I have a Berksfile pointing at the local Berkshelf API
53
49
  When I run `berks upload reset`
@@ -57,7 +53,6 @@ Feature: berks upload
57
53
  """
58
54
  And the exit status should be "DependencyNotFound"
59
55
 
60
-
61
56
  Scenario: specifying multiple cookbooks to upload
62
57
  Given I have a Berksfile pointing at the local Berkshelf API with:
63
58
  """
@@ -72,7 +67,6 @@ Feature: berks upload
72
67
  And the Chef Server should not have the cookbooks:
73
68
  | oops |
74
69
 
75
-
76
70
  Scenario: uploading a single groups of demands with the --only flag
77
71
  Given I have a Berksfile pointing at the local Berkshelf API with:
78
72
  """
@@ -85,7 +79,6 @@ Feature: berks upload
85
79
  And the Chef Server should not have the cookbooks:
86
80
  | ekaf | 2.0.0 |
87
81
 
88
-
89
82
  Scenario: uploading multiple groups of demands with the --only flag
90
83
  Given I have a Berksfile pointing at the local Berkshelf API with:
91
84
  """
@@ -97,7 +90,6 @@ Feature: berks upload
97
90
  | fake | 1.0.0 |
98
91
  | ekaf | 2.0.0 |
99
92
 
100
-
101
93
  Scenario: skipping a single group to upload with the --except flag
102
94
  Given I have a Berksfile pointing at the local Berkshelf API with:
103
95
  """
@@ -110,7 +102,6 @@ Feature: berks upload
110
102
  And the Chef Server should not have the cookbooks:
111
103
  | ekaf | 2.0.0 |
112
104
 
113
-
114
105
  Scenario: skipping multiple groups with the --except flag
115
106
  Given I have a Berksfile pointing at the local Berkshelf API with:
116
107
  """
@@ -122,7 +113,6 @@ Feature: berks upload
122
113
  | fake | 1.0.0 |
123
114
  | ekaf | 2.0.0 |
124
115
 
125
-
126
116
  Scenario: attempting to upload an invalid cookbook
127
117
  Given a cookbook named "cookbook with spaces"
128
118
  And I have a Berksfile pointing at the local Berkshelf API with:
@@ -136,7 +126,6 @@ Feature: berks upload
136
126
  """
137
127
  And the exit status should be "InvalidCookbookFiles"
138
128
 
139
-
140
129
  Scenario: With unicode characters
141
130
  Given a cookbook named "fake"
142
131
  And I cd to "fake"
@@ -157,7 +146,6 @@ Feature: berks upload
157
146
  Uploading fake (0.0.0)
158
147
  """
159
148
 
160
-
161
149
  Scenario: When the cookbook already exist
162
150
  And the Chef Server has frozen cookbooks:
163
151
  | fake | 1.0.0 |
@@ -177,7 +165,6 @@ Feature: berks upload
177
165
  * fake (1.0.0)
178
166
  """
179
167
 
180
-
181
168
  Scenario: When the cookbook already exist and is a metadata location
182
169
  Given a cookbook named "fake"
183
170
  And the cookbook "fake" has the file "Berksfile" with:
@@ -6,7 +6,6 @@ Feature: Vendoring cookbooks to a directory
6
6
  | ekaf | 2.0.0 |
7
7
  * the Berkshelf API server's cache is up to date
8
8
 
9
-
10
9
  Scenario: successfully vendoring a Berksfile with multiple cookbook demands
11
10
  Given I have a Berksfile pointing at the local Berkshelf API with:
12
11
  """
@@ -17,12 +16,10 @@ Feature: Vendoring cookbooks to a directory
17
16
  Then the directory "cukebooks/fake" should contain version "1.0.0" of the "fake" cookbook
18
17
  And the directory "cukebooks/ekaf" should contain version "2.0.0" of the "ekaf" cookbook
19
18
 
20
-
21
19
  Scenario: attempting to vendor when no Berksfile is present
22
20
  When I run `berks vendor cukebooks`
23
21
  Then the exit status should be "BerksfileNotFound"
24
22
 
25
-
26
23
  Scenario: vendoring a Berksfile with a metadata demand
27
24
  Given a cookbook named "fake"
28
25
  And I cd to "fake"
@@ -33,7 +30,6 @@ Feature: Vendoring cookbooks to a directory
33
30
  When I successfully run `berks vendor cukebooks`
34
31
  And the directory "cukebooks/fake" should contain version "0.0.0" of the "fake" cookbook
35
32
 
36
-
37
33
  Scenario: vendoring without an explicit path to vendor into
38
34
  Given I have a Berksfile pointing at the local Berkshelf API with:
39
35
  """
@@ -42,7 +38,6 @@ Feature: Vendoring cookbooks to a directory
42
38
  When I successfully run `berks vendor`
43
39
  And the directory "berks-cookbooks/fake" should contain version "1.0.0" of the "fake" cookbook
44
40
 
45
-
46
41
  Scenario: vendoring to a directory that already exists
47
42
  Given I have a Berksfile pointing at the local Berkshelf API with:
48
43
  """
@@ -12,7 +12,6 @@ Feature: Installing cookbooks from the community site
12
12
  And the cookbook store should have the cookbooks:
13
13
  | apache2 | 1.6.6 |
14
14
 
15
-
16
15
  Scenario: when the cookbook does not exist
17
16
  Given I have a Berksfile pointing at the community API endpoint with:
18
17
  """
@@ -25,7 +24,6 @@ Feature: Installing cookbooks from the community site
25
24
  """
26
25
  And the exit status should be "NoSolutionError"
27
26
 
28
-
29
27
  Scenario: when the cookbook exists, but the version does not
30
28
  Given I have a Berksfile pointing at the community API endpoint with:
31
29
  """
@@ -6,7 +6,6 @@ Feature: Reading a Berkshelf configuration file
6
6
  | config.vm.box = "opscode_ubuntu-12.04_provisionerless" |
7
7
  | config.vm.box_url = "https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box" |
8
8
 
9
-
10
9
  Scenario: Using a Berkshelf configuration file that disables the vagrant-omnibus plugin
11
10
  Given I have a Berkshelf config file containing:
12
11
  """
@@ -40,7 +39,6 @@ Feature: Reading a Berkshelf configuration file
40
39
  | config.vm.network :public_network |
41
40
  And the exit status should be 0
42
41
 
43
-
44
42
  Scenario: Using a Berkshelf configuration file that sets the vagrant-omnibus plugin chef version
45
43
  Given I have a Berkshelf config file containing:
46
44
  """
@@ -74,7 +72,6 @@ Feature: Reading a Berkshelf configuration file
74
72
  | config.vm.network :public_network |
75
73
  And the exit status should be 0
76
74
 
77
-
78
75
  Scenario: Using a Berkshelf configuration file that sets the vagrant-omnibus plugin chef version to latest
79
76
  Given I have a Berkshelf config file containing:
80
77
  """
@@ -107,7 +104,6 @@ Feature: Reading a Berkshelf configuration file
107
104
  | config.vm.network :private_network, ip: "12.34.56.78" |
108
105
  | config.vm.network :public_network |
109
106
 
110
-
111
107
  Scenario: Using a partial Berkshelf configuration file
112
108
  Given I have a Berkshelf config file containing:
113
109
  """
@@ -125,7 +121,6 @@ Feature: Reading a Berkshelf configuration file
125
121
  Then the resulting "sparkle_motion" Vagrantfile should contain:
126
122
  | config.vm.network :forwarded_port, guest: 12345, host: 54321 |
127
123
 
128
-
129
124
  Scenario: Using an invalid Berkshelf configuration file
130
125
  Given I have a Berkshelf config file containing:
131
126
  """
@@ -142,7 +137,6 @@ Feature: Reading a Berkshelf configuration file
142
137
  And the output should contain "vagrant.vm.box Expected attribute: 'vagrant.vm.box' to be a type of: 'String'"
143
138
  And the exit status should be "InvalidConfiguration"
144
139
 
145
-
146
140
  Scenario: Using a Berkshelf configuration file with Chef configuration information
147
141
  Given I have a Berkshelf config file containing:
148
142
  """
@@ -4,7 +4,6 @@ Feature: --format json
4
4
  * the Chef Server is empty
5
5
  * the cookbook store is empty
6
6
 
7
-
8
7
  Scenario: JSON output installing a cookbook from the default location
9
8
  Given I have a Berksfile pointing at the local Berkshelf API with:
10
9
  """
@@ -34,7 +33,6 @@ Feature: --format json
34
33
  }
35
34
  """
36
35
 
37
-
38
36
  Scenario: JSON output installing a cookbook we already have
39
37
  Given the cookbook store has the cookbooks:
40
38
  | berkshelf-cookbook-fixture | 1.0.0 |
@@ -61,7 +59,6 @@ Feature: --format json
61
59
  }
62
60
  """
63
61
 
64
-
65
62
  Scenario: JSON output when running the show command
66
63
  Given the cookbook store has the cookbooks:
67
64
  | fake | 1.0.0 |
@@ -93,7 +90,6 @@ Feature: --format json
93
90
  }
94
91
  """
95
92
 
96
-
97
93
  Scenario: JSON output when running the upload command
98
94
  Given I have a Berksfile pointing at the local Berkshelf API with:
99
95
  """
@@ -120,7 +116,6 @@ Feature: --format json
120
116
  }
121
117
  """
122
118
 
123
-
124
119
  Scenario: JSON output when running the outdated command
125
120
  Given the cookbook store has the cookbooks:
126
121
  | seth | 0.1.0 |