berkshelf 3.0.0.beta3 → 3.0.0.beta4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +1 -0
  4. data/CHANGELOG.md +12 -2
  5. data/CONTRIBUTING.md +53 -53
  6. data/Gemfile +1 -1
  7. data/Guardfile +12 -6
  8. data/PLUGINS.md +2 -2
  9. data/README.md +7 -11
  10. data/berkshelf.gemspec +1 -1
  11. data/features/commands/apply.feature +15 -4
  12. data/features/commands/cookbook.feature +1 -1
  13. data/features/commands/install.feature +85 -15
  14. data/features/commands/list.feature +35 -2
  15. data/features/commands/outdated.feature +3 -3
  16. data/features/commands/package.feature +1 -0
  17. data/features/commands/show.feature +3 -3
  18. data/features/commands/update.feature +1 -0
  19. data/features/commands/upload.feature +28 -4
  20. data/features/json_formatter.feature +2 -0
  21. data/features/lockfile.feature +1 -0
  22. data/features/support/env.rb +8 -4
  23. data/generator_files/Gemfile.erb +9 -0
  24. data/generator_files/README.md.erb +15 -33
  25. data/generator_files/Vagrantfile.erb +6 -3
  26. data/lib/berkshelf.rb +32 -2
  27. data/lib/berkshelf/berksfile.rb +59 -83
  28. data/lib/berkshelf/cli.rb +15 -67
  29. data/lib/berkshelf/community_rest.rb +18 -2
  30. data/lib/berkshelf/dependency.rb +6 -4
  31. data/lib/berkshelf/downloader.rb +3 -0
  32. data/lib/berkshelf/errors.rb +15 -0
  33. data/lib/berkshelf/formatters.rb +1 -0
  34. data/lib/berkshelf/formatters/human_readable.rb +27 -4
  35. data/lib/berkshelf/formatters/json.rb +21 -5
  36. data/lib/berkshelf/git.rb +4 -0
  37. data/lib/berkshelf/installer.rb +3 -1
  38. data/lib/berkshelf/locations/git_location.rb +22 -10
  39. data/lib/berkshelf/locations/github_location.rb +3 -7
  40. data/lib/berkshelf/locations/path_location.rb +0 -19
  41. data/lib/berkshelf/lockfile.rb +66 -4
  42. data/lib/berkshelf/mixin/logging.rb +1 -1
  43. data/lib/berkshelf/version.rb +1 -1
  44. data/spec/spec_helper.rb +8 -4
  45. data/spec/support/git.rb +9 -9
  46. data/spec/support/mercurial.rb +9 -9
  47. data/spec/unit/berkshelf/api_client_spec.rb +1 -1
  48. data/spec/unit/berkshelf/berksfile_spec.rb +36 -59
  49. data/spec/unit/berkshelf/cli_spec.rb +16 -0
  50. data/spec/unit/berkshelf/config_spec.rb +1 -1
  51. data/spec/unit/berkshelf/cookbook_generator_spec.rb +4 -6
  52. data/spec/unit/berkshelf/locations/git_location_spec.rb +1 -1
  53. data/spec/unit/berkshelf/lockfile_spec.rb +81 -2
  54. data/spec/unit/berkshelf/resolver/graph_spec.rb +1 -1
  55. data/spec/unit/berkshelf/ui_spec.rb +4 -4
  56. metadata +7 -7
  57. data/features/commands/configure.feature +0 -89
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1f30b6f5921539453a2eb582dcf8b483bf6f33e1
4
- data.tar.gz: d47613f9a3940b7b8e0fa157f7e8e5643f468288
3
+ metadata.gz: 5f5088e43f8c5365f1e59d658fd1756124755b65
4
+ data.tar.gz: a69deb7ea7f326a6811000b60fe773ff8012766c
5
5
  SHA512:
6
- metadata.gz: 32ec7a95765d2b8d81792e71f6834736e12dd738ef0a5a4764c1fa5ae7dee346d581105349303efca4d4265e6df6f369832d5906d32453a7c24ba67f96bc90cf
7
- data.tar.gz: 8b64c19ac6c62a77bbed0fea4aacca7fab0fc6f20442ba34c2b726917e48d5cad4bad7a9f1689568fbc83a009670e8a7e5113140eb3b1d155cf2c0c00e7d020b
6
+ metadata.gz: 29b808bebf200fd436c4f49c4207396bcf9210d2c2f9fb53d935cf1d552385f45fb423f5d077c7b4f0d4d6e85c2f2a0bb007becbf0d9780dff1df875ba371961
7
+ data.tar.gz: 9bf52b249305d61aa2b6aef4a73a1ec06a661219635989bf9c29d4979ff13ed69e6ea9e4cbecc7d9427918c00dbeebd8873f1e8e7f31601db8dde38bfb4d5bc7
@@ -1 +1 @@
1
- 2.0.0-p247
1
+ 2.0.0-p353
@@ -12,6 +12,7 @@ bundler_args: --without guard
12
12
  before_install:
13
13
  - sudo apt-get install -qq libarchive12 libarchive-dev
14
14
  before_script:
15
+ - echo "StrictHostKeyChecking no" > ~/.ssh/config
15
16
  - git config --global user.email "ci@berkshelf.com"
16
17
  - git config --global user.name "Berkshelf"
17
18
  script: bundle exec thor spec:ci
@@ -1,6 +1,10 @@
1
1
  # 3.0.0
2
2
 
3
- * New "universe" resolver which communicates with an API server to resolve constraint graphs faster and more reliably
3
+ * Enhancements
4
+ * New "universe" resolver which communicates with an API server to resolve constraint graphs faster and more reliably
5
+
6
+ * Bug Fixes
7
+ * Raw metadata will be compiled into metadata.json during vendor process
4
8
 
5
9
  # 2.0.10
6
10
 
@@ -10,6 +14,12 @@
10
14
 
11
15
  * Update required version of Ridley
12
16
 
17
+ # 2.0.8
18
+
19
+ * Account for API changes to solve
20
+ * Rescue exceptions when parsing the lockfile
21
+ * Fix deprecation errors
22
+
13
23
  # 2.0.7
14
24
 
15
25
  * Fix crash when parsing a lockfile that contains path locations which no longer exist
@@ -98,7 +108,7 @@
98
108
 
99
109
  # 1.3.1
100
110
  - Support for Vagrant 1.1.x
101
- - Move Berkshelf Vagrant plugin into it's [own repository](https://github.com/RiotGames/vagrant-berkshelf)
111
+ - Move Berkshelf Vagrant plugin into it's [own repository](https://github.com/berkshelf/vagrant-berkshelf)
102
112
  - Added -d flag to output debug information in berks command
103
113
  - Various bug fixes in uploading cookbooks
104
114
 
@@ -1,53 +1,53 @@
1
- # Contributing
2
-
3
- ## Developing
4
-
5
- If you'd like to submit a patch:
6
-
7
- 1. Fork the project.
8
- 2. Make your feature addition or bug fix.
9
- 3. Add [tests](#testing) for it. This is important so that it isn't broken in a
10
- future version unintentionally.
11
- 4. Commit. **Do not touch any unrelated code, such as the gemspec or version.**
12
- If you must change unrelated code, do it in a commit by itself, so that it
13
- can be ignored.
14
- 5. Send a pull request.
15
-
16
- ## Testing
17
-
18
- ### Install prerequisites
19
-
20
- Install git and mercurial on your test system. (http://mercurial.selenic.com/wiki/Download)
21
-
22
- Install the latest version of [Bundler](http://gembundler.com)
23
-
24
- $ gem install bundler
25
-
26
- Clone the project
27
-
28
- $ git clone git://github.com/RiotGames/berkshelf.git
29
-
30
- and run:
31
-
32
- $ cd berkshelf
33
- $ bundle install
34
-
35
- Bundler will install all gems and their dependencies required for testing and developing.
36
-
37
- ### Running unit (RSpec) and acceptance (Cucumber) tests
38
-
39
- We use Chef Zero - an in-memory Chef Server for running tests. It is automatically managed by the Specs and Cukes. Simply run:
40
-
41
- $ bundle exec guard start
42
-
43
- See [here](https://github.com/tdegrunt/vagrant-chef-server-bootstrap) for a
44
- quick way to get a testing chef server up.
45
-
46
- ### Debugging Issues
47
- By default, Berkshelf will only give you the top-level output from a failed command. If you're working deep inside the core, an error like:
48
-
49
- Berkshelf Error: wrong number of arguments (2 for 1)
50
-
51
- isn't exactly helpful...
52
-
53
- Specify the `BERKSHELF_DEBUG` flag when running your command to see a full stack trace and other helpful debugging information.
1
+ # Contributing
2
+
3
+ ## Developing
4
+
5
+ If you'd like to submit a patch:
6
+
7
+ 1. Fork the project.
8
+ 2. Make your feature addition or bug fix.
9
+ 3. Add [tests](#testing) for it. This is important so that it isn't broken in a
10
+ future version unintentionally.
11
+ 4. Commit. **Do not touch any unrelated code, such as the gemspec or version.**
12
+ If you must change unrelated code, do it in a commit by itself, so that it
13
+ can be ignored.
14
+ 5. Send a pull request.
15
+
16
+ ## Testing
17
+
18
+ ### Install prerequisites
19
+
20
+ Install git and mercurial on your test system. (http://mercurial.selenic.com/wiki/Download)
21
+
22
+ Install the latest version of [Bundler](http://gembundler.com)
23
+
24
+ $ gem install bundler
25
+
26
+ Clone the project
27
+
28
+ $ git clone git://github.com/berkshelf/berkshelf.git
29
+
30
+ and run:
31
+
32
+ $ cd berkshelf
33
+ $ bundle install
34
+
35
+ Bundler will install all gems and their dependencies required for testing and developing.
36
+
37
+ ### Running unit (RSpec) and acceptance (Cucumber) tests
38
+
39
+ We use Chef Zero - an in-memory Chef Server for running tests. It is automatically managed by the Specs and Cukes. Simply run:
40
+
41
+ $ bundle exec guard start
42
+
43
+ See [here](https://github.com/tdegrunt/vagrant-chef-server-bootstrap) for a
44
+ quick way to get a testing chef server up.
45
+
46
+ ### Debugging Issues
47
+ By default, Berkshelf will only give you the top-level output from a failed command. If you're working deep inside the core, an error like:
48
+
49
+ Berkshelf Error: wrong number of arguments (2 for 1)
50
+
51
+ isn't exactly helpful...
52
+
53
+ Specify the `BERKSHELF_DEBUG` flag when running your command to see a full stack trace and other helpful debugging information.
data/Gemfile CHANGED
@@ -32,5 +32,5 @@ group :guard do
32
32
  end
33
33
 
34
34
  group :test do
35
- gem 'berkshelf-api', github: "RiotGames/berkshelf-api"
35
+ gem 'berkshelf-api', github: "berkshelf/berkshelf-api"
36
36
  end
data/Guardfile CHANGED
@@ -4,19 +4,25 @@ guard 'spork' do
4
4
  watch(%r{^features/support/}) { :cucumber }
5
5
  end
6
6
 
7
- guard 'yard', stdout: '/dev/null', stderr: '/dev/null' do
8
- watch(%r{app/.+\.rb})
9
- watch(%r{lib/.+\.rb})
10
- watch(%r{ext/.+\.c})
7
+ unless RUBY_PLATFORM =~ /mswin|mingw|windows/
8
+ guard 'yard', stdout: '/dev/null', stderr: '/dev/null' do
9
+ watch(%r{app/.+\.rb})
10
+ watch(%r{lib/.+\.rb})
11
+ watch(%r{ext/.+\.c})
12
+ end
11
13
  end
12
14
 
13
- guard 'rspec', cli: '--color --drb --format Fuubar', all_on_start: false, all_after_pass: false do
15
+ rspec_cli = '--color --drb --format Fuubar'
16
+ rspec_cli += ' --tag ~@api_client --tag ~@not_supported_on_windows' if RUBY_PLATFORM =~ /mswin|mingw|windows/
17
+ guard 'rspec', cli: rspec_cli, all_on_start: false, all_after_pass: false do
14
18
  watch(%r{^spec/unit/.+_spec\.rb$})
15
19
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
16
20
  watch('spec/spec_helper.rb') { 'spec' }
17
21
  end
18
22
 
19
- guard 'cucumber', cli: '--drb --format pretty --tags ~@no_run --tags ~@wip', all_on_start: false, all_after_pass: false do
23
+ cucumber_cli = '--drb --format pretty --tags ~@no_run --tags ~@wip'
24
+ cucumber_cli += ' --tags ~@spawn --tags ~@api_server' if RUBY_PLATFORM =~ /mswin|mingw|windows/
25
+ guard 'cucumber', cli: cucumber_cli, all_on_start: false, all_after_pass: false do
20
26
  watch(%r{^features/.+\.feature$})
21
27
  watch(%r{^features/support/.+$}) { 'features' }
22
28
  watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
data/PLUGINS.md CHANGED
@@ -8,7 +8,7 @@ This is a list of community-contributed plugins for Berkshelf. A few notes:
8
8
  Plugins
9
9
  -------
10
10
  - [berkshelf-shims](https://github.com/JeffBellegarde/berkshelf-shims) - Provide shims functionality for Berkshelf.
11
- - [vagrant-berkshelf](https://github.com/RiotGames/vagrant-berkshelf) - A Vagrant plugin to add Berkshelf integration to the Chef provisioners.
11
+ - [vagrant-berkshelf](https://github.com/berkshelf/vagrant-berkshelf) - A Vagrant plugin to add Berkshelf integration to the Chef provisioners.
12
12
 
13
13
  I want to add my plugin!
14
14
  ------------------------
@@ -21,4 +21,4 @@ I want to add my plugin!
21
21
 
22
22
  For example:
23
23
 
24
- [berkshelf-myface](https://github.com/RiotGames/berkshelf-myface) - A plugin to add myface support to Berkshelf.
24
+ [berkshelf-myface](https://github.com/berkshelf/berkshelf-myface) - A plugin to add myface support to Berkshelf.
data/README.md CHANGED
@@ -1,9 +1,7 @@
1
1
  Berkshelf
2
2
  =========
3
3
  [![Gem Version](https://badge.fury.io/rb/berkshelf.png)](http://badge.fury.io/rb/berkshelf)
4
- [![Build Status](https://travis-ci.org/RiotGames/berkshelf.png?branch=master)](https://travis-ci.org/RiotGames/berkshelf)
5
- [![Dependency Status](https://gemnasium.com/RiotGames/berkshelf.png)](https://gemnasium.com/RiotGames/berkshelf)
6
- [![Code Climate](https://codeclimate.com/github/RiotGames/berkshelf.png)](https://codeclimate.com/github/RiotGames/berkshelf)
4
+ [![Build Status](https://travis-ci.org/berkshelf/berkshelf.png?branch=master)](https://travis-ci.org/berkshelf/berkshelf)
7
5
 
8
6
  Manage a Cookbook or an Application's Cookbook dependencies
9
7
 
@@ -33,13 +31,13 @@ Ruby 1.9.1 and 1.9.2 are not officially supported. If you encounter problems, pl
33
31
 
34
32
  Bash Completion
35
33
  ---------------
36
- There is a [berkshelf bash completion script](https://raw.github.com/RiotGames/berkshelf/master/berkshelf-complete.sh). If you're using homebrew, you can install it like this:
34
+ There is a [berkshelf bash completion script](https://raw.github.com/berkshelf/berkshelf/master/berkshelf-complete.sh). If you're using homebrew, you can install it like this:
37
35
 
38
36
  brew install bash-completion # if you haven't already
39
37
 
40
38
  Download the latest script
41
39
 
42
- cd `brew --prefix`/etc/bash_completion.d && wget https://raw.github.com/RiotGames/berkshelf/master/berkshelf-complete.sh
40
+ cd `brew --prefix`/etc/bash_completion.d && wget https://raw.github.com/berkshelf/berkshelf/master/berkshelf-complete.sh
43
41
 
44
42
  And make sure you have this in your bash/zsh profile:
45
43
 
@@ -47,7 +45,7 @@ And make sure you have this in your bash/zsh profile:
47
45
 
48
46
  Plugins
49
47
  -------
50
- Please see [Plugins page](https://github.com/RiotGames/berkshelf/blob/master/PLUGINS.md) for more information.
48
+ Please see [Plugins page](https://github.com/berkshelf/berkshelf/blob/master/PLUGINS.md) for more information.
51
49
 
52
50
  Configuration
53
51
  -------------
@@ -61,9 +59,7 @@ $PWD/config.json
61
59
  ~/.berkshelf/config.json
62
60
  ```
63
61
 
64
- You are encouraged to keep project-specific configuration in the `$PWD/.berkshelf` directory. You can generate a project-configuration file by running:
65
-
66
- $ berks configure --path ./.berkshelf/config.json
62
+ You are encouraged to keep project-specific configuration in the `$PWD/.berkshelf` directory. A default configuration file is generated for you, but you can update the values to suit your needs.
67
63
 
68
64
  SSL Errors
69
65
  ----------
@@ -89,6 +85,6 @@ Authors
89
85
  - Justin Campbell (<justin@justincampbell.me>)
90
86
  - Seth Vargo (<sethvargo@gmail.com>)
91
87
 
92
- Thank you to all of our [Contributors](https://github.com/RiotGames/berkshelf/graphs/contributors), testers, and users.
88
+ Thank you to all of our [Contributors](https://github.com/berkshelf/berkshelf/graphs/contributors), testers, and users.
93
89
 
94
- If you'd like to contribute, please see our [contribution guidelines](https://github.com/RiotGames/berkshelf/blob/master/CONTRIBUTING.md) first.
90
+ If you'd like to contribute, please see our [contribution guidelines](https://github.com/berkshelf/berkshelf/blob/master/CONTRIBUTING.md) first.
@@ -38,7 +38,7 @@ Gem::Specification.new do |s|
38
38
  s.add_dependency 'hashie', '>= 2.0.2'
39
39
  s.add_dependency 'minitar', '~> 0.5.4'
40
40
  s.add_dependency 'retryable', '~> 1.3.3'
41
- s.add_dependency 'ridley', '~> 1.6'
41
+ s.add_dependency 'ridley', '~> 2.3'
42
42
  s.add_dependency 'solve', '>= 0.8.0'
43
43
  s.add_dependency 'thor', '~> 0.18.0'
44
44
 
@@ -1,3 +1,4 @@
1
+ @api_server
1
2
  Feature: berks apply
2
3
  Scenario: Locking a cookbook version with dependencies
3
4
  Given the cookbook store contains a cookbook "fake" "1.0.0" with dependencies:
@@ -9,10 +10,11 @@ Feature: berks apply
9
10
  """
10
11
  cookbook 'fake', '1.0.0'
11
12
  """
12
- When I successfully run `berks apply my_env`
13
+ When I successfully run `berks install`
14
+ And I successfully run `berks apply my_env`
13
15
  Then the version locks in the "my_env" environment should be:
14
- | fake | 1.0.0 |
15
- | dependency | 2.0.0 |
16
+ | fake | = 1.0.0 |
17
+ | dependency | = 2.0.0 |
16
18
 
17
19
 
18
20
  Scenario: Locking cookbook versions to a non-existent Chef Environment
@@ -23,9 +25,18 @@ Feature: berks apply
23
25
  """
24
26
  cookbook 'fake', '1.0.0'
25
27
  """
26
- When I run `berks apply my_env`
28
+ When I successfully run `berks install`
29
+ And I run `berks apply my_env`
27
30
  Then the output should contain:
28
31
  """
29
32
  The environment 'my_env' does not exist
30
33
  """
31
34
  And the exit status should be "EnvironmentNotFound"
35
+
36
+ Scenario: Locking an environment when no lockfile is present
37
+ When I run `berks apply my_env`
38
+ Then the output should contain:
39
+ """
40
+ No lockfile found at Berksfile.lock
41
+ """
42
+ And the exit status should be "LockfileNotFound"
@@ -13,7 +13,7 @@ Feature: berks cookbook
13
13
  | chef-minitest | Chef-Minitest |
14
14
  | scmversion | SCMVersion |
15
15
  | no-bundler | no Bundler |
16
- # Disable testing of skip git until Test Kitchen supports the skip_git flag in it's generator
16
+ # Disable testing of skip git until Test Kitchen supports the skip_git flag in its generator
17
17
  # https://github.com/opscode/test-kitchen/issues/141
18
18
  # | skip-git | no Git |
19
19
  | skip-vagrant | no Vagrant |
@@ -59,8 +59,8 @@ Feature: berks install
59
59
  When I successfully run `berks install`
60
60
  Then the output should contain:
61
61
  """
62
- Installing ruby (1.0.0)
63
- Installing elixir (1.0.0)
62
+ Installing ruby (1.0.0) from http://localhost:26310/ (via 0.0.0.0)
63
+ Installing elixir (1.0.0) from http://localhost:26310/ (via 0.0.0.0)
64
64
  """
65
65
  And the cookbook store should have the cookbooks:
66
66
  | ruby | 1.0.0 |
@@ -205,9 +205,9 @@ Feature: berks install
205
205
  | berkshelf-cookbook-fixture | 1.0.0 | 93f5768b7d14df45e10d16c8bf6fe98ba3ff809a |
206
206
  And the output should contain:
207
207
  """
208
- Fetching 'berkshelf-cookbook-fixture' from github: 'RiotGames/berkshelf-cookbook-fixture' with branch: 'rel' over protocol: 'git'
208
+ Fetching 'berkshelf-cookbook-fixture' from github: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git' with branch: 'rel'
209
209
  building universe...
210
- Using berkshelf-cookbook-fixture (1.0.0) github: 'RiotGames/berkshelf-cookbook-fixture' with branch: 'rel' over protocol: 'git'
210
+ Using berkshelf-cookbook-fixture (1.0.0) github: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git' with branch: 'rel' at ref: '93f5768b7d14df45e10d16c8bf6fe98ba3ff809a'
211
211
  """
212
212
 
213
213
 
@@ -227,6 +227,37 @@ Feature: berks install
227
227
  """
228
228
 
229
229
 
230
+ Scenario: installing a Berksfile that contains a Git location with a ref
231
+ Given I have a Berksfile pointing at the local Berkshelf API with:
232
+ """
233
+ cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git", ref: "70a527e17d91f01f031204562460ad1c17f972ee"
234
+ """
235
+ When I successfully run `berks install`
236
+ Then the cookbook store should have the git cookbooks:
237
+ | berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
238
+ And the output should contain:
239
+ """
240
+ Fetching 'berkshelf-cookbook-fixture' from git: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git' with ref: '70a527e17d91f01f031204562460ad1c17f972ee'
241
+ building universe...
242
+ Using berkshelf-cookbook-fixture (0.2.0) git: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git' with ref: '70a527e17d91f01f031204562460ad1c17f972ee'
243
+ """
244
+
245
+
246
+ Scenario: installing a Berksfile that contains a Git location with an abbreviated ref
247
+ Given I have a Berksfile pointing at the local Berkshelf API with:
248
+ """
249
+ cookbook "berkshelf-cookbook-fixture", git: "git://github.com/RiotGames/berkshelf-cookbook-fixture.git", ref: "70a527"
250
+ """
251
+ When I successfully run `berks install`
252
+ Then the cookbook store should have the git cookbooks:
253
+ | berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
254
+ And the output should contain:
255
+ """
256
+ Fetching 'berkshelf-cookbook-fixture' from git: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git' with ref: '70a527'
257
+ building universe...
258
+ Using berkshelf-cookbook-fixture (0.2.0) git: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git' with ref: '70a527' at ref: '70a527e17d91f01f031204562460ad1c17f972ee'
259
+ """
260
+
230
261
  Scenario: installing a Berksfile that contains a GitHub location
231
262
  Given I have a Berksfile pointing at the local Berkshelf API with:
232
263
  """
@@ -237,31 +268,70 @@ Feature: berks install
237
268
  | berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
238
269
  And the output should contain:
239
270
  """
240
- Fetching 'berkshelf-cookbook-fixture' from github: 'RiotGames/berkshelf-cookbook-fixture' with branch: 'v0.2.0' over protocol: 'git'
271
+ Fetching 'berkshelf-cookbook-fixture' from github: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git' with branch: 'v0.2.0'
241
272
  building universe...
242
- Using berkshelf-cookbook-fixture (0.2.0) github: 'RiotGames/berkshelf-cookbook-fixture' with branch: 'v0.2.0' over protocol: 'git'
273
+ Using berkshelf-cookbook-fixture (0.2.0) github: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git' with branch: 'v0.2.0' at ref: '70a527e17d91f01f031204562460ad1c17f972ee'
243
274
  """
244
275
 
245
276
 
246
- Scenario Outline: installing a Berksfile that contains a Github location and specific protocol
277
+ Scenario: installing a Berksfile that contains a GitHub location ending in .git
247
278
  Given I have a Berksfile pointing at the local Berkshelf API with:
248
279
  """
249
- cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v1.0.0", protocol: "<protocol>"
280
+ cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture.git", tag: "v0.2.0"
281
+ """
282
+ When I run `berks install`
283
+ Then the output should contain:
284
+ """
285
+ 'RiotGames/berkshelf-cookbook-fixture.git' is not a valid GitHub identifier - should not end in '.git'
286
+ """
287
+ And the exit status should be "InvalidGitHubIdentifier"
288
+
289
+
290
+ Scenario: installing a Berksfile that contains a Github location and protocol git
291
+ Given I have a Berksfile pointing at the local Berkshelf API with:
292
+ """
293
+ cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0", protocol: "git"
294
+ """
295
+ When I successfully run `berks install`
296
+ Then the cookbook store should have the git cookbooks:
297
+ | berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
298
+ And the output should contain:
299
+ """
300
+ Fetching 'berkshelf-cookbook-fixture' from github: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git' with branch: 'v0.2.0'
301
+ building universe...
302
+ Using berkshelf-cookbook-fixture (0.2.0) github: 'git://github.com/RiotGames/berkshelf-cookbook-fixture.git' with branch: 'v0.2.0' at ref: '70a527e17d91f01f031204562460ad1c17f972ee'
303
+ """
304
+
305
+
306
+ Scenario: installing a Berksfile that contains a Github location and protocol https
307
+ Given I have a Berksfile pointing at the local Berkshelf API with:
308
+ """
309
+ cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0", protocol: "https"
250
310
  """
251
311
  When I successfully run `berks install`
252
312
  Then the cookbook store should have the git cookbooks:
253
- | berkshelf-cookbook-fixture | 1.0.0 | b4f968c9001ad8de30f564a2107fab9cfa91f771 |
313
+ | berkshelf-cookbook-fixture | 0.2.0 | 70a527e17d91f01f031204562460ad1c17f972ee |
254
314
  And the output should contain:
255
315
  """
256
- Fetching 'berkshelf-cookbook-fixture' from github: 'RiotGames/berkshelf-cookbook-fixture' with branch: 'v1.0.0' over protocol: '<protocol>'
316
+ Fetching 'berkshelf-cookbook-fixture' from github: 'https://github.com/RiotGames/berkshelf-cookbook-fixture.git' with branch: 'v0.2.0'
257
317
  building universe...
258
- Using berkshelf-cookbook-fixture (1.0.0) github: 'RiotGames/berkshelf-cookbook-fixture' with branch: 'v1.0.0' over protocol: '<protocol>'
318
+ Using berkshelf-cookbook-fixture (0.2.0) github: 'https://github.com/RiotGames/berkshelf-cookbook-fixture.git' with branch: 'v0.2.0' at ref: '70a527e17d91f01f031204562460ad1c17f972ee'
259
319
  """
260
320
 
261
- Examples:
262
- | protocol |
263
- | git |
264
- | https |
321
+
322
+ # GitHub doesn't permit anonymous SSH access, so we are going to get a
323
+ # failure message back. That's okay, if GitHub tells us our key was denied,
324
+ # we know the connection has made it that far.
325
+ Scenario: installing a Berksfile that contains a Github location and protocol ssh
326
+ Given I have a Berksfile pointing at the local Berkshelf API with:
327
+ """
328
+ cookbook "berkshelf-cookbook-fixture", github: "RiotGames/berkshelf-cookbook-fixture", tag: "v0.2.0", protocol: "ssh"
329
+ """
330
+ When I run `berks install`
331
+ Then the output should contain:
332
+ """
333
+ Permission denied (publickey).
334
+ """
265
335
 
266
336
 
267
337
  Scenario: installing a Berksfile that contains a Github location and an unsupported protocol