berkshelf 0.6.0.beta4 → 1.0.0.rc1

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.
@@ -77,12 +77,6 @@ module Berkshelf
77
77
  it "uses the value of Chef::Config[:client_key] for the client_key attribute" do
78
78
  @loc.client_key.should eql(Chef::Config[:client_key])
79
79
  end
80
-
81
- it "attempts to load the config file with no arguments" do
82
- Berkshelf.should_receive(:load_config).with(no_args)
83
-
84
- subject.new("nginx", constraint, chef_api: :knife)
85
- end
86
80
  end
87
81
  end
88
82
 
@@ -26,26 +26,6 @@ describe Berkshelf do
26
26
  end
27
27
  end
28
28
 
29
- describe "::config_path" do
30
- it "returns a default value if nothing is specified" do
31
- subject.config_path.should eql(Berkshelf::DEFAULT_CONFIG)
32
- end
33
-
34
- it "returns the value assigned if specified" do
35
- subject.config_path = value = "/Users/reset/.chef/knife.rb"
36
-
37
- subject.config_path.should eql(value)
38
- end
39
- end
40
-
41
- describe "::load_config" do
42
- it "loads the path specified by config_path if no parameter given" do
43
- Chef::Config.should_receive(:from_file).with(Berkshelf.config_path)
44
-
45
- subject.load_config
46
- end
47
- end
48
-
49
29
  describe "::formatter" do
50
30
  context "with default formatter" do
51
31
  it "should be human readable" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: berkshelf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0.beta4
4
+ version: 1.0.0.rc1
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -21,7 +21,7 @@ dependencies:
21
21
  requirements:
22
22
  - - ! '>='
23
23
  - !ruby/object:Gem::Version
24
- version: 0.1.0
24
+ version: 0.2.1
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  requirements:
30
30
  - - ! '>='
31
31
  - !ruby/object:Gem::Version
32
- version: 0.1.0
32
+ version: 0.2.1
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: ridley
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -212,7 +212,7 @@ files:
212
212
  - berkshelf.gemspec
213
213
  - bin/berks
214
214
  - features/config.feature
215
- - features/config_command.feature
215
+ - features/configure_command.feature
216
216
  - features/cookbook_command.feature
217
217
  - features/default_locations.feature
218
218
  - features/groups_install.feature
@@ -223,6 +223,7 @@ files:
223
223
  - features/step_definitions/berksfile_steps.rb
224
224
  - features/step_definitions/chef_server_steps.rb
225
225
  - features/step_definitions/cli_steps.rb
226
+ - features/step_definitions/configure_cli_steps.rb
226
227
  - features/step_definitions/filesystem_steps.rb
227
228
  - features/step_definitions/json_steps.rb
228
229
  - features/support/env.rb
@@ -235,7 +236,6 @@ files:
235
236
  - generator_files/Thorfile.erb
236
237
  - generator_files/Vagrantfile.erb
237
238
  - generator_files/chefignore
238
- - generator_files/config.json
239
239
  - generator_files/default_recipe.erb
240
240
  - generator_files/gitignore.erb
241
241
  - generator_files/licenses/apachev2.erb
@@ -250,8 +250,6 @@ files:
250
250
  - lib/berkshelf/cached_cookbook.rb
251
251
  - lib/berkshelf/cli.rb
252
252
  - lib/berkshelf/config.rb
253
- - lib/berkshelf/config_generator.rb
254
- - lib/berkshelf/config_validator.rb
255
253
  - lib/berkshelf/cookbook_generator.rb
256
254
  - lib/berkshelf/cookbook_source.rb
257
255
  - lib/berkshelf/cookbook_store.rb
@@ -323,7 +321,6 @@ files:
323
321
  - spec/unit/berkshelf/berksfile_spec.rb
324
322
  - spec/unit/berkshelf/cached_cookbook_spec.rb
325
323
  - spec/unit/berkshelf/config_spec.rb
326
- - spec/unit/berkshelf/config_validator_spec.rb
327
324
  - spec/unit/berkshelf/cookbook_generator_spec.rb
328
325
  - spec/unit/berkshelf/cookbook_source_spec.rb
329
326
  - spec/unit/berkshelf/cookbook_store_spec.rb
@@ -367,7 +364,7 @@ specification_version: 3
367
364
  summary: Manages a Cookbook's, or an Application's, Cookbook dependencies
368
365
  test_files:
369
366
  - features/config.feature
370
- - features/config_command.feature
367
+ - features/configure_command.feature
371
368
  - features/cookbook_command.feature
372
369
  - features/default_locations.feature
373
370
  - features/groups_install.feature
@@ -378,6 +375,7 @@ test_files:
378
375
  - features/step_definitions/berksfile_steps.rb
379
376
  - features/step_definitions/chef_server_steps.rb
380
377
  - features/step_definitions/cli_steps.rb
378
+ - features/step_definitions/configure_cli_steps.rb
381
379
  - features/step_definitions/filesystem_steps.rb
382
380
  - features/step_definitions/json_steps.rb
383
381
  - features/support/env.rb
@@ -419,7 +417,6 @@ test_files:
419
417
  - spec/unit/berkshelf/berksfile_spec.rb
420
418
  - spec/unit/berkshelf/cached_cookbook_spec.rb
421
419
  - spec/unit/berkshelf/config_spec.rb
422
- - spec/unit/berkshelf/config_validator_spec.rb
423
420
  - spec/unit/berkshelf/cookbook_generator_spec.rb
424
421
  - spec/unit/berkshelf/cookbook_source_spec.rb
425
422
  - spec/unit/berkshelf/cookbook_store_spec.rb
@@ -1,10 +0,0 @@
1
- Feature: config command
2
- As a Cookbook author
3
- I want to quickly generate a Berkshelf config
4
- So I can easily tell which options are available to me
5
-
6
- Scenario: creating a new config
7
- Given I do not have a Berkshelf config file
8
- When I run the config command
9
- Then I should have a Berkshelf config file
10
- And the exit status should be 0
@@ -1,22 +0,0 @@
1
- {
2
- "vagrant": {
3
- "chef": {
4
- "chef_server_url": "https://api.opscode.com/organizations/ORGNAME",
5
- "validation_client_name": "ORGNAME-validator",
6
- "validation_key_path": "~/validation.pem"
7
- },
8
- "vm": {
9
- "box": "base",
10
- "box_url": "http://files.vagrantup.com/lucid64.box",
11
- "forward_port": {
12
- "80": "8080"
13
- },
14
- "host_name": "berkshelf-cookbook",
15
- "network": {
16
- "bridged": true,
17
- "hostonly": "192.168.33.10"
18
- },
19
- "provision": "chef_solo"
20
- }
21
- }
22
- }
@@ -1,8 +0,0 @@
1
- module Berkshelf
2
- # @author Justin Campbell <justin@justincampbell.me>
3
- class ConfigGenerator < BaseGenerator
4
- def generate
5
- template "config.json", Config.path
6
- end
7
- end
8
- end
@@ -1,78 +0,0 @@
1
- module Berkshelf
2
- # @author Justin Campbell <justin@justincampbell.me>
3
- class ConfigValidator < ActiveModel::Validator
4
- DEFAULT_STRUCTURE = {
5
- vagrant: {
6
- chef: {
7
- chef_server_url: String,
8
- validation_client_name: String,
9
- validation_key_path: String
10
- },
11
- vm: {
12
- box: String,
13
- box_url: String,
14
- forward_port: Hash,
15
- host_name: String,
16
- network: {
17
- bridged: Object,
18
- hostonly: String
19
- },
20
- provision: String
21
- }
22
- }
23
- }
24
-
25
- # Recursively validate the structure of a hash with another hash. If
26
- # invalid, the actual_hash will have errors added to it.
27
- #
28
- # @param [Hash] actual_hash
29
- # The hash to validate
30
- #
31
- # @param [Hash] expected_hash
32
- # The expected structure of actual_hash
33
- #
34
- # @param [Config] config
35
- # The config object to add errors to. This is only used recursively.
36
- #
37
- # @return [Boolean]
38
- def assert_in_structure(actual_hash, expected_hash, config = nil)
39
- config ||= actual_hash
40
-
41
- actual_hash.keys.each do |key|
42
- unless expected_hash.keys.include? key.to_sym
43
- config.errors.add key, "is not a valid key"
44
- return
45
- end
46
-
47
- actual = actual_hash[key]
48
- expected = expected_hash[key.to_sym]
49
-
50
- if actual.is_a?(Hash) && expected.is_a?(Hash)
51
- return unless assert_in_structure actual, expected, config
52
- else
53
- unless actual.is_a? expected
54
- config.errors.add key, "should be an instance of #{expected}"
55
- return
56
- end
57
- end
58
- end
59
-
60
- true
61
- end
62
-
63
- # @see DEFAULT_STRUCTURE
64
- # @return [Hash]
65
- def structure
66
- @structure ||= DEFAULT_STRUCTURE
67
- end
68
-
69
- # @param [Config] config
70
- # The config to validate
71
- #
72
- # @return [Boolean]
73
- def validate(config)
74
- assert_in_structure config, structure
75
- end
76
- end
77
- end
78
-
@@ -1,68 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Berkshelf::ConfigValidator do
4
- let(:config) { Berkshelf::Config.from_json json }
5
- let(:config_validator) { klass.new Hash.new }
6
- let(:json) { '{}' }
7
- let(:klass) { described_class }
8
- let(:structure) { Hash.new }
9
-
10
- before :each do
11
- klass.any_instance.stub structure: structure
12
- end
13
-
14
- describe "#validate" do
15
- subject { config_validator.validate config }
16
-
17
- it { should be_true }
18
- it { config.should be_valid }
19
-
20
- context "with a top-level key" do
21
- let(:json) { '{ "a": 1 }' }
22
- let(:structure) { { a: Object } }
23
-
24
- it { should be_true }
25
- it { config.should be_valid }
26
- end
27
-
28
- context "with a nested key" do
29
- let(:json) { '{ "a": { "b": 1 } }' }
30
- let(:structure) { { a: { b: Object } } }
31
-
32
- it { should be_true }
33
- it { config.should be_valid }
34
- end
35
-
36
- context "with a top-level nonsense key" do
37
- let(:json) { '{ "nonsense": null }' }
38
- let(:structure) { { a: Object } }
39
-
40
- it { should be_false }
41
- it { config.should_not be_valid }
42
- end
43
-
44
- context "with a nested nonsense key" do
45
- let(:json) { '{ "a": { "nonsense": 1 } }' }
46
- let(:structure) { { a: { b: Object } } }
47
-
48
- it { should be_false }
49
- it { config.should_not be_valid }
50
- end
51
-
52
- context "with a top-level key that doesn't match the expected type" do
53
- let(:json) { '{ "a": 1 }' }
54
- let(:structure) { { a: String } }
55
-
56
- it { should be_false }
57
- it { config.should_not be_valid }
58
- end
59
-
60
- context "with a nested key that doesn't match the expected type" do
61
- let(:json) { '{ "a": { "b": 1 } }' }
62
- let(:structure) { { a: { b: String } } }
63
-
64
- it { should be_false }
65
- it { config.should_not be_valid }
66
- end
67
- end
68
- end