berkshelf 0.3.7 → 0.4.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.
- data/.gitignore +2 -1
- data/README.md +8 -0
- data/Thorfile +2 -2
- data/berkshelf.gemspec +1 -1
- data/features/install.feature +102 -2
- data/features/lockfile.feature +1 -1
- data/features/step_definitions/chef_server_steps.rb +8 -0
- data/features/step_definitions/cli_steps.rb +1 -1
- data/features/step_definitions/filesystem_steps.rb +12 -0
- data/features/support/env.rb +8 -10
- data/features/update.feature +1 -1
- data/lib/berkshelf.rb +19 -1
- data/lib/berkshelf/berksfile.rb +18 -6
- data/lib/berkshelf/cli.rb +3 -8
- data/lib/berkshelf/cookbook_source.rb +108 -23
- data/lib/berkshelf/cookbook_source/chef_api_location.rb +256 -0
- data/lib/berkshelf/cookbook_source/git_location.rb +14 -2
- data/lib/berkshelf/cookbook_source/location.rb +119 -2
- data/lib/berkshelf/cookbook_source/path_location.rb +6 -1
- data/lib/berkshelf/cookbook_source/site_location.rb +36 -105
- data/lib/berkshelf/cookbook_store.rb +7 -12
- data/lib/berkshelf/dsl.rb +1 -1
- data/lib/berkshelf/errors.rb +2 -0
- data/lib/berkshelf/init_generator.rb +6 -6
- data/lib/berkshelf/resolver.rb +8 -34
- data/lib/berkshelf/uploader.rb +7 -7
- data/lib/berkshelf/version.rb +1 -1
- data/spec/fixtures/reset.pem +27 -0
- data/spec/knife.rb.sample +12 -0
- data/spec/spec_helper.rb +4 -1
- data/spec/support/chef_api.rb +32 -0
- data/spec/support/knife.rb +18 -0
- data/spec/unit/berkshelf/cookbook_source/chef_api_location_spec.rb +243 -0
- data/spec/unit/berkshelf/cookbook_source/git_location_spec.rb +2 -2
- data/spec/unit/berkshelf/cookbook_source/location_spec.rb +130 -2
- data/spec/unit/berkshelf/cookbook_source/path_location_spec.rb +2 -2
- data/spec/unit/berkshelf/cookbook_source/site_location_spec.rb +22 -105
- data/spec/unit/berkshelf/cookbook_source_spec.rb +140 -71
- data/spec/unit/berkshelf/cookbook_store_spec.rb +6 -6
- data/spec/unit/berkshelf/resolver_spec.rb +9 -30
- data/spec/unit/berkshelf/uploader_spec.rb +1 -10
- data/spec/unit/berkshelf_spec.rb +21 -1
- metadata +19 -15
- data/features/config.sample.yml +0 -3
@@ -36,10 +36,10 @@ module Berkshelf
|
|
36
36
|
|
37
37
|
describe "#satisfy" do
|
38
38
|
let(:name) { "nginx" }
|
39
|
-
let(:version) {
|
40
|
-
let(:constraint) {
|
41
|
-
let(:cached_cb) { double('cached-cb', name: name, version: version) }
|
42
|
-
let(:cached_two) { double('cached-two', name: "mysql", version:
|
39
|
+
let(:version) { "0.101.4" }
|
40
|
+
let(:constraint) { Solve::Constraint.new("~> 0.101.2") }
|
41
|
+
let(:cached_cb) { double('cached-cb', name: name, version: Solve::Version.new(version)) }
|
42
|
+
let(:cached_two) { double('cached-two', name: "mysql", version: Solve::Version.new("1.2.6")) }
|
43
43
|
|
44
44
|
before(:each) do
|
45
45
|
subject.stub(:cookbooks).and_return([cached_cb, cached_two])
|
@@ -60,8 +60,8 @@ module Berkshelf
|
|
60
60
|
end
|
61
61
|
|
62
62
|
context "when there is no matching cookbook for the given name and constraint" do
|
63
|
-
let(:version) {
|
64
|
-
let(:constraint) {
|
63
|
+
let(:version) { Solve::Version.new("1.0.0") }
|
64
|
+
let(:constraint) { Solve::Constraint.new("= 0.0.1") }
|
65
65
|
|
66
66
|
before(:each) do
|
67
67
|
subject.stub(:cookbooks).and_return([ double('badcache', name: 'none', version: version) ])
|
@@ -5,7 +5,7 @@ module Berkshelf
|
|
5
5
|
let(:source) do
|
6
6
|
double('source',
|
7
7
|
name: 'mysql',
|
8
|
-
version_constraint:
|
8
|
+
version_constraint: Solve::Constraint.new('= 1.2.4'),
|
9
9
|
downloaded?: true,
|
10
10
|
cached_cookbook: double('mysql-cookbook',
|
11
11
|
name: 'mysql-1.2.4',
|
@@ -20,7 +20,7 @@ module Berkshelf
|
|
20
20
|
let(:source_two) do
|
21
21
|
double('source-two',
|
22
22
|
name: 'nginx',
|
23
|
-
version_constraint:
|
23
|
+
version_constraint: Solve::Constraint.new('= 0.101.2'),
|
24
24
|
downloaded?: true,
|
25
25
|
cached_cookbook: double('nginx-cookbook',
|
26
26
|
name: 'nginx-0.101.2',
|
@@ -46,18 +46,9 @@ module Berkshelf
|
|
46
46
|
|
47
47
|
it "adds the dependencies of the source as sources" do
|
48
48
|
resolver = subject.new(downloader, source)
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
it "adds the version_constraints of the dependencies to the graph" do
|
56
|
-
resolver = subject.new(downloader, source)
|
57
|
-
|
58
|
-
source.cached_cookbook.dependencies.each do |name, constraint|
|
59
|
-
resolver.package(name).versions.should_not be_empty
|
60
|
-
end
|
49
|
+
|
50
|
+
resolver.should have_source("nginx")
|
51
|
+
resolver.should have_source("artifact")
|
61
52
|
end
|
62
53
|
|
63
54
|
context "given an array of sources" do
|
@@ -82,14 +73,10 @@ module Berkshelf
|
|
82
73
|
subject.sources.should include(source)
|
83
74
|
end
|
84
75
|
|
85
|
-
it "adds
|
86
|
-
subject.
|
87
|
-
|
88
|
-
|
89
|
-
it "adds a version constraint specified by the source to the package of the same name" do
|
90
|
-
subject.add_source(source)
|
91
|
-
|
92
|
-
subject.package(source.name).versions.collect(&:version).should include(source.version_constraint.version)
|
76
|
+
it "adds an artifact of the same name of the source to the graph" do
|
77
|
+
subject.graph.should_receive(:artifacts).with(source.name, source.cached_cookbook.version)
|
78
|
+
|
79
|
+
subject.add_source(source, false)
|
93
80
|
end
|
94
81
|
|
95
82
|
it "adds the dependencies of the source as packages to the graph" do
|
@@ -106,14 +93,6 @@ module Berkshelf
|
|
106
93
|
}.should raise_error(DuplicateSourceDefined)
|
107
94
|
end
|
108
95
|
|
109
|
-
it "adds a package for each dependency to the packages attribute" do
|
110
|
-
subject.add_source(source)
|
111
|
-
|
112
|
-
source.cached_cookbook.dependencies.each do |name, constraint|
|
113
|
-
subject.package(name).should_not be_nil
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
96
|
context "when include_dependencies is false" do
|
118
97
|
it "does not try to include_dependencies" do
|
119
98
|
subject.should_not_receive(:add_source_dependencies)
|
@@ -2,16 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Berkshelf
|
4
4
|
describe Uploader do
|
5
|
-
|
6
|
-
unless config = YAML.load_file('features/config.yml')
|
7
|
-
raise "Could not load features/config.yml -- please generate it from features/config.sample.yml"
|
8
|
-
end
|
9
|
-
|
10
|
-
let(:server_url) { config["chef_server_url"] }
|
11
|
-
let(:client_key) { config["client_key"] }
|
12
|
-
let(:node_name) { config["node_name"] }
|
13
|
-
|
14
|
-
subject { Uploader.new(server_url, client_key: client_key, node_name: node_name) }
|
5
|
+
subject { Uploader.new(Chef::Config[:chef_server_url], client_key: Chef::Config[:client_key], node_name: Chef::Config[:node_name]) }
|
15
6
|
|
16
7
|
describe "#upload" do
|
17
8
|
let(:cookbook) { double('nginx', name: "nginx-0.101.2", cookbook_name: "nginx", version: "0.101.2") }
|
data/spec/unit/berkshelf_spec.rb
CHANGED
@@ -4,7 +4,7 @@ describe Berkshelf do
|
|
4
4
|
context "ClassMethods" do
|
5
5
|
subject { Berkshelf }
|
6
6
|
|
7
|
-
describe "
|
7
|
+
describe "::find_metadata" do
|
8
8
|
let(:metadata_path) { fixtures_path.join("cookbooks", "example_cookbook", "metadata.rb") }
|
9
9
|
|
10
10
|
context "given a path containing a metadata.rb file" do
|
@@ -25,5 +25,25 @@ describe Berkshelf do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
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
|
28
48
|
end
|
29
49
|
end
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: berkshelf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0.rc1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Josiah Kiehl
|
@@ -12,24 +12,24 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2012-07-
|
15
|
+
date: 2012-07-13 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
|
-
name:
|
18
|
+
name: solve
|
19
19
|
requirement: !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
|
-
- -
|
22
|
+
- - ~>
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version:
|
24
|
+
version: 0.2.1
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
|
-
- -
|
30
|
+
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 0.2.1
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: chef
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -370,7 +370,6 @@ files:
|
|
370
370
|
- Thorfile
|
371
371
|
- berkshelf.gemspec
|
372
372
|
- bin/berks
|
373
|
-
- features/config.sample.yml
|
374
373
|
- features/init_command.feature
|
375
374
|
- features/install.feature
|
376
375
|
- features/lockfile.feature
|
@@ -387,6 +386,7 @@ files:
|
|
387
386
|
- lib/berkshelf/cached_cookbook.rb
|
388
387
|
- lib/berkshelf/cli.rb
|
389
388
|
- lib/berkshelf/cookbook_source.rb
|
389
|
+
- lib/berkshelf/cookbook_source/chef_api_location.rb
|
390
390
|
- lib/berkshelf/cookbook_source/git_location.rb
|
391
391
|
- lib/berkshelf/cookbook_source/location.rb
|
392
392
|
- lib/berkshelf/cookbook_source/path_location.rb
|
@@ -436,12 +436,16 @@ files:
|
|
436
436
|
- spec/fixtures/cookbooks/nginx-0.100.5/templates/default/plugins/nginx.rb.erb
|
437
437
|
- spec/fixtures/lockfile_spec/with_lock/Berksfile
|
438
438
|
- spec/fixtures/lockfile_spec/without_lock/Berksfile.lock
|
439
|
+
- spec/fixtures/reset.pem
|
440
|
+
- spec/knife.rb.sample
|
439
441
|
- spec/spec_helper.rb
|
440
442
|
- spec/support/chef_api.rb
|
443
|
+
- spec/support/knife.rb
|
441
444
|
- spec/support/matchers/file_system_matchers.rb
|
442
445
|
- spec/support/matchers/filepath_matchers.rb
|
443
446
|
- spec/unit/berkshelf/berksfile_spec.rb
|
444
447
|
- spec/unit/berkshelf/cached_cookbook_spec.rb
|
448
|
+
- spec/unit/berkshelf/cookbook_source/chef_api_location_spec.rb
|
445
449
|
- spec/unit/berkshelf/cookbook_source/git_location_spec.rb
|
446
450
|
- spec/unit/berkshelf/cookbook_source/location_spec.rb
|
447
451
|
- spec/unit/berkshelf/cookbook_source/path_location_spec.rb
|
@@ -473,12 +477,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
473
477
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
474
478
|
none: false
|
475
479
|
requirements:
|
476
|
-
- - ! '
|
480
|
+
- - ! '>'
|
477
481
|
- !ruby/object:Gem::Version
|
478
|
-
version:
|
479
|
-
segments:
|
480
|
-
- 0
|
481
|
-
hash: -4298839394573709666
|
482
|
+
version: 1.3.1
|
482
483
|
requirements: []
|
483
484
|
rubyforge_project:
|
484
485
|
rubygems_version: 1.8.23
|
@@ -486,7 +487,6 @@ signing_key:
|
|
486
487
|
specification_version: 3
|
487
488
|
summary: Manages a Cookbook's, or an Application's, Cookbook dependencies
|
488
489
|
test_files:
|
489
|
-
- features/config.sample.yml
|
490
490
|
- features/init_command.feature
|
491
491
|
- features/install.feature
|
492
492
|
- features/lockfile.feature
|
@@ -522,12 +522,16 @@ test_files:
|
|
522
522
|
- spec/fixtures/cookbooks/nginx-0.100.5/templates/default/plugins/nginx.rb.erb
|
523
523
|
- spec/fixtures/lockfile_spec/with_lock/Berksfile
|
524
524
|
- spec/fixtures/lockfile_spec/without_lock/Berksfile.lock
|
525
|
+
- spec/fixtures/reset.pem
|
526
|
+
- spec/knife.rb.sample
|
525
527
|
- spec/spec_helper.rb
|
526
528
|
- spec/support/chef_api.rb
|
529
|
+
- spec/support/knife.rb
|
527
530
|
- spec/support/matchers/file_system_matchers.rb
|
528
531
|
- spec/support/matchers/filepath_matchers.rb
|
529
532
|
- spec/unit/berkshelf/berksfile_spec.rb
|
530
533
|
- spec/unit/berkshelf/cached_cookbook_spec.rb
|
534
|
+
- spec/unit/berkshelf/cookbook_source/chef_api_location_spec.rb
|
531
535
|
- spec/unit/berkshelf/cookbook_source/git_location_spec.rb
|
532
536
|
- spec/unit/berkshelf/cookbook_source/location_spec.rb
|
533
537
|
- spec/unit/berkshelf/cookbook_source/path_location_spec.rb
|
data/features/config.sample.yml
DELETED