berkshelf 2.0.18 → 3.0.0.beta1
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/.ruby-version +1 -1
- data/.travis.yml +4 -1
- data/CHANGELOG.md +2 -26
- data/Gemfile +12 -2
- data/README.md +9 -1
- data/berkshelf.gemspec +9 -18
- data/bin/berks +3 -13
- data/features/apply_command.feature +11 -9
- data/features/berksfile.feature +8 -10
- data/features/config.feature +1 -2
- data/features/configure_command.feature +13 -14
- data/features/contingent_command.feature +13 -1
- data/features/cookbook_command.feature +2 -4
- data/features/groups_install.feature +10 -2
- data/features/help.feature +1 -1
- data/features/init_command.feature +5 -7
- data/features/install_command.feature +157 -228
- data/features/json_formatter.feature +27 -15
- data/features/licenses.feature +18 -12
- data/features/list_command.feature +6 -1
- data/features/lockfile.feature +116 -72
- data/features/outdated_command.feature +3 -47
- data/features/package_command.feature +10 -7
- data/features/shelf/show.feature +2 -2
- data/features/shelf/uninstall.feature +2 -2
- data/features/show_command.feature +10 -3
- data/features/step_definitions/chef/config_steps.rb +12 -0
- data/features/step_definitions/chef_server_steps.rb +16 -16
- data/features/step_definitions/cli_steps.rb +3 -79
- data/features/step_definitions/config_steps.rb +43 -0
- data/features/step_definitions/environment_steps.rb +7 -0
- data/features/step_definitions/filesystem_steps.rb +12 -57
- data/features/step_definitions/gem_steps.rb +1 -2
- data/features/step_definitions/json_steps.rb +3 -1
- data/features/step_definitions/lockfile_steps.rb +4 -0
- data/features/step_definitions/utility_steps.rb +0 -19
- data/features/support/aruba.rb +12 -0
- data/features/support/env.rb +52 -57
- data/features/update_command.feature +37 -23
- data/features/upload_command.feature +96 -160
- data/generator_files/Berksfile.erb +2 -1
- data/generator_files/Vagrantfile.erb +3 -0
- data/generator_files/default_test.rb.erb +1 -1
- data/generator_files/helpers.rb.erb +1 -1
- data/lib/berkshelf.rb +43 -24
- data/lib/berkshelf/api_client.rb +67 -0
- data/lib/berkshelf/api_client/remote_cookbook.rb +42 -0
- data/lib/berkshelf/berksfile.rb +232 -420
- data/lib/berkshelf/cached_cookbook.rb +22 -10
- data/lib/berkshelf/chef/config.rb +1 -0
- data/lib/berkshelf/cli.rb +66 -68
- data/lib/berkshelf/commands/shelf.rb +1 -1
- data/lib/berkshelf/community_rest.rb +10 -17
- data/lib/berkshelf/config.rb +23 -27
- data/lib/berkshelf/cookbook_generator.rb +3 -4
- data/lib/berkshelf/cookbook_store.rb +74 -17
- data/lib/berkshelf/core_ext/file.rb +2 -2
- data/lib/berkshelf/core_ext/pathname.rb +7 -5
- data/lib/berkshelf/{cookbook_source.rb → dependency.rb} +47 -67
- data/lib/berkshelf/downloader.rb +49 -106
- data/lib/berkshelf/errors.rb +64 -71
- data/lib/berkshelf/formatters.rb +11 -9
- data/lib/berkshelf/formatters/human_readable.rb +9 -9
- data/lib/berkshelf/formatters/json.rb +14 -4
- data/lib/berkshelf/init_generator.rb +3 -3
- data/lib/berkshelf/installer.rb +136 -0
- data/lib/berkshelf/location.rb +91 -131
- data/lib/berkshelf/locations/git_location.rb +9 -11
- data/lib/berkshelf/locations/github_location.rb +1 -1
- data/lib/berkshelf/locations/path_location.rb +10 -27
- data/lib/berkshelf/lockfile.rb +92 -70
- data/lib/berkshelf/logger.rb +4 -7
- data/lib/berkshelf/mixin/config.rb +21 -4
- data/lib/berkshelf/resolver.rb +60 -150
- data/lib/berkshelf/resolver/graph.rb +44 -0
- data/lib/berkshelf/source.rb +55 -0
- data/lib/berkshelf/source_uri.rb +38 -0
- data/lib/berkshelf/version.rb +1 -1
- data/spec/config/knife.rb +1 -1
- data/spec/fixtures/cassettes/Berkshelf_Resolver/_initialize/adds_the_dependencies_of_the_dependency_as_dependencies.yml +3694 -0
- data/spec/fixtures/cookbooks/example_cookbook/Berksfile.lock +1 -1
- data/spec/fixtures/lockfiles/default.lock +1 -1
- data/spec/spec_helper.rb +20 -121
- data/spec/support/chef_api.rb +3 -4
- data/spec/support/chef_server.rb +20 -11
- data/spec/support/git.rb +127 -0
- data/spec/support/kitchen.rb +12 -0
- data/spec/support/path_helpers.rb +69 -0
- data/spec/unit/berkshelf/api_client/remote_cookbook_spec.rb +23 -0
- data/spec/unit/berkshelf/api_client_spec.rb +57 -0
- data/spec/unit/berkshelf/berksfile_spec.rb +206 -324
- data/spec/unit/berkshelf/cached_cookbook_spec.rb +73 -38
- data/spec/unit/berkshelf/community_rest_spec.rb +30 -71
- data/spec/unit/berkshelf/config_spec.rb +3 -14
- data/spec/unit/berkshelf/cookbook_generator_spec.rb +1 -2
- data/spec/unit/berkshelf/cookbook_store_spec.rb +12 -7
- data/spec/unit/berkshelf/dependency_spec.rb +285 -0
- data/spec/unit/berkshelf/downloader_spec.rb +4 -183
- data/spec/unit/berkshelf/formatters/null_spec.rb +1 -1
- data/spec/unit/berkshelf/formatters_spec.rb +4 -2
- data/spec/unit/berkshelf/git_spec.rb +15 -15
- data/spec/unit/berkshelf/installer_spec.rb +39 -0
- data/spec/unit/berkshelf/location_spec.rb +87 -114
- data/spec/unit/berkshelf/locations/git_location_spec.rb +41 -53
- data/spec/unit/berkshelf/locations/path_location_spec.rb +13 -23
- data/spec/unit/berkshelf/lockfile_spec.rb +38 -40
- data/spec/unit/berkshelf/resolver/graph_spec.rb +44 -0
- data/spec/unit/berkshelf/resolver_spec.rb +34 -83
- data/spec/unit/berkshelf/source_spec.rb +23 -0
- data/spec/unit/berkshelf/source_uri_spec.rb +29 -0
- metadata +149 -188
- checksums.yaml +0 -7
- data/features/default_locations.feature +0 -127
- data/features/step_definitions/berksfile_steps.rb +0 -8
- data/features/step_definitions/configure_cli_steps.rb +0 -19
- data/features/vendor_install.feature +0 -19
- data/lib/berkshelf/core_ext/openuri.rb +0 -36
- data/lib/berkshelf/core_ext/rbzip2.rb +0 -8
- data/lib/berkshelf/locations/chef_api_location.rb +0 -228
- data/lib/berkshelf/locations/site_location.rb +0 -92
- data/lib/berkshelf/test.rb +0 -35
- data/spec/knife.rb.sample +0 -12
- data/spec/support/test_generators.rb +0 -27
- data/spec/unit/berkshelf/cli_spec.rb +0 -16
- data/spec/unit/berkshelf/cookbook_source_spec.rb +0 -358
- data/spec/unit/berkshelf/core_ext/pathname_spec.rb +0 -46
- data/spec/unit/berkshelf/locations/chef_api_location_spec.rb +0 -139
- data/spec/unit/berkshelf/locations/site_location_spec.rb +0 -19
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1.9.3-p429
|
data/.travis.yml
CHANGED
|
@@ -8,7 +8,10 @@ notifications:
|
|
|
8
8
|
- "irc.freenode.org#berkshelf"
|
|
9
9
|
skip_join: true
|
|
10
10
|
use_notice: true
|
|
11
|
+
bundler_args: --without guard
|
|
12
|
+
before_install:
|
|
13
|
+
- sudo apt-get install -qq libarchive12 libarchive-dev
|
|
11
14
|
before_script:
|
|
12
15
|
- git config --global user.email "ci@berkshelf.com"
|
|
13
16
|
- git config --global user.name "Berkshelf"
|
|
14
|
-
script:
|
|
17
|
+
script: bundle exec thor spec:ci
|
data/CHANGELOG.md
CHANGED
|
@@ -1,30 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 3.0.0
|
|
2
2
|
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
# 2.0.17
|
|
6
|
-
|
|
7
|
-
* Fix constraint on Hashie
|
|
8
|
-
|
|
9
|
-
# 2.0.16
|
|
10
|
-
|
|
11
|
-
* Update constraint on Ridley
|
|
12
|
-
|
|
13
|
-
# 2.0.14
|
|
14
|
-
|
|
15
|
-
* Backport changes from master to allow detecting cookbooks by metadata.json
|
|
16
|
-
|
|
17
|
-
# 2.0.13
|
|
18
|
-
|
|
19
|
-
* Lock transitive dependency on Faraday
|
|
20
|
-
|
|
21
|
-
# 2.0.10
|
|
22
|
-
|
|
23
|
-
* Huge performance increase when resolving a Berksfile when the Berkshelf contains a lot of cookbooks
|
|
24
|
-
|
|
25
|
-
# 2.0.9
|
|
26
|
-
|
|
27
|
-
* Update required version of Ridley
|
|
3
|
+
* New "universe" resolver which communicates with an API server to resolve constraint graphs faster and more reliably
|
|
28
4
|
|
|
29
5
|
# 2.0.7
|
|
30
6
|
|
data/Gemfile
CHANGED
|
@@ -2,8 +2,14 @@ source 'https://rubygems.org'
|
|
|
2
2
|
|
|
3
3
|
gemspec
|
|
4
4
|
|
|
5
|
-
group :
|
|
6
|
-
gem '
|
|
5
|
+
group :guard do
|
|
6
|
+
gem 'coolline', '~> 0.4.2'
|
|
7
|
+
gem 'guard', '~> 1.8'
|
|
8
|
+
gem 'guard-cane'
|
|
9
|
+
gem 'guard-cucumber'
|
|
10
|
+
gem 'guard-rspec'
|
|
11
|
+
gem 'guard-spork'
|
|
12
|
+
gem 'guard-yard'
|
|
7
13
|
|
|
8
14
|
require 'rbconfig'
|
|
9
15
|
|
|
@@ -25,3 +31,7 @@ group :development do
|
|
|
25
31
|
gem 'win32console', require: false
|
|
26
32
|
end
|
|
27
33
|
end
|
|
34
|
+
|
|
35
|
+
group :test do
|
|
36
|
+
gem 'berkshelf-api', github: "RiotGames/berkshelf-api"
|
|
37
|
+
end
|
data/README.md
CHANGED
|
@@ -23,6 +23,14 @@ Usage
|
|
|
23
23
|
-----
|
|
24
24
|
See [berkshelf.com](http://berkshelf.com) for up-to-date usage instructions.
|
|
25
25
|
|
|
26
|
+
Supported Platforms
|
|
27
|
+
-------------------
|
|
28
|
+
Berkshelf is tested on Ruby 1.9.3, 2.0.0, and JRuby 1.6+.
|
|
29
|
+
|
|
30
|
+
Ruby 1.9 mode is required on all interpreters.
|
|
31
|
+
|
|
32
|
+
Ruby 1.9.1 and 1.9.2 are not officially supported. If you encounter problems, please upgrade to Ruby 2.0 or 1.9.3.
|
|
33
|
+
|
|
26
34
|
Bash Completion
|
|
27
35
|
---------------
|
|
28
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:
|
|
@@ -60,7 +68,7 @@ You are encouraged to keep project-specific configuration in the `$PWD/.berkshel
|
|
|
60
68
|
SSL Errors
|
|
61
69
|
----------
|
|
62
70
|
|
|
63
|
-
If you have trouble getting Berkshelf to successfully talk to an SSL Chef
|
|
71
|
+
If you have trouble getting Berkshelf to successfully talk to an SSL Chef Server, you can try making sure you
|
|
64
72
|
have a certificate bundle available to your shell. `export SSL_CERT_FILE=...path/to/cert/file...`
|
|
65
73
|
|
|
66
74
|
If you need to disable SSL, you can in `~/.berkshelf/config.json` like so:
|
data/berkshelf.gemspec
CHANGED
|
@@ -27,21 +27,21 @@ Gem::Specification.new do |s|
|
|
|
27
27
|
s.name = 'berkshelf'
|
|
28
28
|
s.require_paths = ['lib']
|
|
29
29
|
s.version = Berkshelf::VERSION
|
|
30
|
-
s.required_ruby_version = '>= 1.9.
|
|
30
|
+
s.required_ruby_version = '>= 1.9.2'
|
|
31
31
|
s.required_rubygems_version = '>= 1.8.0'
|
|
32
32
|
|
|
33
|
-
s.add_dependency 'activesupport', '~> 3.2.0'
|
|
34
33
|
s.add_dependency 'addressable', '~> 2.3.4'
|
|
34
|
+
s.add_dependency 'buff-config', '~> 0.1'
|
|
35
|
+
s.add_dependency 'buff-extensions', '~> 0.4'
|
|
35
36
|
s.add_dependency 'buff-shell_out', '~> 0.1'
|
|
36
|
-
s.add_dependency '
|
|
37
|
-
s.add_dependency '
|
|
37
|
+
s.add_dependency 'celluloid', '>= 0.14.0'
|
|
38
|
+
s.add_dependency 'faraday', '>= 0.8.5'
|
|
39
|
+
s.add_dependency 'hashie', '>= 2.0.2'
|
|
38
40
|
s.add_dependency 'minitar', '~> 0.5.4'
|
|
39
41
|
s.add_dependency 'retryable', '~> 1.3.3'
|
|
40
|
-
s.add_dependency 'ridley', '~> 1.
|
|
41
|
-
s.add_dependency 'solve', '
|
|
42
|
+
s.add_dependency 'ridley', '~> 1.3.0'
|
|
43
|
+
s.add_dependency 'solve', '>= 0.5.0'
|
|
42
44
|
s.add_dependency 'thor', '~> 0.18.0'
|
|
43
|
-
s.add_dependency 'rbzip2', '~> 0.2.0'
|
|
44
|
-
s.add_dependency 'faraday', '~> 0.8.5' # lock tranisitive dependency of Ridley
|
|
45
45
|
|
|
46
46
|
s.add_development_dependency 'aruba', '~> 0.5'
|
|
47
47
|
s.add_development_dependency 'cane', '~> 2.5'
|
|
@@ -49,18 +49,9 @@ Gem::Specification.new do |s|
|
|
|
49
49
|
s.add_development_dependency 'fuubar', '~> 1.1'
|
|
50
50
|
s.add_development_dependency 'rake', '~> 0.9'
|
|
51
51
|
s.add_development_dependency 'rspec', '~> 2.13'
|
|
52
|
-
s.add_development_dependency 'simplecov', '~> 0.7'
|
|
53
52
|
s.add_development_dependency 'spork', '~> 0.9'
|
|
53
|
+
s.add_development_dependency 'test-kitchen', '>= 1.0.0.alpha7'
|
|
54
54
|
s.add_development_dependency 'vcr', '~> 2.4'
|
|
55
55
|
s.add_development_dependency 'webmock', '~> 1.11'
|
|
56
56
|
s.add_development_dependency 'yard', '~> 0.8'
|
|
57
|
-
|
|
58
|
-
# Guard extensions for development
|
|
59
|
-
s.add_development_dependency 'coolline', '~> 0.4.2' # readline for guard on MRI
|
|
60
|
-
s.add_development_dependency 'guard', '~> 1.8'
|
|
61
|
-
s.add_development_dependency 'guard-cane'
|
|
62
|
-
s.add_development_dependency 'guard-cucumber'
|
|
63
|
-
s.add_development_dependency 'guard-rspec'
|
|
64
|
-
s.add_development_dependency 'guard-spork'
|
|
65
|
-
s.add_development_dependency 'guard-yard'
|
|
66
57
|
end
|
data/bin/berks
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
-
$:.push File.expand_path(
|
|
3
|
-
require 'berkshelf'
|
|
2
|
+
$:.push File.expand_path('../../lib', __FILE__)
|
|
3
|
+
require 'berkshelf/cli'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
Berkshelf::Cli.start
|
|
7
|
-
rescue Berkshelf::BerkshelfError => e
|
|
8
|
-
Berkshelf.ui.error e
|
|
9
|
-
Berkshelf.ui.error "\t" + e.backtrace.join("\n\t") if ENV['BERKSHELF_DEBUG']
|
|
10
|
-
exit e.status_code
|
|
11
|
-
rescue Ridley::Errors::RidleyError => e
|
|
12
|
-
Berkshelf.ui.error "#{e.class} #{e}"
|
|
13
|
-
Berkshelf.ui.error "\t" + e.backtrace.join("\n\t") if ENV['BERKSHELF_DEBUG']
|
|
14
|
-
exit 47
|
|
15
|
-
end
|
|
5
|
+
Berkshelf::Cli::Runner.new(ARGV.dup).execute!
|
|
@@ -3,36 +3,38 @@ Feature: Applying cookbook versions to a Chef Environment
|
|
|
3
3
|
I want to push my berks resolved cookbook versions to my environment
|
|
4
4
|
So that I can avoid manual configuration of my environments
|
|
5
5
|
|
|
6
|
-
@chef_server
|
|
7
6
|
Scenario: Locking a cookbook version with dependencies
|
|
8
7
|
Given the cookbook store contains a cookbook "fake" "1.0.0" with dependencies:
|
|
9
8
|
| dependency | 2.0.0 |
|
|
10
9
|
And the cookbook store has the cookbooks:
|
|
11
10
|
| dependency | 2.0.0 |
|
|
12
|
-
And
|
|
11
|
+
And The Chef Server has an environment named "berkshelf_lock_test"
|
|
13
12
|
And I write to "Berksfile" with:
|
|
14
13
|
"""
|
|
14
|
+
source "http://localhost:26210"
|
|
15
|
+
|
|
15
16
|
cookbook 'fake', '1.0.0'
|
|
16
17
|
"""
|
|
17
18
|
When I successfully run `berks apply berkshelf_lock_test`
|
|
18
|
-
Then the version locks in "berkshelf_lock_test" should be:
|
|
19
|
+
Then the version locks in the "berkshelf_lock_test" environment should be:
|
|
19
20
|
| cookbook | version_lock |
|
|
20
|
-
| fake |
|
|
21
|
-
| dependency |
|
|
21
|
+
| fake | 1.0.0 |
|
|
22
|
+
| dependency | 2.0.0 |
|
|
22
23
|
And the exit status should be 0
|
|
23
24
|
|
|
24
|
-
@chef_server
|
|
25
25
|
Scenario: Locking cookbook versions to a non-existent Chef Environment
|
|
26
|
-
Given
|
|
26
|
+
Given The Chef Server does not have an environment named "berkshelf_lock_test"
|
|
27
27
|
And the cookbook store has the cookbooks:
|
|
28
28
|
| fake | 1.0.0 |
|
|
29
29
|
And I write to "Berksfile" with:
|
|
30
30
|
"""
|
|
31
|
+
source "http://localhost:26210"
|
|
32
|
+
|
|
31
33
|
cookbook 'fake', '1.0.0'
|
|
32
34
|
"""
|
|
33
|
-
When I run
|
|
35
|
+
When I run `berks apply berkshelf_lock_test`
|
|
34
36
|
Then the output should contain:
|
|
35
37
|
"""
|
|
36
38
|
The environment 'berkshelf_lock_test' does not exist
|
|
37
39
|
"""
|
|
38
|
-
And the
|
|
40
|
+
And the exit status should be "EnvironmentNotFound"
|
data/features/berksfile.feature
CHANGED
|
@@ -6,6 +6,8 @@ Feature: Evaluating a Berksfile
|
|
|
6
6
|
Scenario: Containing pure Ruby
|
|
7
7
|
Given I write to "Berksfile" with:
|
|
8
8
|
"""
|
|
9
|
+
source "http://localhost:26210"
|
|
10
|
+
|
|
9
11
|
if ENV['BACON']
|
|
10
12
|
puts "If you don't got bacon..."
|
|
11
13
|
else
|
|
@@ -18,19 +20,12 @@ Feature: Evaluating a Berksfile
|
|
|
18
20
|
"""
|
|
19
21
|
If you don't got bacon...
|
|
20
22
|
"""
|
|
21
|
-
And the exit status should be 0
|
|
22
|
-
|
|
23
|
-
Scenario: Calling valid DSL methods:
|
|
24
|
-
Given I write to "Berksfile" with:
|
|
25
|
-
"""
|
|
26
|
-
site :opscode
|
|
27
|
-
"""
|
|
28
|
-
When I successfully run `berks install`
|
|
29
|
-
And the exit status should be 0
|
|
30
23
|
|
|
31
24
|
Scenario: Containing methods I shouldn't be able to call
|
|
32
25
|
Given I write to "Berksfile" with:
|
|
33
26
|
"""
|
|
27
|
+
source "http://localhost:26210"
|
|
28
|
+
|
|
34
29
|
add_location(:foo)
|
|
35
30
|
"""
|
|
36
31
|
When I run `berks install`
|
|
@@ -40,11 +35,13 @@ Feature: Evaluating a Berksfile
|
|
|
40
35
|
|
|
41
36
|
undefined method `add_location' for
|
|
42
37
|
"""
|
|
43
|
-
And the
|
|
38
|
+
And the exit status should be "BerksfileReadError"
|
|
44
39
|
|
|
45
40
|
Scenario: Containing Ruby syntax errors
|
|
46
41
|
Given I write to "Berksfile" with:
|
|
47
42
|
"""
|
|
43
|
+
source "http://localhost:26210"
|
|
44
|
+
|
|
48
45
|
ptus "This is a ruby syntax error"
|
|
49
46
|
"""
|
|
50
47
|
When I run `berks install`
|
|
@@ -54,3 +51,4 @@ Feature: Evaluating a Berksfile
|
|
|
54
51
|
|
|
55
52
|
undefined method `ptus' for
|
|
56
53
|
"""
|
|
54
|
+
And the exit status should be "BerksfileReadError"
|
data/features/config.feature
CHANGED
|
@@ -4,7 +4,6 @@ Feature: Reading a Berkshelf configuration file
|
|
|
4
4
|
So that I don't have to spend time modifying the default generated output each time
|
|
5
5
|
|
|
6
6
|
Scenario: Missing a Berkshelf configuration file
|
|
7
|
-
Given I do not have a Berkshelf config file
|
|
8
7
|
When I successfully run `berks cookbook sparkle_motion`
|
|
9
8
|
Then the resulting "sparkle_motion" Vagrantfile should contain:
|
|
10
9
|
| config.vm.box = "Berkshelf-CentOS-6.3-x86_64-minimal" |
|
|
@@ -71,7 +70,7 @@ Feature: Reading a Berkshelf configuration file
|
|
|
71
70
|
When I run `berks cookbook sparkle_motion`
|
|
72
71
|
Then the output should contain "Invalid configuration"
|
|
73
72
|
And the output should contain "vagrant.vm.box Expected attribute: 'vagrant.vm.box' to be a type of: 'String'"
|
|
74
|
-
And the
|
|
73
|
+
And the exit status should be "InvalidConfiguration"
|
|
75
74
|
|
|
76
75
|
Scenario: Using a Berkshelf configuration file with Chef configuration information
|
|
77
76
|
Given I have a Berkshelf config file containing:
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
@spawn
|
|
1
2
|
Feature: Configuring Berkshelf via the command line
|
|
2
3
|
As CLI user of Berkshelf
|
|
3
4
|
I want a command to generate a Berkshelf configuration file based on my input
|
|
4
5
|
So I can quickly get up and running with the least amount of resistance
|
|
5
6
|
|
|
7
|
+
Background:
|
|
8
|
+
Given I do not have a Berkshelf config
|
|
9
|
+
|
|
6
10
|
Scenario: Using custom values
|
|
7
|
-
Given I do not have a Berkshelf config file
|
|
8
11
|
When I run `berks configure` interactively
|
|
9
12
|
And I type "https://api.opscode.com/organizations/vialstudios"
|
|
10
13
|
And I type "node_name"
|
|
@@ -17,7 +20,6 @@ Feature: Configuring Berkshelf via the command line
|
|
|
17
20
|
"""
|
|
18
21
|
Config written to:
|
|
19
22
|
"""
|
|
20
|
-
And the exit status should be 0
|
|
21
23
|
And a Berkshelf config file should exist and contain:
|
|
22
24
|
| chef.chef_server_url | https://api.opscode.com/organizations/vialstudios |
|
|
23
25
|
| chef.validation_client_name | reset |
|
|
@@ -26,10 +28,10 @@ Feature: Configuring Berkshelf via the command line
|
|
|
26
28
|
| chef.validation_key_path | /Users/reset/.chef/reset.pem |
|
|
27
29
|
| vagrant.vm.box | Berkshelf-minimal |
|
|
28
30
|
| vagrant.vm.box_url | https://dl.dropbox.com/Berkshelf.box |
|
|
31
|
+
And the exit status should be 0
|
|
29
32
|
|
|
30
33
|
Scenario: Accepting the default values
|
|
31
|
-
Given I do not have a
|
|
32
|
-
And I have a default Chef config
|
|
34
|
+
Given I do not have a Chef config
|
|
33
35
|
When I run `berks configure` interactively
|
|
34
36
|
And I type ""
|
|
35
37
|
And I type ""
|
|
@@ -42,7 +44,6 @@ Feature: Configuring Berkshelf via the command line
|
|
|
42
44
|
"""
|
|
43
45
|
Config written to:
|
|
44
46
|
"""
|
|
45
|
-
And the exit status should be 0
|
|
46
47
|
And a Berkshelf config file should exist and contain:
|
|
47
48
|
| chef.chef_server_url | http://localhost:4000 |
|
|
48
49
|
| chef.validation_client_name | chef-validator |
|
|
@@ -50,19 +51,19 @@ Feature: Configuring Berkshelf via the command line
|
|
|
50
51
|
| chef.validation_key_path | /etc/chef/validation.pem |
|
|
51
52
|
| vagrant.vm.box | Berkshelf-CentOS-6.3-x86_64-minimal |
|
|
52
53
|
| vagrant.vm.box_url | https://dl.dropbox.com/u/31081437/Berkshelf-CentOS-6.3-x86_64-minimal.box |
|
|
54
|
+
And the exit status should be 0
|
|
53
55
|
|
|
54
56
|
Scenario: Creating a Berkshelf configuration file when one already exists
|
|
55
|
-
Given I have a
|
|
56
|
-
When I run `berks configure`
|
|
57
|
+
Given I already have a Berkshelf config file
|
|
58
|
+
When I run `berks configure`
|
|
57
59
|
Then the output should contain:
|
|
58
60
|
"""
|
|
59
61
|
A configuration file already exists. Re-run with the --force flag if you wish to overwrite it.
|
|
60
62
|
"""
|
|
61
|
-
And the
|
|
63
|
+
And the exit status should be "ConfigExists"
|
|
62
64
|
|
|
63
65
|
Scenario Outline: Using the --path option
|
|
64
|
-
|
|
65
|
-
When I run the "configure --path <path>" command interactively
|
|
66
|
+
When I run `berks configure --path <path>` interactively
|
|
66
67
|
And I type "https://api.opscode.com/organizations/vialstudios"
|
|
67
68
|
And I type "node_name"
|
|
68
69
|
And I type "client_key"
|
|
@@ -74,7 +75,6 @@ Feature: Configuring Berkshelf via the command line
|
|
|
74
75
|
"""
|
|
75
76
|
Config written to:
|
|
76
77
|
"""
|
|
77
|
-
And the exit status should be 0
|
|
78
78
|
And a Berkshelf config file should exist at "<path>" and contain:
|
|
79
79
|
| chef.chef_server_url | https://api.opscode.com/organizations/vialstudios |
|
|
80
80
|
| chef.validation_client_name | reset |
|
|
@@ -83,10 +83,9 @@ Feature: Configuring Berkshelf via the command line
|
|
|
83
83
|
| chef.validation_key_path | /Users/reset/.chef/reset.pem |
|
|
84
84
|
| vagrant.vm.box | Berkshelf-minimal |
|
|
85
85
|
| vagrant.vm.box_url | https://dl.dropbox.com/Berkshelf.box |
|
|
86
|
+
And the exit status should be 0
|
|
86
87
|
|
|
87
88
|
Examples:
|
|
88
|
-
|
|
|
89
|
+
| path |
|
|
89
90
|
| .berkshelf/config.json |
|
|
90
91
|
| berkshelf/config.json |
|
|
91
|
-
| berkshelf-config.json |
|
|
92
|
-
| config.json |
|
|
@@ -3,6 +3,11 @@ Feature: Running the contingent command
|
|
|
3
3
|
I want a way to the cookbooks that depend on another
|
|
4
4
|
So that I can better understand my infrastructure
|
|
5
5
|
|
|
6
|
+
Background:
|
|
7
|
+
Given the Berkshelf API server's cache is empty
|
|
8
|
+
And the Chef Server is empty
|
|
9
|
+
And the cookbook store is empty
|
|
10
|
+
|
|
6
11
|
Scenario: When there are dependent cookbooks
|
|
7
12
|
Given the cookbook store has the cookbooks:
|
|
8
13
|
| dep | 1.0.0 |
|
|
@@ -12,6 +17,8 @@ Feature: Running the contingent command
|
|
|
12
17
|
| dep | ~> 1.0.0 |
|
|
13
18
|
And I write to "Berksfile" with:
|
|
14
19
|
"""
|
|
20
|
+
source "http://localhost:26210"
|
|
21
|
+
|
|
15
22
|
cookbook 'fake', '1.0.0'
|
|
16
23
|
cookbook 'ekaf', '1.0.0'
|
|
17
24
|
"""
|
|
@@ -29,6 +36,8 @@ Feature: Running the contingent command
|
|
|
29
36
|
| fake | 1.0.0 |
|
|
30
37
|
And I write to "Berksfile" with:
|
|
31
38
|
"""
|
|
39
|
+
source "http://localhost:26210"
|
|
40
|
+
|
|
32
41
|
cookbook 'fake', '1.0.0'
|
|
33
42
|
"""
|
|
34
43
|
And I successfully run `berks contingent dep`
|
|
@@ -39,7 +48,10 @@ Feature: Running the contingent command
|
|
|
39
48
|
And the exit status should be 0
|
|
40
49
|
|
|
41
50
|
Scenario: When the cookbook is not in the Berksfile
|
|
42
|
-
Given
|
|
51
|
+
Given I write to "Berksfile" with:
|
|
52
|
+
"""
|
|
53
|
+
source "http://localhost:26210"
|
|
54
|
+
"""
|
|
43
55
|
And I successfully run `berks contingent dep`
|
|
44
56
|
Then the output should contain:
|
|
45
57
|
"""
|
|
@@ -9,8 +9,7 @@ Feature: Creating a new cookbook
|
|
|
9
9
|
And the exit status should be 0
|
|
10
10
|
|
|
11
11
|
Scenario Outline: With various options
|
|
12
|
-
When I run
|
|
13
|
-
| --<option> |
|
|
12
|
+
When I successfully run `berks cookbook sparkle_motion --<option>`
|
|
14
13
|
Then I should have a new cookbook skeleton "sparkle_motion" with <feature> support
|
|
15
14
|
And the exit status should be 0
|
|
16
15
|
|
|
@@ -28,8 +27,7 @@ Feature: Creating a new cookbook
|
|
|
28
27
|
|
|
29
28
|
Scenario Outline: When a required supporting gem is not installed
|
|
30
29
|
Given the gem "<gem>" is not installed
|
|
31
|
-
When I run
|
|
32
|
-
| --<option> |
|
|
30
|
+
When I successfully run `berks cookbook sparkle_motion --<option>`
|
|
33
31
|
Then I should have a new cookbook skeleton "sparkle_motion" with <feature> support
|
|
34
32
|
And the output should contain a warning to suggest supporting the option "<option>" by installing "<gem>"
|
|
35
33
|
And the exit status should be 0
|
|
@@ -9,6 +9,8 @@ Feature: Installing specific groups
|
|
|
9
9
|
| takeme | 1.0.0 |
|
|
10
10
|
Given I write to "Berksfile" with:
|
|
11
11
|
"""
|
|
12
|
+
source "http://localhost:26210"
|
|
13
|
+
|
|
12
14
|
group :notme do
|
|
13
15
|
cookbook 'notme', '1.0.0'
|
|
14
16
|
end
|
|
@@ -34,6 +36,8 @@ Feature: Installing specific groups
|
|
|
34
36
|
| takeme | 1.0.0 |
|
|
35
37
|
Given I write to "Berksfile" with:
|
|
36
38
|
"""
|
|
39
|
+
source "http://localhost:26210"
|
|
40
|
+
|
|
37
41
|
group :notme do
|
|
38
42
|
cookbook 'notme', '1.0.0'
|
|
39
43
|
end
|
|
@@ -47,7 +51,7 @@ Feature: Installing specific groups
|
|
|
47
51
|
And I write to "Berksfile.lock" with:
|
|
48
52
|
"""
|
|
49
53
|
{
|
|
50
|
-
"
|
|
54
|
+
"dependencies": {
|
|
51
55
|
"notme": { "locked_version": "1.0.0"},
|
|
52
56
|
"takeme": { "locked_version": "1.0.0"},
|
|
53
57
|
"default": { "locked_version": "1.0.0"}
|
|
@@ -68,6 +72,8 @@ Feature: Installing specific groups
|
|
|
68
72
|
| takeme | 1.0.0 |
|
|
69
73
|
Given I write to "Berksfile" with:
|
|
70
74
|
"""
|
|
75
|
+
source "http://localhost:26210"
|
|
76
|
+
|
|
71
77
|
group :notme do
|
|
72
78
|
cookbook 'notme', '1.0.0'
|
|
73
79
|
end
|
|
@@ -87,6 +93,8 @@ Feature: Installing specific groups
|
|
|
87
93
|
Scenario: Attempting to provide an only and except option
|
|
88
94
|
Given I write to "Berksfile" with:
|
|
89
95
|
"""
|
|
96
|
+
source "http://localhost:26210"
|
|
97
|
+
|
|
90
98
|
group :notme do
|
|
91
99
|
cookbook 'nginx', '= 0.101.2'
|
|
92
100
|
end
|
|
@@ -102,4 +110,4 @@ Feature: Installing specific groups
|
|
|
102
110
|
"""
|
|
103
111
|
Cannot specify both :except and :only
|
|
104
112
|
"""
|
|
105
|
-
And the
|
|
113
|
+
And the exit status should be "ArgumentError"
|