berkshelf 7.0.6 → 7.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +7 -7
  3. data/Rakefile +2 -2
  4. data/berkshelf.gemspec +9 -10
  5. data/bin/berks +5 -0
  6. data/lib/berkshelf.rb +2 -2
  7. data/lib/berkshelf/api_client/chef_server_connection.rb +3 -2
  8. data/lib/berkshelf/api_client/connection.rb +1 -1
  9. data/lib/berkshelf/berksfile.rb +47 -41
  10. data/lib/berkshelf/cached_cookbook.rb +6 -4
  11. data/lib/berkshelf/chef_config_compat.rb +1 -0
  12. data/lib/berkshelf/chef_repo_universe.rb +6 -4
  13. data/lib/berkshelf/cli.rb +12 -7
  14. data/lib/berkshelf/commands/shelf.rb +1 -1
  15. data/lib/berkshelf/community_rest.rb +4 -4
  16. data/lib/berkshelf/config.rb +1 -1
  17. data/lib/berkshelf/core_ext.rb +1 -1
  18. data/lib/berkshelf/core_ext/file_utils.rb +2 -2
  19. data/lib/berkshelf/dependency.rb +1 -1
  20. data/lib/berkshelf/downloader.rb +10 -3
  21. data/lib/berkshelf/errors.rb +2 -2
  22. data/lib/berkshelf/formatters/human.rb +1 -1
  23. data/lib/berkshelf/formatters/json.rb +4 -4
  24. data/lib/berkshelf/installer.rb +1 -1
  25. data/lib/berkshelf/location.rb +3 -3
  26. data/lib/berkshelf/lockfile.rb +14 -14
  27. data/lib/berkshelf/logger.rb +4 -2
  28. data/lib/berkshelf/mixin/git.rb +1 -1
  29. data/lib/berkshelf/packager.rb +2 -2
  30. data/lib/berkshelf/resolver.rb +1 -1
  31. data/lib/berkshelf/ridley_compat.rb +1 -1
  32. data/lib/berkshelf/shell.rb +1 -0
  33. data/lib/berkshelf/source.rb +6 -5
  34. data/lib/berkshelf/ssl_policies.rb +1 -3
  35. data/lib/berkshelf/thor.rb +1 -1
  36. data/lib/berkshelf/thor_ext.rb +1 -1
  37. data/lib/berkshelf/uploader.rb +11 -9
  38. data/lib/berkshelf/version.rb +1 -1
  39. data/lib/berkshelf/visualizer.rb +1 -1
  40. data/spec/config/knife.rb +1 -1
  41. data/spec/support/chef_server.rb +2 -2
  42. data/spec/support/git.rb +18 -18
  43. data/spec/support/path_helpers.rb +4 -4
  44. data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/attributes/default.rb +0 -0
  45. data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/files/default/file.h +0 -0
  46. data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/metadata.rb +2 -0
  47. data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/recipes/default.rb +0 -0
  48. data/spec/tmp/berkshelf/cookbooks/dep-1.0.0/templates/default/template.erb +0 -0
  49. data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/attributes/default.rb +0 -0
  50. data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/files/default/file.h +0 -0
  51. data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/metadata.rb +3 -0
  52. data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/recipes/default.rb +0 -0
  53. data/spec/tmp/berkshelf/cookbooks/ekaf-1.0.0/templates/default/template.erb +0 -0
  54. data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/attributes/default.rb +0 -0
  55. data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/files/default/file.h +0 -0
  56. data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/metadata.rb +3 -0
  57. data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/recipes/default.rb +0 -0
  58. data/spec/tmp/berkshelf/cookbooks/fake-1.0.0/templates/default/template.erb +0 -0
  59. data/spec/unit/berkshelf/berksfile_spec.rb +7 -7
  60. data/spec/unit/berkshelf/cli_spec.rb +1 -2
  61. data/spec/unit/berkshelf/community_rest_spec.rb +1 -1
  62. data/spec/unit/berkshelf/core_ext/file_utils_spec.rb +2 -2
  63. data/spec/unit/berkshelf/dependency_spec.rb +5 -5
  64. data/spec/unit/berkshelf/downloader_spec.rb +29 -8
  65. data/spec/unit/berkshelf/locations/base_spec.rb +1 -2
  66. data/spec/unit/berkshelf/locations/path_spec.rb +1 -2
  67. data/spec/unit/berkshelf/lockfile_spec.rb +9 -18
  68. data/spec/unit/berkshelf/ridley_compat_spec.rb +1 -1
  69. data/spec/unit/berkshelf/source_spec.rb +8 -7
  70. data/spec/unit/berkshelf/ssl_policies_spec.rb +3 -5
  71. data/spec/unit/berkshelf/uploader_spec.rb +6 -10
  72. metadata +49 -188
  73. data/.github/lock.yml +0 -1
  74. data/.gitignore +0 -30
  75. data/.rubocop.yml +0 -12
  76. data/.travis.yml +0 -73
  77. data/CHANGELOG.legacy.md +0 -307
  78. data/CHANGELOG.md +0 -1582
  79. data/CONTRIBUTING.md +0 -68
  80. data/Gemfile.lock +0 -301
  81. data/PLUGINS.md +0 -25
  82. data/README.md +0 -72
  83. data/Thorfile +0 -61
  84. data/appveyor.yml +0 -31
  85. data/docs/berkshelf_for_newcomers.md +0 -64
  86. data/features/artifactory.feature +0 -70
  87. data/features/berksfile.feature +0 -46
  88. data/features/commands/apply.feature +0 -41
  89. data/features/commands/contingent.feature +0 -47
  90. data/features/commands/info.feature +0 -141
  91. data/features/commands/install.feature +0 -646
  92. data/features/commands/list.feature +0 -78
  93. data/features/commands/outdated.feature +0 -127
  94. data/features/commands/package.feature +0 -17
  95. data/features/commands/search.feature +0 -17
  96. data/features/commands/shelf/list.feature +0 -32
  97. data/features/commands/shelf/show.feature +0 -113
  98. data/features/commands/shelf/uninstall.feature +0 -96
  99. data/features/commands/show.feature +0 -83
  100. data/features/commands/update.feature +0 -142
  101. data/features/commands/upload.feature +0 -499
  102. data/features/commands/vendor.feature +0 -154
  103. data/features/commands/verify.feature +0 -29
  104. data/features/commands/viz.feature +0 -66
  105. data/features/community_site.feature +0 -37
  106. data/features/help.feature +0 -11
  107. data/features/json_formatter.feature +0 -158
  108. data/features/lifecycle.feature +0 -378
  109. data/features/lockfile.feature +0 -378
  110. data/features/step_definitions/berksfile_steps.rb +0 -54
  111. data/features/step_definitions/chef/config_steps.rb +0 -12
  112. data/features/step_definitions/chef_server_steps.rb +0 -60
  113. data/features/step_definitions/cli_steps.rb +0 -18
  114. data/features/step_definitions/config_steps.rb +0 -46
  115. data/features/step_definitions/environment_steps.rb +0 -11
  116. data/features/step_definitions/filesystem_steps.rb +0 -286
  117. data/features/step_definitions/gem_steps.rb +0 -13
  118. data/features/step_definitions/json_steps.rb +0 -29
  119. data/features/step_definitions/utility_steps.rb +0 -11
  120. data/features/support/aruba.rb +0 -12
  121. data/features/support/env.rb +0 -77
  122. data/spec/fixtures/cookbooks/example_cookbook/.gitignore +0 -2
  123. data/spec/fixtures/cookbooks/example_cookbook/.kitchen.yml +0 -26
@@ -1,154 +0,0 @@
1
- Feature: Vendoring cookbooks to a directory
2
- Background:
3
- * the Chef Server has cookbooks:
4
- | fake | 1.0.0 |
5
- | ekaf | 2.0.0 |
6
-
7
- Scenario: successfully vendoring a Berksfile with multiple cookbook demands
8
- Given I have a Berksfile pointing at the local Berkshelf API with:
9
- """
10
- cookbook 'fake'
11
- cookbook 'ekaf'
12
- """
13
- When I successfully run `berks vendor cukebooks`
14
- Then the directory "cukebooks/fake" should contain version "1.0.0" of the "fake" cookbook
15
- And the directory "cukebooks/ekaf" should contain version "2.0.0" of the "ekaf" cookbook
16
-
17
- Scenario: attempting to vendor when no Berksfile is present
18
- When I run `berks vendor cukebooks`
19
- Then the exit status should be "BerksfileNotFound"
20
-
21
- Scenario: vendoring a Berksfile with a metadata demand
22
- Given a cookbook named "fake"
23
- And I cd to "fake"
24
- And I have a Berksfile pointing at the local Berkshelf API with:
25
- """
26
- metadata
27
- """
28
- When I successfully run `berks vendor cukebooks`
29
- Then the directory "cukebooks/fake" should contain version "0.0.0" of the "fake" cookbook
30
-
31
- Scenario: vendoring a cookbook with transitive dependencies
32
- Given I have a Berksfile pointing at the local Berkshelf API with:
33
- """
34
- metadata
35
- """
36
- And I write to "metadata.rb" with:
37
- """
38
- name 'bacon'
39
- version '1.0.0'
40
-
41
- depends 'fake'
42
- depends 'ekaf'
43
- """
44
- When I successfully run `berks vendor vendor`
45
- Then the directory "vendor/bacon" should contain version "1.0.0" of the "bacon" cookbook
46
- And the directory "vendor/fake" should contain version "1.0.0" of the "fake" cookbook
47
- And the directory "vendor/ekaf" should contain version "2.0.0" of the "ekaf" cookbook
48
-
49
- Scenario: vendoring a cookbook with transitive dependencies when a lockfile is present
50
- Given a cookbook named "bacon"
51
- And the cookbook "bacon" has the file "metadata.rb" with:
52
- """
53
- name 'bacon'
54
- version '1.0.0'
55
-
56
- depends 'fake'
57
- depends 'ekaf'
58
- """
59
- And I have a Berksfile pointing at the local Berkshelf API with:
60
- """
61
- cookbook 'bacon', path: './bacon'
62
- """
63
- And I write to "Berksfile.lock" with:
64
- """
65
- DEPENDENCIES
66
- bacon
67
- path: ./bacon
68
-
69
- GRAPH
70
- bacon (1.0.0)
71
- ekaf (>= 0.0.0)
72
- fake (>= 0.0.0)
73
- ekaf (2.0.0)
74
- fake (1.0.0)
75
- """
76
- When I successfully run `berks vendor vendor`
77
- Then the directory "vendor/bacon" should contain version "1.0.0" of the "bacon" cookbook
78
- And the directory "vendor/fake" should contain version "1.0.0" of the "fake" cookbook
79
- And the directory "vendor/ekaf" should contain version "2.0.0" of the "ekaf" cookbook
80
-
81
- Scenario: vendoring without an explicit path to vendor into
82
- Given I have a Berksfile pointing at the local Berkshelf API with:
83
- """
84
- cookbook 'fake'
85
- """
86
- When I successfully run `berks vendor`
87
- Then the directory "berks-cookbooks/fake" should contain version "1.0.0" of the "fake" cookbook
88
-
89
- Scenario: vendoring to a directory that already exists
90
- Given I have a Berksfile pointing at the local Berkshelf API with:
91
- """
92
- cookbook 'fake'
93
- """
94
- And a directory named "cukebooks"
95
- And a directory named "cukebooks/fake/ponies"
96
- And a directory named "cukebooks/existing_cookbook"
97
- When I successfully run `berks vendor --delete cukebooks`
98
- Then the directory "cukebooks/fake" should contain version "1.0.0" of the "fake" cookbook
99
- And a directory named "cukebooks/fake/ponies" should not exist
100
- And a directory named "cukebooks/existing_cookbook" should not exist
101
-
102
- Scenario: vendoring into a nested directory
103
- Given I have a Berksfile pointing at the local Berkshelf API with:
104
- """
105
- cookbook 'fake'
106
- """
107
- When I successfully run `berks vendor path/to/cukebooks`
108
- Then the directory "path/to/cukebooks/fake" should contain version "1.0.0" of the "fake" cookbook
109
-
110
- Scenario: vendoring a cookbook with chefignores
111
- Given a cookbook named "bacon"
112
- And the cookbook "bacon" has the file "metadata.rb" with:
113
- """
114
- name 'bacon'
115
- version '1.0.0'
116
- """
117
- And I have a Berksfile pointing at the local Berkshelf API with:
118
- """
119
- cookbook 'bacon', path: './bacon'
120
- """
121
- And the cookbook "bacon" has the file "chefignore" with:
122
- """
123
- *.turd
124
- """
125
- And the cookbook "bacon" has the file "foo.turd" with:
126
- """
127
- poop
128
- """
129
- And the cookbook "bacon" has the file "recipes/foo.turd" with:
130
- """
131
- poop
132
- """
133
- When I successfully run `berks vendor vendor`
134
- Then the directory "vendor/bacon" should contain version "1.0.0" of the "bacon" cookbook
135
- And a file named "vendor/bacon/foo.turd" should not exist
136
- And a file named "vendor/bacon/recipes/foo.turd" should not exist
137
-
138
- Scenario: metadata.json / metadata.rb handling when vendoring a cookbook
139
- Given a cookbook named "bacon"
140
- And the cookbook "bacon" has the file "metadata.rb" with:
141
- """
142
- name 'bacon'
143
- version '1.0.0'
144
- """
145
- And I have a Berksfile pointing at the local Berkshelf API with:
146
- """
147
- cookbook 'bacon', path: './bacon'
148
- """
149
- When I successfully run `berks vendor vendor`
150
- Then the directory "vendor/bacon" should contain version "1.0.0" of the "bacon" cookbook
151
- And a file named "vendor/bacon/metadata.json" should exist
152
- And a file named "vendor/bacon/metadata.rb" should exist
153
- And a file named "bacon/metadata.rb" should exist
154
- And a file named "bacon/metadata.json" should not exist
@@ -1,29 +0,0 @@
1
- Feature: berks verify
2
- Scenario: running verify when there is no Lockfile present
3
- Given a cookbook named "sparkle_motion"
4
- And I cd to "sparkle_motion"
5
- And I have a Berksfile pointing at the local Berkshelf API with:
6
- """
7
- metadata
8
- """
9
- And I run `berks verify`
10
- Then the output should contain:
11
- """
12
- Lockfile not found! Run `berks install` to create the lockfile.
13
- """
14
- And the exit status should be "LockfileNotFound"
15
-
16
- Scenario: running verify when there is a valid Lockfile present
17
- Given a cookbook named "sparkle_motion"
18
- And I cd to "sparkle_motion"
19
- And I have a Berksfile pointing at the local Berkshelf API with:
20
- """
21
- metadata
22
- """
23
- When I successfully run `berks install`
24
- And I successfully run `berks verify`
25
- Then the output should contain:
26
- """
27
- Verifying (1) cookbook(s)...
28
- Verified.
29
- """
@@ -1,66 +0,0 @@
1
- @graphviz @not-windows
2
- Feature: berks viz
3
- Scenario: With no options
4
- * I have a Berksfile pointing at the local Berkshelf API with:
5
- """
6
- cookbook 'fake', '1.0.0'
7
- """
8
- * I write to "Berksfile.lock" with:
9
- """
10
- DEPENDENCIES
11
- fake (= 1.0.0)
12
-
13
- GRAPH
14
- fake (1.0.0)
15
- """
16
- * I successfully run `berks viz`
17
- * a file named "graph.png" should exist
18
-
19
- Scenario: When there are transitive dependencies
20
- * I have a Berksfile pointing at the local Berkshelf API with:
21
- """
22
- cookbook 'fake', '1.0.0'
23
- """
24
- * I write to "Berksfile.lock" with:
25
- """
26
- DEPENDENCIES
27
- fake (= 1.0.0)
28
-
29
- GRAPH
30
- dep (1.0.0)
31
- fake (1.0.0)
32
- dep (~> 1.0.0)
33
- """
34
- * I successfully run `berks viz`
35
- * a file named "graph.png" should exist
36
-
37
- Scenario: When a custom output is given
38
- * I have a Berksfile pointing at the local Berkshelf API with:
39
- """
40
- cookbook 'fake', '1.0.0'
41
- """
42
- * I write to "Berksfile.lock" with:
43
- """
44
- DEPENDENCIES
45
- fake (= 1.0.0)
46
-
47
- GRAPH
48
- dep (1.0.0)
49
- fake (1.0.0)
50
- dep (~> 1.0.0)
51
- """
52
- * I successfully run `berks viz --outfile ponies.png`
53
- * a file named "graph.png" should not exist
54
- * a file named "ponies.png" should exist
55
-
56
- Scenario: When there is no lockfile present
57
- * I have a Berksfile pointing at the local Berkshelf API with:
58
- """
59
- cookbook 'fake', '1.0.0'
60
- """
61
- * I run `berks viz`
62
- * the output should contain:
63
- """
64
- Lockfile not found! Run `berks install` to create the lockfile.
65
- """
66
- * the exit status should be "LockfileNotFound"
@@ -1,37 +0,0 @@
1
- Feature: Installing cookbooks from the community site
2
- Scenario: when the cookbook exists
3
- Given I have a Berksfile pointing at the community API endpoint with:
4
- """
5
- cookbook 'apache2', '1.6.6'
6
- """
7
- When I successfully run `berks install`
8
- Then the output should contain:
9
- """
10
- Installing apache2 (1.6.6)
11
- """
12
- And the cookbook store should have the cookbooks:
13
- | apache2 | 1.6.6 |
14
-
15
- Scenario: when the cookbook does not exist
16
- Given I have a Berksfile pointing at the community API endpoint with:
17
- """
18
- cookbook '1234567890'
19
- """
20
- When I run `berks install`
21
- Then the output should contain:
22
- """
23
- Unable to find a solution for demands: 1234567890 (>= 0.0.0)
24
- """
25
- And the exit status should be "NoSolutionError"
26
-
27
- Scenario: when the cookbook exists, but the version does not
28
- Given I have a Berksfile pointing at the community API endpoint with:
29
- """
30
- cookbook 'apache2', '0.0.0'
31
- """
32
- When I run `berks install`
33
- Then the output should contain:
34
- """
35
- Unable to find a solution for demands: apache2 (= 0.0.0)
36
- """
37
- And the exit status should be "NoSolutionError"
@@ -1,11 +0,0 @@
1
- Feature: Appending -h or --help to a command
2
- Scenario Outline: Using various help switches
3
- Then the output from `<actual>` should be the same as `<expected>`
4
- Examples:
5
- | actual | expected |
6
- | berks --help | berks help |
7
- | berks -h | berks help |
8
- | berks cookbook --help | berks help cookbook |
9
- | berks cookbook -h | berks help cookbook |
10
- | berks shelf --help | berks shelf help |
11
- | berks shelf -h | berks shelf help |
@@ -1,158 +0,0 @@
1
- Feature: --format json
2
- Background:
3
- * the Chef Server is empty
4
- * the cookbook store is empty
5
-
6
- Scenario: JSON output installing a cookbook from the default location
7
- Given I have a Berksfile pointing at the local Berkshelf API with:
8
- """
9
- cookbook 'berkshelf', '1.0.0'
10
- """
11
- And the Chef Server has cookbooks:
12
- | berkshelf | 1.0.0 |
13
- When I successfully run `berks install --format json`
14
- Then the output should contain JSON:
15
- """
16
- {
17
- "cookbooks": [
18
- {
19
- "api_source": "http://127.0.0.1:26310",
20
- "location_path": "http://127.0.0.1:26310/cookbooks/berkshelf/1.0.0",
21
- "version": "1.0.0",
22
- "name": "berkshelf"
23
- }
24
- ],
25
- "errors": [],
26
- "messages": [
27
- "Resolving cookbook dependencies...",
28
- "Fetching cookbook index from http://127.0.0.1:26310..."
29
- ],
30
- "warnings": []
31
- }
32
- """
33
-
34
- Scenario: JSON output installing a cookbook we already have
35
- Given the cookbook store has the cookbooks:
36
- | berkshelf-cookbook-fixture | 1.0.0 |
37
- And I have a Berksfile pointing at the local Berkshelf API with:
38
- """
39
- cookbook 'berkshelf-cookbook-fixture', '1.0.0'
40
- """
41
- When I successfully run `berks install --format json`
42
- Then the output should contain JSON:
43
- """
44
- {
45
- "cookbooks": [
46
- {
47
- "name": "berkshelf-cookbook-fixture",
48
- "version": "1.0.0"
49
- }
50
- ],
51
- "errors": [],
52
- "messages": [
53
- "Resolving cookbook dependencies...",
54
- "Fetching cookbook index from http://127.0.0.1:26310..."
55
- ],
56
- "warnings": []
57
- }
58
- """
59
-
60
- Scenario: JSON output when running the show command
61
- Given the cookbook store has the cookbooks:
62
- | fake | 1.0.0 |
63
- And I have a Berksfile pointing at the local Berkshelf API with:
64
- """
65
- cookbook 'fake', '1.0.0'
66
- """
67
- And I write to "Berksfile.lock" with:
68
- """
69
- DEPENDENCIES
70
- fake (= 1.0.0)
71
-
72
- GRAPH
73
- fake (1.0.0)
74
- """
75
- When I successfully run `berks show fake --format json`
76
- Then the output should contain JSON:
77
- """
78
- {
79
- "cookbooks": [
80
- {
81
- "name": "fake",
82
- "path": "<%= Berkshelf.cookbook_store.storage_path.join('fake-1.0.0') %>"
83
- }
84
- ],
85
- "errors": [],
86
- "messages": [],
87
- "warnings": []
88
- }
89
- """
90
-
91
- Scenario: JSON output when running the upload command
92
- Given I have a Berksfile pointing at the local Berkshelf API with:
93
- """
94
- cookbook 'example_cookbook', path: '../../spec/fixtures/cookbooks/example_cookbook-0.5.0'
95
- """
96
- And I write to "Berksfile.lock" with:
97
- """
98
- DEPENDENCIES
99
- example_cookbook
100
- path: ../../spec/fixtures/cookbooks/example_cookbook-0.5.0
101
-
102
- GRAPH
103
- example_cookbook (0.5.0)
104
- """
105
- When I successfully run `berks upload --format json`
106
- Then the output should contain JSON:
107
- """
108
- {
109
- "cookbooks": [
110
- {
111
- "name": "example_cookbook",
112
- "version": "0.5.0",
113
- "uploaded_to": "http://localhost:26310"
114
- }
115
- ],
116
- "errors": [],
117
- "messages": [],
118
- "warnings": []
119
- }
120
- """
121
-
122
- Scenario: JSON output when running the outdated command
123
- Given the cookbook store has the cookbooks:
124
- | seth | 0.1.0 |
125
- And the Chef Server has cookbooks:
126
- | seth | 0.1.0 |
127
- | seth | 0.2.9 |
128
- | seth | 1.0.0 |
129
- And I have a Berksfile pointing at the local Berkshelf API with:
130
- """
131
- cookbook 'seth', '~> 0.1'
132
- """
133
- And I write to "Berksfile.lock" with:
134
- """
135
- DEPENDENCIES
136
- seth (~> 0.1)
137
-
138
- GRAPH
139
- seth (0.1.0)
140
- """
141
- And I successfully run `berks outdated --format json`
142
- Then the output should contain JSON:
143
- """
144
- {
145
- "cookbooks": [
146
- {
147
- "local": "0.1.0",
148
- "remote": {
149
- "http://127.0.0.1:26310": "0.2.9"
150
- },
151
- "name": "seth"
152
- }
153
- ],
154
- "errors": [],
155
- "messages": [],
156
- "warnings": []
157
- }
158
- """