berkshelf 2.0.0.beta → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. data/CHANGELOG.md +19 -1
  2. data/CONTRIBUTING.md +1 -3
  3. data/Gemfile +0 -20
  4. data/Guardfile +3 -3
  5. data/LICENSE +6 -5
  6. data/README.md +1 -0
  7. data/Thorfile +48 -67
  8. data/berkshelf.gemspec +48 -37
  9. data/features/apply_command.feature +17 -11
  10. data/features/config.feature +11 -11
  11. data/features/configure_command.feature +8 -8
  12. data/features/contingent_command.feature +37 -8
  13. data/features/cookbook_command.feature +17 -14
  14. data/features/groups_install.feature +24 -20
  15. data/features/install_command.feature +24 -33
  16. data/features/licenses.feature +112 -0
  17. data/features/list_command.feature +17 -5
  18. data/features/lockfile.feature +307 -188
  19. data/features/outdated_command.feature +1 -4
  20. data/features/package_command.feature +41 -19
  21. data/features/shelf/list.feature +39 -0
  22. data/features/shelf/show.feature +152 -0
  23. data/features/shelf/uninstall.feature +103 -0
  24. data/features/show_command.feature +49 -17
  25. data/features/step_definitions/filesystem_steps.rb +12 -3
  26. data/features/step_definitions/utility_steps.rb +0 -1
  27. data/features/support/env.rb +11 -4
  28. data/features/update_command.feature +22 -10
  29. data/features/upload_command.feature +174 -127
  30. data/features/vendor_install.feature +6 -6
  31. data/generator_files/Berksfile.erb +1 -1
  32. data/generator_files/metadata.rb.erb +7 -7
  33. data/lib/berkshelf.rb +39 -27
  34. data/lib/berkshelf/base_generator.rb +2 -3
  35. data/lib/berkshelf/berksfile.rb +69 -17
  36. data/lib/berkshelf/cached_cookbook.rb +17 -1
  37. data/lib/berkshelf/chef.rb +2 -4
  38. data/lib/berkshelf/chef/config.rb +51 -75
  39. data/lib/berkshelf/chef/cookbook.rb +1 -2
  40. data/lib/berkshelf/chef/cookbook/chefignore.rb +1 -1
  41. data/lib/berkshelf/cli.rb +144 -194
  42. data/lib/berkshelf/command.rb +11 -12
  43. data/lib/berkshelf/commands/shelf.rb +130 -0
  44. data/lib/berkshelf/commands/test_command.rb +11 -0
  45. data/lib/berkshelf/community_rest.rb +1 -2
  46. data/lib/berkshelf/config.rb +14 -10
  47. data/lib/berkshelf/cookbook_generator.rb +30 -24
  48. data/lib/berkshelf/cookbook_source.rb +1 -1
  49. data/lib/berkshelf/cookbook_store.rb +0 -1
  50. data/lib/berkshelf/core_ext.rb +1 -1
  51. data/lib/berkshelf/core_ext/file.rb +1 -1
  52. data/lib/berkshelf/downloader.rb +3 -1
  53. data/lib/berkshelf/errors.rb +128 -53
  54. data/lib/berkshelf/formatters.rb +2 -6
  55. data/lib/berkshelf/formatters/human_readable.rb +8 -2
  56. data/lib/berkshelf/formatters/json.rb +7 -1
  57. data/lib/berkshelf/formatters/null.rb +0 -1
  58. data/lib/berkshelf/git.rb +16 -16
  59. data/lib/berkshelf/init_generator.rb +28 -26
  60. data/lib/berkshelf/location.rb +12 -11
  61. data/lib/berkshelf/locations/chef_api_location.rb +2 -2
  62. data/lib/berkshelf/locations/git_location.rb +0 -1
  63. data/lib/berkshelf/locations/github_location.rb +0 -1
  64. data/lib/berkshelf/locations/path_location.rb +1 -2
  65. data/lib/berkshelf/locations/site_location.rb +3 -2
  66. data/lib/berkshelf/lockfile.rb +29 -10
  67. data/lib/berkshelf/mixin/config.rb +155 -0
  68. data/lib/berkshelf/mixin/logging.rb +0 -1
  69. data/lib/berkshelf/mixin/shellout.rb +71 -0
  70. data/lib/berkshelf/resolver.rb +7 -4
  71. data/lib/berkshelf/test.rb +1 -3
  72. data/lib/berkshelf/ui.rb +8 -4
  73. data/lib/berkshelf/version.rb +1 -1
  74. data/lib/thor/monkies/shell.rb +0 -1
  75. data/spec/config/berkshelf.pem +27 -0
  76. data/spec/config/knife.rb +12 -0
  77. data/spec/config/validator.pem +27 -0
  78. data/spec/spec_helper.rb +4 -8
  79. data/spec/support/chef_api.rb +14 -9
  80. data/spec/support/chef_server.rb +3 -4
  81. data/spec/unit/berkshelf/berksfile_spec.rb +1 -1
  82. data/spec/unit/berkshelf/cookbook_generator_spec.rb +12 -6
  83. data/spec/unit/berkshelf/cookbook_source_spec.rb +13 -1
  84. data/spec/unit/berkshelf/init_generator_spec.rb +5 -0
  85. data/spec/unit/chef/config_spec.rb +9 -10
  86. metadata +216 -93
  87. data/features/info_command.feature +0 -39
  88. data/features/open_command.feature +0 -36
  89. data/lib/berkshelf/cli_commands/test_command.rb +0 -11
  90. data/lib/berkshelf/mixin.rb +0 -10
  91. data/lib/berkshelf/mixin/path_helpers.rb +0 -30
  92. data/spec/support/knife.rb +0 -18
@@ -1,3 +1,21 @@
1
+ # 2.0.0
2
+
3
+ * Huge improvements to the Lockfile
4
+ - They actually work!
5
+ - Now in JSON format
6
+ - Old lockfiles will automatically be converted to the new format
7
+ * Add `berks shelf` command. Any operations on the already installed cookbooks now reside here
8
+ - `berks shelf list` to list all cookbooks in the Berkshelf
9
+ - `berks shelf show` to display information about a specific cookbook in the Berkshelf
10
+ - `berks shelf uninstall` to remove an installed cookbook from the Berkshelf
11
+ * Add `berks package` command. Will package any cookbooks and dependencies defined in your Berksfile into a tar.
12
+ * Add `berks apply` command. Take the locked constraints of your lockfile and apply them directly to the an environment's locked cookbook versions.
13
+ * Test-Kitchen integration (beta)
14
+ - Add `berks test` command. This is a delegator to `bin/kitchen`
15
+ - Berkshelf's Cookbook generators will by default generate Test-Kitchen files for you
16
+ * Remove `berks open` command
17
+ * Rename `berks info` command to `berks show`
18
+
1
19
  # 1.4.4
2
20
 
3
21
  - Bump Ridley dependency to 0.12, bringing in many bugfixes.
@@ -29,7 +47,7 @@
29
47
 
30
48
  # 1.3.1
31
49
  - Support for Vagrant 1.1.x
32
- - Move Berkshelf Vagrant plugin into it's [own repository](https://github.com/RiotGames/berkshelf-vagrant)
50
+ - Move Berkshelf Vagrant plugin into it's [own repository](https://github.com/RiotGames/vagrant-berkshelf)
33
51
  - Added -d flag to output debug information in berks command
34
52
  - Various bug fixes in uploading cookbooks
35
53
 
@@ -34,9 +34,7 @@ Bundler will install all gems and their dependencies required for testing and de
34
34
 
35
35
  ### Running unit (RSpec) and acceptance (Cucumber) tests
36
36
 
37
- Simply copy the `spec/knife.rb.sample` to `spec/knife.rb`, and point it at a
38
- chef server. Berkshelf tests may upload and destroy cookbooks on your chef
39
- server, so be sure to configure a server safe for this task.
37
+ We use Chef Zero - an in-memory Chef Server for running tests. It is automatically managed by the Specs and Cukes. Simply run:
40
38
 
41
39
  $ bundle exec guard start
42
40
 
data/Gemfile CHANGED
@@ -3,17 +3,6 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  group :development do
6
- gem 'chef-zero', '>= 0.9.9'
7
- gem 'coolline'
8
- gem 'guard', '>= 1.5.0'
9
- gem 'guard-cane'
10
- gem 'guard-cucumber'
11
- gem 'guard-rspec'
12
- gem 'guard-spork'
13
- gem 'guard-yard'
14
- gem 'redcarpet'
15
- gem 'yard'
16
-
17
6
  require 'rbconfig'
18
7
 
19
8
  if RbConfig::CONFIG['target_os'] =~ /darwin/i
@@ -34,12 +23,3 @@ group :development do
34
23
  gem 'win32console', require: false
35
24
  end
36
25
  end
37
-
38
- group :test do
39
- gem 'fuubar'
40
- gem 'json_spec'
41
- gem 'rake', '>= 0.9.2.2'
42
- gem 'rspec'
43
- gem 'thor'
44
- gem 'webmock'
45
- end
data/Guardfile CHANGED
@@ -10,13 +10,13 @@ guard 'yard', stdout: '/dev/null', stderr: '/dev/null' do
10
10
  watch(%r{ext/.+\.c})
11
11
  end
12
12
 
13
- guard 'rspec', cli: "--color --drb --format Fuubar", all_on_start: false, all_after_pass: false do
13
+ guard 'rspec', cli: '--color --drb --format Fuubar', all_on_start: false, all_after_pass: false do
14
14
  watch(%r{^spec/unit/.+_spec\.rb$})
15
15
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
16
- watch('spec/spec_helper.rb') { "spec" }
16
+ watch('spec/spec_helper.rb') { 'spec' }
17
17
  end
18
18
 
19
- guard 'cucumber', cli: "--drb --format pretty --tags ~@no_run --tags ~@wip", all_on_start: false, all_after_pass: false do
19
+ guard 'cucumber', cli: '--drb --format pretty --tags ~@no_run --tags ~@wip', all_on_start: false, all_after_pass: false do
20
20
  watch(%r{^features/.+\.feature$})
21
21
  watch(%r{^features/support/.+$}) { 'features' }
22
22
  watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
data/LICENSE CHANGED
@@ -1,9 +1,10 @@
1
- Author:: Jamie Winsor (<reset@riotgames.com>)
2
- Author:: Josiah Kiehl (<jkiehl@riotgames.com>)
3
- Author:: Michael Ivey (<michael.ivey@riotgames.com>)
4
- Author:: Justin Campbell (<justin.campbell@riotgames.com>)
1
+ Copyright 2012-2013 Riot Games
5
2
 
6
- Copyright 2012 Riot Games
3
+ Jamie Winsor (<reset@riotgames.com>)
4
+ Josiah Kiehl (<jkiehl@riotgames.com>)
5
+ Michael Ivey (<michael.ivey@riotgames.com>)
6
+ Justin Campbell (<justin.campbell@riotgames.com>)
7
+ Seth Vargo (<sethvargo@gmail.com>)
7
8
 
8
9
  Licensed under the Apache License, Version 2.0 (the "License");
9
10
  you may not use this file except in compliance with the License.
data/README.md CHANGED
@@ -79,6 +79,7 @@ Authors
79
79
  - Josiah Kiehl (<jkiehl@riotgames.com>)
80
80
  - Michael Ivey (<michael.ivey@riotgames.com>)
81
81
  - Justin Campbell (<justin.campbell@riotgames.com>)
82
+ - Seth Vargo (<sethvargo@gmail.com>)
82
83
 
83
84
  Thank you to all of our [Contributors](https://github.com/RiotGames/berkshelf/graphs/contributors), testers, and users.
84
85
 
data/Thorfile CHANGED
@@ -1,89 +1,70 @@
1
1
  # encoding: utf-8
2
- $:.push File.expand_path("../lib", __FILE__)
2
+ $:.unshift File.expand_path('../lib', __FILE__)
3
3
 
4
4
  require 'bundler'
5
- require 'bundler/setup'
6
-
7
- require 'berkshelf'
8
5
  require 'thor/rake_compat'
9
6
 
10
- class Default < Thor
11
- class Gem < Thor
12
- include Thor::RakeCompat
13
- Bundler::GemHelper.install_tasks
14
-
15
- namespace :gem
7
+ class Gem < Thor
8
+ include Thor::RakeCompat
9
+ Bundler::GemHelper.install_tasks
16
10
 
17
- desc "build", "Build berkshelf-#{Berkshelf::VERSION}.gem into the pkg directory"
18
- def build
19
- Rake::Task["build"].execute
20
- end
11
+ desc 'build', "Build berkshelf-#{Berkshelf::VERSION}.gem into the pkg directory"
12
+ def build
13
+ Rake::Task['build'].execute
14
+ end
21
15
 
22
- desc "release", "Create tag v#{Berkshelf::VERSION} and build and push berkshelf-#{Berkshelf::VERSION}.gem to Rubygems"
23
- def release
24
- Rake::Task["release"].execute
25
- end
16
+ desc 'install', "Build and install berkshelf-#{Berkshelf::VERSION}.gem into system gems"
17
+ def install
18
+ Rake::Task['install'].execute
19
+ end
26
20
 
27
- desc "install", "Build and install berkshelf-#{Berkshelf::VERSION}.gem into system gems"
28
- def install
29
- Rake::Task["install"].execute
30
- end
21
+ desc 'release', "Create tag v#{Berkshelf::VERSION} and build and push berkshelf-#{Berkshelf::VERSION}.gem to Rubygems"
22
+ def release
23
+ Rake::Task['release'].execute
31
24
  end
25
+ end
32
26
 
33
- class Spec < Thor
34
- include Thor::Actions
27
+ class Spec < Thor
28
+ include Thor::Actions
29
+ default_task :all
35
30
 
36
- namespace :spec
37
- default_task :all
31
+ desc 'all', 'Run all specs and features'
32
+ def all
33
+ exit(units_command && acceptance_command && quality_command)
34
+ end
38
35
 
39
- desc "all", "Run all tests"
40
- def all
41
- unless run_unit && run_acceptance && run_quality
42
- exit 1
43
- end
44
- end
36
+ desc 'ci', 'Run tests on Travis'
37
+ def ci
38
+ ENV['CI'] = 'true' # Travis-CI also sets this, but set it here for local testing
39
+ all
40
+ end
45
41
 
46
- desc "ci", "Run all possible tests on Travis-CI"
47
- def ci
48
- ENV['CI'] = 'true' # Travis-CI also sets this, but set it here for local testing
49
- unless run_unit("--tag ~chef_server") && run_acceptance("--tags ~@chef_server") && run_quality
50
- exit 1
51
- end
52
- end
42
+ desc 'unit', 'Run unit tests'
43
+ def unit
44
+ exit(units_command)
45
+ end
53
46
 
54
- desc "unit", "Run unit tests"
55
- def unit
56
- unless run_unit
57
- exit 1
58
- end
59
- end
47
+ desc 'acceptance', 'Run acceptance tests'
48
+ def acceptance
49
+ exit(acceptance_command)
50
+ end
60
51
 
61
- desc "acceptance", "Run acceptance tests"
62
- def acceptance
63
- unless run_acceptance
64
- exit 1
65
- end
66
- end
52
+ desc 'quality', 'Run code quality tests'
53
+ def quality
54
+ exit(quality_command)
55
+ end
67
56
 
68
- desc "quality", "Run quality tests"
69
- def quality
70
- unless run_quality
71
- exit 1
72
- end
57
+ no_tasks do
58
+ def units_command
59
+ run('rspec --color --format=documentation spec/unit')
73
60
  end
74
61
 
75
- no_tasks do
76
- def run_unit(*flags)
77
- run "rspec --color --format=documentation #{flags.join(' ')} spec"
78
- end
79
-
80
- def run_acceptance(*flags)
81
- run "cucumber --color --format pretty --tags ~@no_run #{flags.join(' ')}"
82
- end
62
+ def acceptance_command
63
+ run('cucumber --color --format pretty --tags ~@no_run')
64
+ end
83
65
 
84
- def run_quality
85
- run "cane --gte coverage/.last_run.json,90"
86
- end
66
+ def quality_command
67
+ run('cane --gte coverage/.last_run.json,90')
87
68
  end
88
69
  end
89
70
  end
@@ -3,53 +3,64 @@ require File.expand_path('../lib/berkshelf/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.authors = [
6
- "Jamie Winsor",
7
- "Josiah Kiehl",
8
- "Michael Ivey",
9
- "Justin Campbell"
6
+ 'Jamie Winsor',
7
+ 'Josiah Kiehl',
8
+ 'Michael Ivey',
9
+ 'Justin Campbell',
10
+ 'Seth Vargo'
10
11
  ]
11
12
  s.email = [
12
- "reset@riotgames.com",
13
- "jkiehl@riotgames.com",
14
- "michael.ivey@riotgames.com",
15
- "justin.campbell@riotgames.com"
13
+ 'reset@riotgames.com',
14
+ 'jkiehl@riotgames.com',
15
+ 'michael.ivey@riotgames.com',
16
+ 'justin.campbell@riotgames.com',
17
+ 'sethvargo@gmail.com'
16
18
  ]
17
19
 
18
20
  s.description = %q{Manages a Cookbook's, or an Application's, Cookbook dependencies}
19
21
  s.summary = s.description
20
- s.homepage = "http://berkshelf.com"
21
- s.license = "Apache 2.0"
22
+ s.homepage = 'http://berkshelf.com'
23
+ s.license = 'Apache 2.0'
22
24
  s.files = `git ls-files`.split($\)
23
25
  s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
24
26
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
25
- s.name = "berkshelf"
26
- s.require_paths = ["lib"]
27
+ s.name = 'berkshelf'
28
+ s.require_paths = ['lib']
27
29
  s.version = Berkshelf::VERSION
28
- s.required_ruby_version = ">= 1.9.1"
29
- s.required_rubygems_version = ">= 1.8.0"
30
+ s.required_ruby_version = '>= 1.9.1'
31
+ s.required_rubygems_version = '>= 1.8.0'
30
32
 
31
- s.add_dependency 'celluloid', '>= 0.14.0'
32
- s.add_dependency 'test-kitchen', '>= 1.0.0.alpha6'
33
- s.add_dependency 'activesupport', '>= 3.2.0'
34
- s.add_dependency 'mixlib-shellout', '~> 1.1'
35
- s.add_dependency 'mixlib-config', '~> 1.1'
36
- s.add_dependency 'faraday', '>= 0.8.5'
37
- s.add_dependency 'ridley', '~> 0.12.1'
38
- s.add_dependency 'chozo', '>= 0.6.1'
39
- s.add_dependency 'hashie', '>= 2.0.2'
40
- s.add_dependency 'minitar'
41
- s.add_dependency 'solve', '>= 0.4.4'
42
- s.add_dependency 'thor', '~> 0.18.0'
43
- s.add_dependency 'retryable'
44
- s.add_dependency 'addressable'
33
+ s.add_dependency 'activesupport', '>= 3.2.0'
34
+ s.add_dependency 'addressable', '~> 2.3.4'
35
+ s.add_dependency 'celluloid', '>= 0.14.0'
36
+ s.add_dependency 'chozo', '>= 0.6.1'
37
+ s.add_dependency 'faraday', '>= 0.8.5'
38
+ s.add_dependency 'hashie', '>= 2.0.2'
39
+ s.add_dependency 'minitar', '~> 0.5.4'
40
+ s.add_dependency 'retryable', '~> 1.3.3'
41
+ s.add_dependency 'ridley', '~> 1.0.0'
42
+ s.add_dependency 'solve', '>= 0.4.4'
43
+ s.add_dependency 'test-kitchen', '>= 1.0.0.alpha7'
44
+ s.add_dependency 'thor', '~> 0.18.0'
45
45
 
46
- s.add_development_dependency 'aruba'
47
- s.add_development_dependency 'cane'
48
- s.add_development_dependency 'rake', '>= 0.9.2.2'
49
- s.add_development_dependency 'rspec'
50
- s.add_development_dependency 'simplecov'
51
- s.add_development_dependency 'spork'
52
- s.add_development_dependency 'thor'
53
- s.add_development_dependency 'webmock'
54
- s.add_development_dependency 'vcr', '~> 2.4.0'
46
+ s.add_development_dependency 'aruba', '~> 0.5'
47
+ s.add_development_dependency 'cane', '~> 2.5'
48
+ s.add_development_dependency 'chef-zero', '~> 1.1'
49
+ s.add_development_dependency 'fuubar', '~> 1.1'
50
+ s.add_development_dependency 'rake', '~> 0.9'
51
+ s.add_development_dependency 'rspec', '~> 2.13'
52
+ s.add_development_dependency 'simplecov', '~> 0.7'
53
+ s.add_development_dependency 'spork', '~> 0.9'
54
+ s.add_development_dependency 'vcr', '~> 2.4'
55
+ s.add_development_dependency 'webmock', '~> 1.11'
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'
55
66
  end
@@ -1,32 +1,38 @@
1
- Feature: lock cookbook versions on the server
1
+ Feature: Applying cookbook versions to a Chef Environment
2
2
  As a berks user
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
6
  @chef_server
7
- Scenario: locking cookbook versions
8
- Given I have an environment named "berkshelf_lock_test"
7
+ Scenario: Locking a cookbook version with dependencies
8
+ Given the cookbook store contains a cookbook "fake" "1.0.0" with dependencies:
9
+ | dependency | 2.0.0 |
10
+ And the cookbook store has the cookbooks:
11
+ | dependency | 2.0.0 |
12
+ And I have an environment named "berkshelf_lock_test"
9
13
  And I write to "Berksfile" with:
10
14
  """
11
- cookbook 'berkshelf-cookbook-fixture', '1.0.0', github: 'RiotGames/berkshelf-cookbook-fixture', branch: 'deps'
15
+ cookbook 'fake', '1.0.0'
12
16
  """
13
- When I successfully run the apply command on "berkshelf_lock_test"
17
+ When I successfully run `berks apply berkshelf_lock_test`
14
18
  Then the version locks in "berkshelf_lock_test" should be:
15
- | cookbook | version_lock |
16
- | berkshelf-cookbook-fixture | 1.0.0 |
17
- | hostsfile | 1.0.1 |
19
+ | cookbook | version_lock |
20
+ | fake | 1.0.0 |
21
+ | dependency | 2.0.0 |
18
22
  And the exit status should be 0
19
23
 
20
24
  @chef_server
21
- Scenario: locking cookbook versions to an environment that does not exist
25
+ Scenario: Locking cookbook versions to a non-existent Chef Environment
22
26
  Given I do not have an environment named "berkshelf_lock_test"
27
+ And the cookbook store has the cookbooks:
28
+ | fake | 1.0.0 |
23
29
  And I write to "Berksfile" with:
24
30
  """
25
- cookbook 'berkshelf-cookbook-fixture'
31
+ cookbook 'fake', '1.0.0'
26
32
  """
27
33
  When I run the apply command on "berkshelf_lock_test"
28
34
  Then the output should contain:
29
35
  """
30
- The environment "berkshelf_lock_test" does not exist.
36
+ The environment 'berkshelf_lock_test' does not exist
31
37
  """
32
38
  And the CLI should exit with the status code for error "EnvironmentNotFound"
@@ -1,17 +1,17 @@
1
- Feature: cookbook creation with a config file
1
+ Feature: Reading a Berkshelf configuration file
2
2
  As a Cookbook author
3
3
  I want to quickly generate a cookbook with my own customizations
4
4
  So that I don't have to spend time modifying the default generated output each time
5
5
 
6
- Scenario: creating a new cookbook when no Berkshelf config exists
6
+ Scenario: Missing a Berkshelf configuration file
7
7
  Given I do not have a Berkshelf config file
8
- When I run the cookbook command to create "sparkle_motion"
8
+ When I successfully run `berks cookbook sparkle_motion`
9
9
  Then the resulting "sparkle_motion" Vagrantfile should contain:
10
10
  | config.vm.box = "Berkshelf-CentOS-6.3-x86_64-minimal" |
11
11
  | config.vm.box_url = "https://dl.dropbox.com/u/31081437/Berkshelf-CentOS-6.3-x86_64-minimal.box" |
12
12
  And the exit status should be 0
13
13
 
14
- Scenario: creating a new cookbook using a Berkshelf config
14
+ Scenario: Using a Berkshelf configuration file
15
15
  Given I have a Berkshelf config file containing:
16
16
  """
17
17
  {
@@ -30,7 +30,7 @@ Feature: cookbook creation with a config file
30
30
  }
31
31
  }
32
32
  """
33
- When I run the cookbook command to create "sparkle_motion"
33
+ When I successfully run `berks cookbook sparkle_motion`
34
34
  Then the resulting "sparkle_motion" Vagrantfile should contain:
35
35
  | config.vm.box = "my_box" |
36
36
  | config.vm.box_url = "http://files.vagrantup.com/lucid64.box" |
@@ -39,7 +39,7 @@ Feature: cookbook creation with a config file
39
39
  | config.vm.network :public_network |
40
40
  And the exit status should be 0
41
41
 
42
- Scenario: creating a new cookbook using a partial Berkshelf config
42
+ Scenario: Using a partial Berkshelf configuration file
43
43
  Given I have a Berkshelf config file containing:
44
44
  """
45
45
  {
@@ -52,12 +52,12 @@ Feature: cookbook creation with a config file
52
52
  }
53
53
  }
54
54
  """
55
- When I run the cookbook command to create "sparkle_motion"
55
+ When I successfully run `berks cookbook sparkle_motion`
56
56
  Then the resulting "sparkle_motion" Vagrantfile should contain:
57
57
  | config.vm.network :forwarded_port, guest: 12345, host: 54321 |
58
58
  And the exit status should be 0
59
59
 
60
- Scenario: creating a new cookbook using an invalid Berkshelf config
60
+ Scenario: Using an invalid Berkshelf configuration file
61
61
  Given I have a Berkshelf config file containing:
62
62
  """
63
63
  {
@@ -68,12 +68,12 @@ Feature: cookbook creation with a config file
68
68
  }
69
69
  }
70
70
  """
71
- When I run the cookbook command to create "sparkle_motion"
71
+ When I run `berks cookbook sparkle_motion`
72
72
  Then the output should contain "Invalid configuration"
73
73
  And the output should contain "vagrant.vm.box Expected attribute: 'vagrant.vm.box' to be a type of: 'String'"
74
74
  And the CLI should exit with the status code for error "InvalidConfiguration"
75
75
 
76
- Scenario: creating a new cookbook with a chef client config
76
+ Scenario: Using a Berkshelf configuration file with Chef configuration information
77
77
  Given I have a Berkshelf config file containing:
78
78
  """
79
79
  {
@@ -89,7 +89,7 @@ Feature: cookbook creation with a config file
89
89
  }
90
90
  }
91
91
  """
92
- When I run the cookbook command to create "sparkle_motion"
92
+ When I successfully run `berks cookbook sparkle_motion`
93
93
  Then the resulting "sparkle_motion" Vagrantfile should contain:
94
94
  | config.vm.provision :chef_client |
95
95
  | chef.chef_server_url = "localhost:4000" |