berkshelf 0.3.7 → 0.4.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- 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