librarian 0.0.9 → 0.0.10
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/CHANGELOG.md +4 -0
- data/lib/librarian.rb +5 -178
- data/lib/librarian/action.rb +5 -0
- data/lib/librarian/action/base.rb +22 -0
- data/lib/librarian/action/clean.rb +56 -0
- data/lib/librarian/action/ensure.rb +24 -0
- data/lib/librarian/action/install.rb +101 -0
- data/lib/librarian/action/resolve.rb +81 -0
- data/lib/librarian/action/update.rb +76 -0
- data/lib/librarian/chef/cli.rb +7 -2
- data/lib/librarian/chef/dsl.rb +0 -3
- data/lib/librarian/chef/environment.rb +19 -0
- data/lib/librarian/chef/extension.rb +1 -16
- data/lib/librarian/chef/integration/knife.rb +9 -16
- data/lib/librarian/chef/source/git.rb +0 -2
- data/lib/librarian/chef/source/local.rb +1 -74
- data/lib/librarian/chef/source/local/manifest.rb +82 -0
- data/lib/librarian/chef/source/path.rb +0 -2
- data/lib/librarian/chef/source/site.rb +9 -89
- data/lib/librarian/chef/source/site/manifest.rb +94 -0
- data/lib/librarian/cli.rb +56 -17
- data/lib/librarian/dependency.rb +2 -2
- data/lib/librarian/dsl.rb +15 -5
- data/lib/librarian/dsl/receiver.rb +2 -0
- data/lib/librarian/dsl/target.rb +13 -1
- data/lib/librarian/environment.rb +94 -0
- data/lib/librarian/error.rb +4 -0
- data/lib/librarian/helpers/debug.rb +6 -6
- data/lib/librarian/lockfile.rb +7 -5
- data/lib/librarian/lockfile/compiler.rb +5 -4
- data/lib/librarian/lockfile/parser.rb +6 -5
- data/lib/librarian/manifest.rb +2 -2
- data/lib/librarian/mock/cli.rb +6 -1
- data/lib/librarian/mock/dsl.rb +0 -3
- data/lib/librarian/mock/environment.rb +24 -0
- data/lib/librarian/mock/extension.rb +1 -20
- data/lib/librarian/mock/source/mock.rb +7 -7
- data/lib/librarian/mock/source/mock/registry.rb +16 -12
- data/lib/librarian/resolver.rb +5 -116
- data/lib/librarian/resolver/implementation.rb +117 -0
- data/lib/librarian/source/git.rb +8 -7
- data/lib/librarian/source/git/repository.rb +7 -5
- data/lib/librarian/source/local.rb +1 -1
- data/lib/librarian/source/path.rb +7 -6
- data/lib/librarian/spec_change_set.rb +6 -5
- data/lib/librarian/specfile.rb +10 -4
- data/lib/librarian/version.rb +1 -1
- data/librarian.gemspec +1 -0
- data/spec/functional/chef/source/git_spec.rb +177 -89
- data/spec/functional/chef/source/site_spec.rb +111 -52
- data/spec/unit/action/base_spec.rb +18 -0
- data/spec/unit/action/clean_spec.rb +133 -0
- data/spec/unit/action/ensure_spec.rb +37 -0
- data/spec/unit/action/install_spec.rb +113 -0
- data/spec/unit/dsl_spec.rb +15 -13
- data/spec/unit/environment_spec.rb +9 -0
- data/spec/unit/lockfile_spec.rb +15 -4
- data/spec/unit/mock/source/mock.rb +22 -0
- data/spec/unit/resolver_spec.rb +24 -24
- data/spec/unit/spec_change_set_spec.rb +29 -25
- metadata +47 -19
- data/lib/librarian/chef/particularity.rb +0 -9
- data/lib/librarian/mock/particularity.rb +0 -9
- data/lib/librarian/particularity.rb +0 -7
data/lib/librarian/source/git.rb
CHANGED
@@ -2,7 +2,6 @@ require 'fileutils'
|
|
2
2
|
require 'pathname'
|
3
3
|
require 'digest'
|
4
4
|
|
5
|
-
require 'librarian/particularity'
|
6
5
|
require 'librarian/source/git/repository'
|
7
6
|
require 'librarian/source/local'
|
8
7
|
|
@@ -10,7 +9,6 @@ module Librarian
|
|
10
9
|
module Source
|
11
10
|
class Git
|
12
11
|
|
13
|
-
include Particularity
|
14
12
|
include Local
|
15
13
|
|
16
14
|
class << self
|
@@ -18,8 +16,8 @@ module Librarian
|
|
18
16
|
def lock_name
|
19
17
|
LOCK_NAME
|
20
18
|
end
|
21
|
-
def from_lock_options(options)
|
22
|
-
new(options[:remote], options.reject{|k, v| k == :remote})
|
19
|
+
def from_lock_options(environment, options)
|
20
|
+
new(environment, options[:remote], options.reject{|k, v| k == :remote})
|
23
21
|
end
|
24
22
|
end
|
25
23
|
|
@@ -27,9 +25,12 @@ module Librarian
|
|
27
25
|
:ref => 'master'
|
28
26
|
}
|
29
27
|
|
28
|
+
attr_accessor :environment
|
29
|
+
private :environment=
|
30
30
|
attr_reader :uri, :ref, :sha, :path
|
31
31
|
|
32
|
-
def initialize(uri, options = {})
|
32
|
+
def initialize(environment, uri, options = {})
|
33
|
+
self.environment = environment
|
33
34
|
@uri = uri
|
34
35
|
@ref = options[:ref] || DEFAULTS[:ref]
|
35
36
|
@sha = options[:sha]
|
@@ -80,13 +81,13 @@ module Librarian
|
|
80
81
|
@repository_cache_path ||= begin
|
81
82
|
dir = path ? "#{uri}/#{path}" : uri
|
82
83
|
dir = Digest::MD5.hexdigest(dir)
|
83
|
-
|
84
|
+
environment.cache_path.join("source/git/#{dir}")
|
84
85
|
end
|
85
86
|
end
|
86
87
|
|
87
88
|
def repository
|
88
89
|
@repository ||= begin
|
89
|
-
Repository.new(
|
90
|
+
Repository.new(environment, repository_cache_path)
|
90
91
|
end
|
91
92
|
end
|
92
93
|
|
@@ -8,10 +8,10 @@ module Librarian
|
|
8
8
|
class Repository
|
9
9
|
|
10
10
|
class << self
|
11
|
-
def clone!(
|
11
|
+
def clone!(environment, path, repository_url)
|
12
12
|
path = Pathname.new(path)
|
13
13
|
path.mkpath
|
14
|
-
git = new(
|
14
|
+
git = new(environment, path)
|
15
15
|
git.clone!(repository_url)
|
16
16
|
git
|
17
17
|
end
|
@@ -19,11 +19,13 @@ module Librarian
|
|
19
19
|
|
20
20
|
include Helpers::Debug
|
21
21
|
|
22
|
-
|
22
|
+
attr_accessor :environment
|
23
|
+
private :environment=
|
24
|
+
attr_reader :path
|
23
25
|
|
24
|
-
def initialize(
|
26
|
+
def initialize(environment, path)
|
27
|
+
self.environment = environment
|
25
28
|
path = Pathname.new(path)
|
26
|
-
@root_module = root_module
|
27
29
|
@path = path
|
28
30
|
end
|
29
31
|
|
@@ -1,11 +1,9 @@
|
|
1
|
-
require 'librarian/particularity'
|
2
1
|
require 'librarian/source/local'
|
3
2
|
|
4
3
|
module Librarian
|
5
4
|
module Source
|
6
5
|
class Path
|
7
6
|
|
8
|
-
include Particularity
|
9
7
|
include Local
|
10
8
|
|
11
9
|
class << self
|
@@ -13,14 +11,17 @@ module Librarian
|
|
13
11
|
def lock_name
|
14
12
|
LOCK_NAME
|
15
13
|
end
|
16
|
-
def from_lock_options(options)
|
17
|
-
new(options[:remote], options.reject{|k, v| k == :remote})
|
14
|
+
def from_lock_options(environment, options)
|
15
|
+
new(environment, options[:remote], options.reject{|k, v| k == :remote})
|
18
16
|
end
|
19
17
|
end
|
20
18
|
|
19
|
+
attr_accessor :environment
|
20
|
+
private :environment=
|
21
21
|
attr_reader :path
|
22
22
|
|
23
|
-
def initialize(path, options)
|
23
|
+
def initialize(environment, path, options)
|
24
|
+
self.environment = environment
|
24
25
|
@path = path
|
25
26
|
end
|
26
27
|
|
@@ -46,7 +47,7 @@ module Librarian
|
|
46
47
|
end
|
47
48
|
|
48
49
|
def filesystem_path
|
49
|
-
@filesystem_path ||= Pathname.new(path).expand_path(
|
50
|
+
@filesystem_path ||= Pathname.new(path).expand_path(environment.project_path)
|
50
51
|
end
|
51
52
|
|
52
53
|
end
|
@@ -10,13 +10,14 @@ module Librarian
|
|
10
10
|
|
11
11
|
include Helpers::Debug
|
12
12
|
|
13
|
-
|
13
|
+
attr_accessor :environment
|
14
|
+
private :environment=
|
14
15
|
attr_reader :spec, :lock
|
15
16
|
|
16
|
-
def initialize(
|
17
|
-
|
18
|
-
raise TypeError, "can't convert #{spec.class} into Spec" unless Spec === spec
|
19
|
-
raise TypeError, "can't convert #{lock.class} into Resolution" unless Resolution === lock
|
17
|
+
def initialize(environment, spec, lock)
|
18
|
+
self.environment = environment
|
19
|
+
raise TypeError, "can't convert #{spec.class} into #{Spec}" unless Spec === spec
|
20
|
+
raise TypeError, "can't convert #{lock.class} into #{Resolution}" unless Resolution === lock
|
20
21
|
@spec, @lock = spec, lock
|
21
22
|
end
|
22
23
|
|
data/lib/librarian/specfile.rb
CHANGED
@@ -1,15 +1,21 @@
|
|
1
|
+
require 'librarian/helpers/debug'
|
2
|
+
|
1
3
|
module Librarian
|
2
4
|
class Specfile
|
3
5
|
|
4
|
-
|
6
|
+
include Helpers::Debug
|
7
|
+
|
8
|
+
attr_accessor :environment
|
9
|
+
private :environment=
|
10
|
+
attr_reader :path, :dependencies, :source
|
5
11
|
|
6
|
-
def initialize(
|
7
|
-
|
12
|
+
def initialize(environment, path)
|
13
|
+
self.environment = environment
|
8
14
|
@path = path
|
9
15
|
end
|
10
16
|
|
11
17
|
def read(precache_sources = [])
|
12
|
-
|
18
|
+
environment.dsl_class.run(environment, path.read, precache_sources)
|
13
19
|
end
|
14
20
|
|
15
21
|
end
|
data/lib/librarian/version.rb
CHANGED
data/librarian.gemspec
CHANGED
@@ -3,6 +3,9 @@ require 'securerandom'
|
|
3
3
|
|
4
4
|
require 'librarian'
|
5
5
|
require 'librarian/helpers'
|
6
|
+
require 'librarian/error'
|
7
|
+
require 'librarian/action/resolve'
|
8
|
+
require 'librarian/action/install'
|
6
9
|
require 'librarian/chef'
|
7
10
|
|
8
11
|
module Librarian
|
@@ -19,6 +22,9 @@ module Librarian
|
|
19
22
|
|
20
23
|
let(:cookbooks_path) { tmp_path.join("cookbooks") }
|
21
24
|
|
25
|
+
# depends on repo_path being defined in each context
|
26
|
+
let(:env) { Environment.new(:project_path => repo_path) }
|
27
|
+
|
22
28
|
context "a single dependency with a git source" do
|
23
29
|
|
24
30
|
let(:sample_path) { tmp_path.join("sample") }
|
@@ -65,82 +71,137 @@ module Librarian
|
|
65
71
|
end
|
66
72
|
end
|
67
73
|
|
68
|
-
|
69
|
-
repo_path
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
74
|
+
context "resolving" do
|
75
|
+
let(:repo_path) { tmp_path.join("repo/resolve") }
|
76
|
+
before do
|
77
|
+
repo_path.rmtree if repo_path.exist?
|
78
|
+
repo_path.mkpath
|
79
|
+
repo_path.join("cookbooks").mkpath
|
80
|
+
cheffile = Helpers.strip_heredoc(<<-CHEFFILE)
|
81
|
+
#!/usr/bin/env ruby
|
82
|
+
cookbook "sample", :git => #{sample_path.to_s.inspect}
|
83
|
+
CHEFFILE
|
84
|
+
repo_path.join("Cheffile").open("wb") { |f| f.write(cheffile) }
|
85
|
+
end
|
86
|
+
|
87
|
+
context "the resolve" do
|
88
|
+
it "should not raise an exception" do
|
89
|
+
expect { Action::Resolve.new(env).run }.to_not raise_error
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
context "the results" do
|
94
|
+
before { Action::Resolve.new(env).run }
|
79
95
|
|
80
|
-
|
81
|
-
|
82
|
-
|
96
|
+
it "should create the lockfile" do
|
97
|
+
repo_path.join("Cheffile.lock").should exist
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should not attempt to install the sample cookbok" do
|
101
|
+
repo_path.join("cookbooks/sample").should_not exist
|
102
|
+
end
|
103
|
+
end
|
83
104
|
end
|
84
105
|
|
85
|
-
|
86
|
-
repo_path
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
106
|
+
context "installing" do
|
107
|
+
let(:repo_path) { tmp_path.join("repo/install") }
|
108
|
+
before do
|
109
|
+
repo_path.rmtree if repo_path.exist?
|
110
|
+
repo_path.mkpath
|
111
|
+
repo_path.join("cookbooks").mkpath
|
112
|
+
cheffile = Helpers.strip_heredoc(<<-CHEFFILE)
|
113
|
+
#!/usr/bin/env ruby
|
114
|
+
cookbook "sample", :git => #{sample_path.to_s.inspect}
|
115
|
+
CHEFFILE
|
116
|
+
repo_path.join("Cheffile").open("wb") { |f| f.write(cheffile) }
|
117
|
+
|
118
|
+
Action::Resolve.new(env).run
|
119
|
+
end
|
120
|
+
|
121
|
+
context "the install" do
|
122
|
+
it "should not raise an exception" do
|
123
|
+
expect { Action::Install.new(env).run }.to_not raise_error
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
context "the results" do
|
128
|
+
before { Action::Install.new(env).run }
|
96
129
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
130
|
+
it "should create the lockfile" do
|
131
|
+
repo_path.join("Cheffile.lock").should exist
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should create the directory for the cookbook" do
|
135
|
+
repo_path.join("cookbooks/sample").should exist
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should copy the cookbook files into the cookbook directory" do
|
139
|
+
repo_path.join("cookbooks/sample/metadata.rb").should exist
|
140
|
+
end
|
141
|
+
end
|
101
142
|
end
|
102
143
|
|
103
|
-
|
104
|
-
repo_path
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
144
|
+
context "resolving and and separately installing" do
|
145
|
+
let(:repo_path) { tmp_path.join("repo/resolve-install") }
|
146
|
+
before do
|
147
|
+
repo_path.rmtree if repo_path.exist?
|
148
|
+
repo_path.mkpath
|
149
|
+
repo_path.join("cookbooks").mkpath
|
150
|
+
cheffile = Helpers.strip_heredoc(<<-CHEFFILE)
|
151
|
+
#!/usr/bin/env ruby
|
152
|
+
cookbook "sample", :git => #{sample_path.to_s.inspect}
|
153
|
+
CHEFFILE
|
154
|
+
repo_path.join("Cheffile").open("wb") { |f| f.write(cheffile) }
|
114
155
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
156
|
+
Action::Resolve.new(env).run
|
157
|
+
repo_path.join("tmp").rmtree if repo_path.join("tmp").exist?
|
158
|
+
end
|
159
|
+
|
160
|
+
context "the install" do
|
161
|
+
it "should not raise an exception" do
|
162
|
+
expect { Action::Install.new(env).run }.to_not raise_error
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
context "the results" do
|
167
|
+
before { Action::Install.new(env).run }
|
168
|
+
|
169
|
+
it "should create the directory for the cookbook" do
|
170
|
+
repo_path.join("cookbooks/sample").should exist
|
171
|
+
end
|
172
|
+
|
173
|
+
it "should copy the cookbook files into the cookbook directory" do
|
174
|
+
repo_path.join("cookbooks/sample/metadata.rb").should exist
|
175
|
+
end
|
176
|
+
end
|
120
177
|
end
|
121
178
|
|
122
|
-
|
123
|
-
repo_path
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
repo_path.join("Cheffile.lock").should exist
|
179
|
+
context "resolving, changing, and resolving" do
|
180
|
+
let(:repo_path) { tmp_path.join("repo/resolve-update") }
|
181
|
+
before do
|
182
|
+
repo_path.rmtree if repo_path.exist?
|
183
|
+
repo_path.mkpath
|
184
|
+
repo_path.join("cookbooks").mkpath
|
185
|
+
cheffile = Helpers.strip_heredoc(<<-CHEFFILE)
|
186
|
+
git #{cookbooks_path.to_s.inspect}
|
187
|
+
cookbook "first-sample"
|
188
|
+
CHEFFILE
|
189
|
+
repo_path.join("Cheffile").open("wb") { |f| f.write(cheffile) }
|
190
|
+
Action::Resolve.new(env).run
|
135
191
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
192
|
+
cheffile = Helpers.strip_heredoc(<<-CHEFFILE)
|
193
|
+
git #{cookbooks_path.to_s.inspect}
|
194
|
+
cookbook "first-sample"
|
195
|
+
cookbook "second-sample"
|
196
|
+
CHEFFILE
|
197
|
+
repo_path.join("Cheffile").open("wb") { |f| f.write(cheffile) }
|
198
|
+
end
|
199
|
+
|
200
|
+
context "the second resolve" do
|
201
|
+
it "should not raise an exception" do
|
202
|
+
expect { Action::Resolve.new(env).run }.to_not raise_error
|
203
|
+
end
|
204
|
+
end
|
144
205
|
end
|
145
206
|
|
146
207
|
end
|
@@ -168,8 +229,8 @@ module Librarian
|
|
168
229
|
end
|
169
230
|
|
170
231
|
context "if no path option is given" do
|
171
|
-
|
172
|
-
|
232
|
+
let(:repo_path) { tmp_path.join("repo/resolve") }
|
233
|
+
before do
|
173
234
|
repo_path.rmtree if repo_path.exist?
|
174
235
|
repo_path.mkpath
|
175
236
|
repo_path.join("cookbooks").mkpath
|
@@ -179,15 +240,16 @@ module Librarian
|
|
179
240
|
:git => #{git_path.to_s.inspect}
|
180
241
|
CHEFFILE
|
181
242
|
repo_path.join("Cheffile").open("wb") { |f| f.write(cheffile) }
|
182
|
-
|
243
|
+
end
|
183
244
|
|
184
|
-
|
245
|
+
it "should not resolve" do
|
246
|
+
expect{ Action::Resolve.new(env).run }.to raise_error
|
185
247
|
end
|
186
248
|
end
|
187
249
|
|
188
250
|
context "if the path option is wrong" do
|
189
|
-
|
190
|
-
|
251
|
+
let(:repo_path) { tmp_path.join("repo/resolve") }
|
252
|
+
before do
|
191
253
|
repo_path.rmtree if repo_path.exist?
|
192
254
|
repo_path.mkpath
|
193
255
|
repo_path.join("cookbooks").mkpath
|
@@ -198,18 +260,19 @@ module Librarian
|
|
198
260
|
:path => "jelly"
|
199
261
|
CHEFFILE
|
200
262
|
repo_path.join("Cheffile").open("wb") { |f| f.write(cheffile) }
|
201
|
-
|
263
|
+
end
|
202
264
|
|
203
|
-
|
265
|
+
it "should not resolve" do
|
266
|
+
expect{ Action::Resolve.new(env).run }.to raise_error
|
204
267
|
end
|
205
268
|
end
|
206
269
|
|
207
270
|
context "if the path option is right" do
|
208
|
-
|
209
|
-
|
271
|
+
let(:repo_path) { tmp_path.join("repo/resolve") }
|
272
|
+
before do
|
210
273
|
repo_path.rmtree if repo_path.exist?
|
211
274
|
repo_path.mkpath
|
212
|
-
repo_path.join(
|
275
|
+
repo_path.join("cookbooks").mkpath
|
213
276
|
cheffile = Helpers.strip_heredoc(<<-CHEFFILE)
|
214
277
|
#!/usr/bin/env ruby
|
215
278
|
cookbook "sample",
|
@@ -217,11 +280,20 @@ module Librarian
|
|
217
280
|
:path => "buttercup"
|
218
281
|
CHEFFILE
|
219
282
|
repo_path.join("Cheffile").open("wb") { |f| f.write(cheffile) }
|
220
|
-
|
283
|
+
end
|
221
284
|
|
222
|
-
|
223
|
-
|
224
|
-
|
285
|
+
context "the resolve" do
|
286
|
+
it "should not raise an exception" do
|
287
|
+
expect { Action::Resolve.new(env).run }.to_not raise_error
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
context "the results" do
|
292
|
+
before { Action::Resolve.new(env).run }
|
293
|
+
|
294
|
+
it "should create the lockfile" do
|
295
|
+
repo_path.join("Cheffile.lock").should exist
|
296
|
+
end
|
225
297
|
end
|
226
298
|
end
|
227
299
|
|
@@ -229,9 +301,8 @@ module Librarian
|
|
229
301
|
|
230
302
|
context "missing a metadata" do
|
231
303
|
let(:git_path) { tmp_path.join("big-git-repo") }
|
232
|
-
|
233
|
-
|
234
|
-
repo_path = tmp_path.join("repo/resolve")
|
304
|
+
let(:repo_path) { tmp_path.join("repo/resolve") }
|
305
|
+
before do
|
235
306
|
repo_path.rmtree if repo_path.exist?
|
236
307
|
repo_path.mkpath
|
237
308
|
repo_path.join("cookbooks").mkpath
|
@@ -240,12 +311,29 @@ module Librarian
|
|
240
311
|
:git => #{git_path.to_s.inspect}
|
241
312
|
CHEFFILE
|
242
313
|
repo_path.join("Cheffile").open("wb") { |f| f.write(cheffile) }
|
243
|
-
|
314
|
+
end
|
244
315
|
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
316
|
+
context "the resolve" do
|
317
|
+
it "should raise an exception" do
|
318
|
+
expect { Action::Resolve.new(env).run }.to raise_error
|
319
|
+
end
|
320
|
+
|
321
|
+
it "should explain the problem" do
|
322
|
+
expect { Action::Resolve.new(env).run }.
|
323
|
+
to raise_error(Error, /no metadata file found/i)
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
context "the results" do
|
328
|
+
before { Action::Resolve.new(env).run rescue nil }
|
329
|
+
|
330
|
+
it "should not create the lockfile" do
|
331
|
+
repo_path.join("Cheffile.lock").should_not exist
|
332
|
+
end
|
333
|
+
|
334
|
+
it "should not create the directory for the cookbook" do
|
335
|
+
repo_path.join("cookbooks/sample").should_not exist
|
336
|
+
end
|
249
337
|
end
|
250
338
|
end
|
251
339
|
|