berkshelf 2.0.0.beta → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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" |