knife_cookbook_dependencies 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. data/.gitignore +4 -1
  2. data/README.rdoc +41 -2
  3. data/Rakefile +42 -0
  4. data/features/lib/chef/knife/error_messages.feature +16 -0
  5. data/features/lib/chef/knife/lockfile.feature +25 -0
  6. data/features/lib/chef/knife/without.feature +27 -0
  7. data/features/support/env.rb +30 -0
  8. data/features/support/step_definitions.rb +22 -0
  9. data/knife_cookbook_dependencies.gemspec +6 -2
  10. data/lib/chef/knife/cookbook_dependencies_install.rb +12 -6
  11. data/lib/kcd.rb +1 -0
  12. data/lib/{knife_cookbook_dependencies → kcd}/cookbook.rb +72 -40
  13. data/lib/{knife_cookbook_dependencies → kcd}/cookbookfile.rb +12 -11
  14. data/lib/kcd/dsl.rb +13 -0
  15. data/lib/{knife_cookbook_dependencies → kcd}/error_messages.rb +1 -1
  16. data/lib/{knife_cookbook_dependencies → kcd}/git.rb +0 -0
  17. data/lib/{knife_cookbook_dependencies → kcd}/knife_utils.rb +1 -1
  18. data/lib/{knife_cookbook_dependencies → kcd}/lockfile.rb +8 -5
  19. data/lib/{knife_cookbook_dependencies → kcd}/metacookbook.rb +1 -1
  20. data/lib/{knife_cookbook_dependencies → kcd}/shelf.rb +30 -5
  21. data/lib/{knife_cookbook_dependencies → kcd}/version.rb +1 -1
  22. data/lib/knife_cookbook_dependencies.rb +20 -13
  23. data/spec/acceptance/knife_cookbook_dependencies_spec.rb +1 -11
  24. data/spec/fixtures/lockfile_spec/with_lock/Cookbookfile +1 -0
  25. data/spec/fixtures/lockfile_spec/without_lock/Cookbookfile.lock +5 -0
  26. data/spec/lib/{knife_cookbook_dependencies → kcd}/cookbook_spec.rb +43 -14
  27. data/spec/lib/{knife_cookbook_dependencies → kcd}/cookbookfile_spec.rb +3 -3
  28. data/spec/lib/kcd/dsl_spec.rb +56 -0
  29. data/spec/lib/{knife_cookbook_dependencies → kcd}/git_spec.rb +0 -0
  30. data/spec/lib/kcd/lockfile_spec.rb +54 -0
  31. data/spec/lib/kcd/shelf_spec.rb +81 -0
  32. data/spec/spec_helper.rb +22 -2
  33. data/todo.txt +8 -8
  34. metadata +98 -51
  35. data/lib/knife_cookbook_dependencies/dependency_reader.rb +0 -46
  36. data/lib/knife_cookbook_dependencies/dsl.rb +0 -7
  37. data/spec/lib/knife_cookbook_dependencies/dependency_reader_spec.rb +0 -42
  38. data/spec/lib/knife_cookbook_dependencies/dsl_spec.rb +0 -29
  39. data/spec/lib/knife_cookbook_dependencies/shelf_spec.rb +0 -37
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe KCD::Lockfile do
4
+ describe "without a lockfile in place already" do
5
+ before do
6
+ @old_dir = Dir.pwd
7
+ Dir.chdir "spec/fixtures/lockfile_spec/without_lock"
8
+ KCD.clear_shelf!
9
+ end
10
+
11
+ after do
12
+ FileUtils.rm_r "cookbooks"
13
+ Dir.chdir @old_dir
14
+ end
15
+
16
+ it "should be able to write a Cookbookfile.lock from a list of cookbooks" do
17
+ KCD.shelf.shelve_cookbook('nginx', '= 0.101.0')
18
+ KCD.shelf.resolve_dependencies
19
+ KCD.shelf.populate_cookbooks_directory
20
+ KCD.shelf.write_lockfile
21
+
22
+ File.read('Cookbookfile.lock').split(/\r?\n/).sort.should == [
23
+ "cookbook 'bluepill', :locked_version => '1.0.4'",
24
+ "cookbook 'build-essential', :locked_version => '1.0.0'",
25
+ "cookbook 'nginx', :locked_version => '0.101.0'",
26
+ "cookbook 'ohai', :locked_version => '1.0.2'",
27
+ "cookbook 'runit', :locked_version => '0.15.0'"
28
+ ]
29
+ end
30
+ end
31
+
32
+ describe "with a lockfile in place" do
33
+ before do
34
+ @old_dir = Dir.pwd
35
+ Dir.chdir "spec/fixtures/lockfile_spec/with_lock"
36
+ KCD::Cookbookfile.process_install
37
+ KCD.clear_shelf!
38
+ end
39
+
40
+ after do
41
+ FileUtils.rm_r "cookbooks"
42
+ FileUtils.rm "Cookbookfile.lock"
43
+ Dir.chdir @old_dir
44
+ end
45
+
46
+ it "should populate the cookbooks directory from the lockfile" do
47
+ lockfile = File.read('Cookbookfile.lock')
48
+ lockfile.gsub!(/0.101.0/, '0.101.2')
49
+ File.write('Cookbookfile.lock', lockfile)
50
+ KCD::Cookbookfile.process_install
51
+ File.read('cookbooks/nginx/metadata.rb').scan(/version\s*"([^"]+)"/).first.first.should == "0.101.2"
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,81 @@
1
+ require 'spec_helper'
2
+
3
+ module KnifeCookbookDependencies
4
+ describe Shelf do
5
+ describe '#get_cookbook' do
6
+ it "should return nil if a cookbook doesn't exist on the shelf" do
7
+ Shelf.new.get_cookbook('arbitrary').should be_nil
8
+ end
9
+ it "should return the cookbook if the cookbook exists on the shelf" do
10
+ s = Shelf.new
11
+ s.shelve_cookbook example_cookbook_from_path
12
+ s.get_cookbook(example_cookbook_from_path.name).should_not be_nil
13
+ end
14
+ end
15
+
16
+ describe "#shelve_cookbook" do
17
+ subject { Shelf.new }
18
+ it 'should store shelved cookbooks' do
19
+ subject.shelve_cookbook 'acookbook'
20
+ subject.cookbooks.collect(&:name).should include 'acookbook'
21
+ end
22
+
23
+ it 'should take version constraints' do
24
+ subject.shelve_cookbook 'acookbook', '= 1.2.3'
25
+ subject.cookbooks.last.version_constraints.should == [DepSelector::VersionConstraint.new('= 1.2.3')]
26
+ end
27
+
28
+ it "should resolve the dependency graph of the cookbooks on the shelf" do
29
+ subject.shelve_cookbook 'mysql', "= 1.2.4"
30
+
31
+ subject.resolve_dependencies.should == ({"mysql" => DepSelector::Version.new("1.2.4"), "openssl" => DepSelector::Version.new("1.0.0")})
32
+ Cookbook.new('mysql').clean
33
+ Cookbook.new('openssl').clean
34
+ end
35
+ end
36
+
37
+ describe '#exclude' do
38
+ it "should split on :" do
39
+ subject.exclude("foo:bar")
40
+ subject.excluded_groups.should == [:foo, :bar]
41
+ end
42
+
43
+ it "should split on ," do
44
+ subject.exclude("foo,bar")
45
+ subject.excluded_groups.should == [:foo, :bar]
46
+ end
47
+
48
+ it "should take an Array" do
49
+ subject.exclude(["foo","bar"])
50
+ subject.excluded_groups.should == [:foo, :bar]
51
+ end
52
+ end
53
+
54
+ describe '#cookbook_groups' do
55
+ it "should return a hash of groups and associated cookbooks" do
56
+ subject.shelve_cookbook "foobar", :group => ["foo", "bar"]
57
+ subject.shelve_cookbook "baz", :group => "baz"
58
+ subject.shelve_cookbook "quux", :group => "quux"
59
+ subject.shelve_cookbook "baz2", :group => "baz"
60
+ groups = subject.cookbook_groups
61
+ groups.keys.size.should == 4
62
+ groups[:foo].should == ["foobar"]
63
+ groups[:bar].should == ["foobar"]
64
+ groups[:baz].should == ["baz", "baz2"]
65
+ groups[:quux].should == ["quux"]
66
+ end
67
+ end
68
+
69
+ describe '#requested_cookbooks'do
70
+ it "should properly exclude cookbooks in the excluded groups" do
71
+ subject.shelve_cookbook "a1", :group => "a"
72
+ subject.shelve_cookbook "a2", :group => "a"
73
+ subject.shelve_cookbook "b1", :group => "b"
74
+ subject.shelve_cookbook "b2", :group => "b"
75
+ subject.shelve_cookbook "c1", :group => ["a","b"]
76
+ subject.exclude "b"
77
+ subject.requested_cookbooks.should == ["a1", "a2", "c1"]
78
+ end
79
+ end
80
+ end
81
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'bundler'
3
3
  require 'spork'
4
+ require 'vcr'
4
5
 
5
6
  Spork.prefork do
6
7
  require 'rspec'
@@ -11,12 +12,31 @@ Spork.prefork do
11
12
 
12
13
  Dir[File.join(APP_ROOT, "spec/support/**/*.rb")].each {|f| require f}
13
14
 
15
+ VCR.configure do |c|
16
+ c.cassette_library_dir = File.join(File.dirname(__FILE__), 'fixtures', 'vcr_cassettes')
17
+ c.hook_into :webmock
18
+ end
19
+
20
+
14
21
  RSpec.configure do |config|
15
22
  config.mock_with :rspec
16
23
  config.treat_symbols_as_metadata_keys_with_true_values = true
17
24
  config.filter_run :focus => true
18
25
  config.run_all_when_everything_filtered = true
19
26
 
27
+ config.around do |example|
28
+ # Dynamically create cassettes based on the name of the example
29
+ # being run. This creates a new cassette for every test.
30
+ cur = example.metadata
31
+ identifiers = [example.metadata[:description_args]]
32
+ while cur = cur[:example_group] do
33
+ identifiers << cur[:description_args]
34
+ end
35
+
36
+ VCR.use_cassette(identifiers.reverse.join(' ')) do
37
+ example.run
38
+ end
39
+ end
20
40
  config.after do
21
41
  KnifeCookbookDependencies.clean
22
42
  end
@@ -40,7 +60,7 @@ Spork.prefork do
40
60
  end
41
61
 
42
62
  def example_cookbook_from_path
43
- @example_cookbook_from_path ||= KnifeCookbookDependencies::Cookbook.new('example_cookbook', path: File.join(File.dirname(__FILE__), 'fixtures', 'cookbooks'))
63
+ @example_cookbook_from_path ||= KCD::Cookbook.new('example_cookbook', path: File.join(File.dirname(__FILE__), 'fixtures', 'cookbooks'))
44
64
  end
45
65
 
46
66
  def with_cookbookfile content
@@ -55,5 +75,5 @@ Spork.prefork do
55
75
  end
56
76
 
57
77
  Spork.each_run do
58
- require 'knife_cookbook_dependencies'
78
+ require 'kcd'
59
79
  end
data/todo.txt CHANGED
@@ -1,13 +1,13 @@
1
- Add git support to Cookbookfile
2
- - Allow a cookbook to be pulled from a git repository
3
- - Also support 'ref' to give a commit hash to pull
4
- - Possibly support 'branch' to pull the HEAD from a given branch
5
- Add path support to Cookbookfile
6
- - Pull cookbook from a path on the local filesystem
7
1
  Add source support to Cookbookfile
8
2
  - Allow unofficial cookbook repositories to be used via 'source' in Cookbookfile
9
- Create local mock API service for specs
10
- - Instead of mocking out methods, spin up a local mock cookbook repo for tests to run against. This should be able to serve cookbooks as gzips. This might require some monkey patching of knife to get it to talk to the mock server instead of the opscode community site.
3
+ Add path block support
4
+ - Allow this syntax in Cookbookfile:
5
+ path '/path/to/cookbooks' do
6
+ cookbook 'nginx'
7
+ cookbook 'ntp'
8
+ cookbook 'mysql'
9
+ end
10
+ Supress dep_selector stdout
11
11
  Optimize cookbook retrieval
12
12
  - Possible: Pester Opscode till they release an API call to retrieve cookbook dependencies
13
13
  - Possible: Keep an index of dependencies so we don't have to download cookbook versions we've seen before
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife_cookbook_dependencies
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-05-10 00:00:00.000000000 Z
14
+ date: 2012-05-16 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: dep_selector
18
- requirement: &70112950558820 !ruby/object:Gem::Requirement
18
+ requirement: &70311986928620 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70112950558820
26
+ version_requirements: *70311986928620
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: chef
29
- requirement: &70112950539980 !ruby/object:Gem::Requirement
29
+ requirement: &70311986926700 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ~>
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: 0.10.0
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *70112950539980
37
+ version_requirements: *70311986926700
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: minitar
40
- requirement: &70112950515020 !ruby/object:Gem::Requirement
40
+ requirement: &70311986925460 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,43 @@ dependencies:
45
45
  version: '0'
46
46
  type: :runtime
47
47
  prerelease: false
48
- version_requirements: *70112950515020
48
+ version_requirements: *70311986925460
49
+ - !ruby/object:Gem::Dependency
50
+ name: cucumber
51
+ requirement: &70311986924440 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: *70311986924440
60
+ - !ruby/object:Gem::Dependency
61
+ name: vcr
62
+ requirement: &70311986923640 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: *70311986923640
71
+ - !ruby/object:Gem::Dependency
72
+ name: webmock
73
+ requirement: &70311986922980 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: *70311986922980
49
82
  - !ruby/object:Gem::Dependency
50
83
  name: aruba
51
- requirement: &70112950512720 !ruby/object:Gem::Requirement
84
+ requirement: &70311986922020 !ruby/object:Gem::Requirement
52
85
  none: false
53
86
  requirements:
54
87
  - - ! '>='
@@ -56,10 +89,10 @@ dependencies:
56
89
  version: '0'
57
90
  type: :development
58
91
  prerelease: false
59
- version_requirements: *70112950512720
92
+ version_requirements: *70311986922020
60
93
  - !ruby/object:Gem::Dependency
61
94
  name: rake
62
- requirement: &70112950508160 !ruby/object:Gem::Requirement
95
+ requirement: &70311986920560 !ruby/object:Gem::Requirement
63
96
  none: false
64
97
  requirements:
65
98
  - - ~>
@@ -67,10 +100,10 @@ dependencies:
67
100
  version: 0.9.0
68
101
  type: :development
69
102
  prerelease: false
70
- version_requirements: *70112950508160
103
+ version_requirements: *70311986920560
71
104
  - !ruby/object:Gem::Dependency
72
105
  name: rdoc
73
- requirement: &70112950439800 !ruby/object:Gem::Requirement
106
+ requirement: &70311986918460 !ruby/object:Gem::Requirement
74
107
  none: false
75
108
  requirements:
76
109
  - - ~>
@@ -78,10 +111,10 @@ dependencies:
78
111
  version: '3.0'
79
112
  type: :development
80
113
  prerelease: false
81
- version_requirements: *70112950439800
114
+ version_requirements: *70311986918460
82
115
  - !ruby/object:Gem::Dependency
83
116
  name: rspec
84
- requirement: &70112950437840 !ruby/object:Gem::Requirement
117
+ requirement: &70311986917200 !ruby/object:Gem::Requirement
85
118
  none: false
86
119
  requirements:
87
120
  - - ! '>='
@@ -89,10 +122,10 @@ dependencies:
89
122
  version: '0'
90
123
  type: :development
91
124
  prerelease: false
92
- version_requirements: *70112950437840
125
+ version_requirements: *70311986917200
93
126
  - !ruby/object:Gem::Dependency
94
127
  name: simplecov
95
- requirement: &70112950436300 !ruby/object:Gem::Requirement
128
+ requirement: &70311986895060 !ruby/object:Gem::Requirement
96
129
  none: false
97
130
  requirements:
98
131
  - - ! '>='
@@ -100,10 +133,10 @@ dependencies:
100
133
  version: '0'
101
134
  type: :development
102
135
  prerelease: false
103
- version_requirements: *70112950436300
136
+ version_requirements: *70311986895060
104
137
  - !ruby/object:Gem::Dependency
105
138
  name: fuubar
106
- requirement: &70112950434780 !ruby/object:Gem::Requirement
139
+ requirement: &70311986894420 !ruby/object:Gem::Requirement
107
140
  none: false
108
141
  requirements:
109
142
  - - ! '>='
@@ -111,10 +144,10 @@ dependencies:
111
144
  version: '0'
112
145
  type: :development
113
146
  prerelease: false
114
- version_requirements: *70112950434780
147
+ version_requirements: *70311986894420
115
148
  - !ruby/object:Gem::Dependency
116
149
  name: spork
117
- requirement: &70112950423600 !ruby/object:Gem::Requirement
150
+ requirement: &70311986893780 !ruby/object:Gem::Requirement
118
151
  none: false
119
152
  requirements:
120
153
  - - ! '>='
@@ -122,10 +155,10 @@ dependencies:
122
155
  version: '0'
123
156
  type: :development
124
157
  prerelease: false
125
- version_requirements: *70112950423600
158
+ version_requirements: *70311986893780
126
159
  - !ruby/object:Gem::Dependency
127
160
  name: guard
128
- requirement: &70112950422760 !ruby/object:Gem::Requirement
161
+ requirement: &70311986892760 !ruby/object:Gem::Requirement
129
162
  none: false
130
163
  requirements:
131
164
  - - ! '>='
@@ -133,10 +166,10 @@ dependencies:
133
166
  version: '0'
134
167
  type: :development
135
168
  prerelease: false
136
- version_requirements: *70112950422760
169
+ version_requirements: *70311986892760
137
170
  - !ruby/object:Gem::Dependency
138
171
  name: guard-rspec
139
- requirement: &70112950421600 !ruby/object:Gem::Requirement
172
+ requirement: &70311986891760 !ruby/object:Gem::Requirement
140
173
  none: false
141
174
  requirements:
142
175
  - - ! '>='
@@ -144,10 +177,10 @@ dependencies:
144
177
  version: '0'
145
178
  type: :development
146
179
  prerelease: false
147
- version_requirements: *70112950421600
180
+ version_requirements: *70311986891760
148
181
  - !ruby/object:Gem::Dependency
149
182
  name: guard-spork
150
- requirement: &70112950420700 !ruby/object:Gem::Requirement
183
+ requirement: &70311986891140 !ruby/object:Gem::Requirement
151
184
  none: false
152
185
  requirements:
153
186
  - - ! '>='
@@ -155,7 +188,7 @@ dependencies:
155
188
  version: '0'
156
189
  type: :development
157
190
  prerelease: false
158
- version_requirements: *70112950420700
191
+ version_requirements: *70311986891140
159
192
  description: Resolves cookbook dependencies
160
193
  email:
161
194
  - josiah@skirmisher.net
@@ -172,30 +205,37 @@ files:
172
205
  - LICENSE
173
206
  - README.rdoc
174
207
  - Rakefile
208
+ - features/lib/chef/knife/error_messages.feature
209
+ - features/lib/chef/knife/lockfile.feature
210
+ - features/lib/chef/knife/without.feature
211
+ - features/support/env.rb
212
+ - features/support/step_definitions.rb
175
213
  - knife_cookbook_dependencies.gemspec
176
214
  - lib/chef/knife/cookbook_dependencies_install.rb
215
+ - lib/kcd.rb
216
+ - lib/kcd/cookbook.rb
217
+ - lib/kcd/cookbookfile.rb
218
+ - lib/kcd/dsl.rb
219
+ - lib/kcd/error_messages.rb
220
+ - lib/kcd/git.rb
221
+ - lib/kcd/knife_utils.rb
222
+ - lib/kcd/lockfile.rb
223
+ - lib/kcd/metacookbook.rb
224
+ - lib/kcd/shelf.rb
225
+ - lib/kcd/version.rb
177
226
  - lib/knife_cookbook_dependencies.rb
178
- - lib/knife_cookbook_dependencies/cookbook.rb
179
- - lib/knife_cookbook_dependencies/cookbookfile.rb
180
- - lib/knife_cookbook_dependencies/dependency_reader.rb
181
- - lib/knife_cookbook_dependencies/dsl.rb
182
- - lib/knife_cookbook_dependencies/error_messages.rb
183
- - lib/knife_cookbook_dependencies/git.rb
184
- - lib/knife_cookbook_dependencies/knife_utils.rb
185
- - lib/knife_cookbook_dependencies/lockfile.rb
186
- - lib/knife_cookbook_dependencies/metacookbook.rb
187
- - lib/knife_cookbook_dependencies/shelf.rb
188
- - lib/knife_cookbook_dependencies/version.rb
189
227
  - spec/acceptance/knife_cookbook_dependencies_spec.rb
190
228
  - spec/fixtures/cookbooks/example_cookbook/README.md
191
229
  - spec/fixtures/cookbooks/example_cookbook/metadata.rb
192
230
  - spec/fixtures/cookbooks/example_cookbook/recipes/default.rb
193
- - spec/lib/knife_cookbook_dependencies/cookbook_spec.rb
194
- - spec/lib/knife_cookbook_dependencies/cookbookfile_spec.rb
195
- - spec/lib/knife_cookbook_dependencies/dependency_reader_spec.rb
196
- - spec/lib/knife_cookbook_dependencies/dsl_spec.rb
197
- - spec/lib/knife_cookbook_dependencies/git_spec.rb
198
- - spec/lib/knife_cookbook_dependencies/shelf_spec.rb
231
+ - spec/fixtures/lockfile_spec/with_lock/Cookbookfile
232
+ - spec/fixtures/lockfile_spec/without_lock/Cookbookfile.lock
233
+ - spec/lib/kcd/cookbook_spec.rb
234
+ - spec/lib/kcd/cookbookfile_spec.rb
235
+ - spec/lib/kcd/dsl_spec.rb
236
+ - spec/lib/kcd/git_spec.rb
237
+ - spec/lib/kcd/lockfile_spec.rb
238
+ - spec/lib/kcd/shelf_spec.rb
199
239
  - spec/spec_helper.rb
200
240
  - todo.txt
201
241
  homepage: https://github.com/RiotGames/knife_cookbook_dependencies
@@ -223,14 +263,21 @@ signing_key:
223
263
  specification_version: 3
224
264
  summary: Resolves cookbook dependencies
225
265
  test_files:
266
+ - features/lib/chef/knife/error_messages.feature
267
+ - features/lib/chef/knife/lockfile.feature
268
+ - features/lib/chef/knife/without.feature
269
+ - features/support/env.rb
270
+ - features/support/step_definitions.rb
226
271
  - spec/acceptance/knife_cookbook_dependencies_spec.rb
227
272
  - spec/fixtures/cookbooks/example_cookbook/README.md
228
273
  - spec/fixtures/cookbooks/example_cookbook/metadata.rb
229
274
  - spec/fixtures/cookbooks/example_cookbook/recipes/default.rb
230
- - spec/lib/knife_cookbook_dependencies/cookbook_spec.rb
231
- - spec/lib/knife_cookbook_dependencies/cookbookfile_spec.rb
232
- - spec/lib/knife_cookbook_dependencies/dependency_reader_spec.rb
233
- - spec/lib/knife_cookbook_dependencies/dsl_spec.rb
234
- - spec/lib/knife_cookbook_dependencies/git_spec.rb
235
- - spec/lib/knife_cookbook_dependencies/shelf_spec.rb
275
+ - spec/fixtures/lockfile_spec/with_lock/Cookbookfile
276
+ - spec/fixtures/lockfile_spec/without_lock/Cookbookfile.lock
277
+ - spec/lib/kcd/cookbook_spec.rb
278
+ - spec/lib/kcd/cookbookfile_spec.rb
279
+ - spec/lib/kcd/dsl_spec.rb
280
+ - spec/lib/kcd/git_spec.rb
281
+ - spec/lib/kcd/lockfile_spec.rb
282
+ - spec/lib/kcd/shelf_spec.rb
236
283
  - spec/spec_helper.rb