emeril 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,141 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require_relative '../spec_helper'
4
+
5
+ require 'emeril/releaser'
6
+
7
+ describe Emeril::Releaser do
8
+
9
+ let(:metadata) do
10
+ { :name => "foobar", :version => "4.2.0" }
11
+ end
12
+ let(:source_path) { "/tmp/yep" }
13
+ let(:category) { "Databases" }
14
+ let(:git_tagger) { stub(:run => true) }
15
+ let(:publisher) { stub(:run => true) }
16
+
17
+ before do
18
+ @saved = Hash.new
19
+ %w{node_name client_key}.map(&:to_sym).each do |attr|
20
+ @saved[attr] = Chef::Config[attr]
21
+ end
22
+
23
+ Chef::Config[:node_name] = "buster"
24
+ Chef::Config[:client_key] = "/tmp/buster.pem"
25
+ end
26
+
27
+ after do
28
+ %w{node_name client_key}.map(&:to_sym).each do |attr|
29
+ Chef::Config[attr] = @saved.delete(attr)
30
+ end
31
+ end
32
+
33
+ describe ".initalize" do
34
+
35
+ it "defaults :source_path to current path" do
36
+ Emeril::GitTagger.expects(:new).with do |opts|
37
+ opts[:source_path] == Dir.pwd
38
+ end
39
+ Emeril::Publisher.expects(:new).with do |opts|
40
+ opts[:source_path] == Dir.pwd
41
+ end
42
+
43
+ Emeril::Releaser.new(:metadata => metadata, :category => category)
44
+ end
45
+
46
+ it "sets a custom :source_path" do
47
+ Emeril::GitTagger.expects(:new).with do |opts|
48
+ opts[:source_path] == source_path
49
+ end
50
+ Emeril::Publisher.expects(:new).with do |opts|
51
+ opts[:source_path] == source_path
52
+ end
53
+
54
+ Emeril::Releaser.new(:metadata => metadata, :category => category,
55
+ :source_path => source_path)
56
+ end
57
+
58
+ it "defaults :metadata to use MetadataChopper" do
59
+ Emeril::MetadataChopper.expects(:new).with { |path|
60
+ path =~ /#{File.join(source_path, "metadata.rb")}$/
61
+ }.returns({ :name => "c", :version => "1.0.0" })
62
+
63
+ Emeril::Releaser.new(:category => category, :source_path => source_path)
64
+ end
65
+
66
+ it "defaults :category to use Category.for_coobook" do
67
+ Emeril::Category.expects(:for_cookbook).with("wakka")
68
+
69
+ Emeril::Releaser.new({
70
+ :metadata => { :name => "wakka", :version => "1.0.0" }
71
+ })
72
+ end
73
+
74
+ it "defaults :git_tagger to use GitTagger" do
75
+ Emeril::GitTagger.expects(:new).with do |opts|
76
+ opts[:source_path] == source_path &&
77
+ opts[:version] == metadata[:version]
78
+ end
79
+
80
+ Emeril::Releaser.new(
81
+ :source_path => source_path,
82
+ :metadata => metadata,
83
+ :category => category
84
+ )
85
+ end
86
+
87
+ it "defaults :publisher to use Publisher" do
88
+ Emeril::Publisher.expects(:new).with do |opts|
89
+ opts[:source_path] == source_path &&
90
+ opts[:name] == metadata[:name] &&
91
+ opts[:category] == category
92
+ end
93
+
94
+ Emeril::Releaser.new(
95
+ :source_path => source_path,
96
+ :metadata => metadata,
97
+ :category => category
98
+ )
99
+ end
100
+
101
+ it "disables the git version tag prefix" do
102
+ Emeril::GitTagger.expects(:new).with do |opts|
103
+ opts[:tag_prefix] == false
104
+ end
105
+
106
+ Emeril::Releaser.new(
107
+ :source_path => source_path,
108
+ :metadata => metadata,
109
+ :category => category,
110
+ :tag_prefix => false
111
+ )
112
+ end
113
+ end
114
+
115
+ describe "#run" do
116
+
117
+ it "calls #run on git_tagger" do
118
+ releaser = Emeril::Releaser.new(
119
+ :metadata => metadata,
120
+ :category => category,
121
+ :git_tagger => git_tagger,
122
+ :publisher => publisher
123
+ )
124
+ git_tagger.expects(:run)
125
+
126
+ releaser.run
127
+ end
128
+
129
+ it "calls #run on publisher" do
130
+ releaser = Emeril::Releaser.new(
131
+ :metadata => metadata,
132
+ :category => category,
133
+ :git_tagger => git_tagger,
134
+ :publisher => publisher
135
+ )
136
+ publisher.expects(:run)
137
+
138
+ releaser.run
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,46 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://cookbooks.opscode.com/api/v1/cookbooks/mysql
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Server:
20
+ - ngx_openresty
21
+ Date:
22
+ - Sun, 19 May 2013 03:02:46 GMT
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Content-Length:
26
+ - '2808'
27
+ Connection:
28
+ - keep-alive
29
+ Status:
30
+ - 200 OK
31
+ Set-Cookie:
32
+ - _sandbox_session=eyJsb2NhdGlvbiI6eyJpZCI6Im15c3FsIiwiY29udHJvbGxlciI6ImFwaS92MS9jb29rYm9va3MiLCJhY3Rpb24iOiJzaG93In0sInNlc3Npb25faWQiOiI3NTY3ZjExMjRlMDI5NWIyNGQ5NDY2ZDNiOGRmZmNiOCJ9--80263530e5c554f2052ce6f25b2dbeb8136a8a6a;
33
+ domain=.opscode.com; path=/; HttpOnly
34
+ - logged-in-username=; domain=.opscode.com; path=/
35
+ Etag:
36
+ - ! '"1379d0fdf0632ffd7d4488ae01199dd3"'
37
+ X-Runtime:
38
+ - '25'
39
+ Cache-Control:
40
+ - private, max-age=0, must-revalidate
41
+ body:
42
+ encoding: US-ASCII
43
+ string: ! '{"description":"Installs and configures mysql for client or server","created_at":"2009-10-28T19:16:54Z","average_rating":4.33333,"versions":["http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/3_0_0","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/2_1_2","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/2_1_0","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/2_0_2","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/2_0_0","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_3_0","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_2_6","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_2_4","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_2_2","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_2_1","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_0_8","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_0_7","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_0_6","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_0_5","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_0_4","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_0_3","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_0_2","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_0_1","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/1_0_0","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_24_4","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_24_3","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_24_2","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_24_1","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_24_0","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_23_1","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_23_0","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_22_0","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_21_5","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_21_3","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_21_2","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_21_1","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_21_0","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_20_0","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_15_0","http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/0_10_0"],"latest_version":"http://cookbooks.opscode.com/api/v1/cookbooks/mysql/versions/3_0_0","updated_at":"2013-04-12T22:58:50Z","category":"Databases","external_url":"github.com/opscode-cookbooks/mysql","maintainer":"opscode","name":"mysql"}'
44
+ http_version:
45
+ recorded_at: Sun, 19 May 2013 03:02:49 GMT
46
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,38 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://cookbooks.opscode.com/api/v1/cookbooks/fooboobunnyyaya
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 404
17
+ message: Not Found
18
+ headers:
19
+ Server:
20
+ - ngx_openresty
21
+ Date:
22
+ - Sun, 19 May 2013 03:06:33 GMT
23
+ Content-Type:
24
+ - text/html; charset=utf-8
25
+ Content-Length:
26
+ - '71'
27
+ Connection:
28
+ - keep-alive
29
+ Status:
30
+ - 404 Not Found
31
+ Cache-Control:
32
+ - no-cache
33
+ body:
34
+ encoding: US-ASCII
35
+ string: ! '{"error_code":"NOT_FOUND","error_messages":["Resource does not exist"]}'
36
+ http_version:
37
+ recorded_at: Sun, 19 May 2013 03:06:36 GMT
38
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ gem 'minitest'
4
+
5
+ if ENV['SIMPLECOV']
6
+ require 'simplecov'
7
+ SimpleCov.adapters.define 'gem' do
8
+ command_name 'Specs'
9
+
10
+ add_filter '.gem/'
11
+ add_filter '/spec/'
12
+
13
+ add_group 'Libraries', '/lib/'
14
+ end
15
+ SimpleCov.start 'gem'
16
+ end
17
+
18
+ require 'fakefs/safe'
19
+ require 'minitest/autorun'
20
+ require 'mocha/setup'
21
+
22
+ # Nasty hack to redefine IO.read in terms of File#read for fakefs
23
+ class IO
24
+ def self.read(*args)
25
+ File.open(args[0], "rb") { |f| f.read(args[1]) }
26
+ end
27
+ end
metadata ADDED
@@ -0,0 +1,312 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: emeril
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Fletcher Nichol
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-05-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: chef
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.3'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.3'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: minitest
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: guard-minitest
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: mocha
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: fakefs
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: vcr
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: webmock
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: cane
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: guard-cane
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: tailor
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ - !ruby/object:Gem::Dependency
207
+ name: simplecov
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: countloc
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ description: Release Chef cookbooks
239
+ email:
240
+ - fnichol@nichol.ca
241
+ executables: []
242
+ extensions: []
243
+ extra_rdoc_files: []
244
+ files:
245
+ - .cane
246
+ - .gitignore
247
+ - .tailor
248
+ - .travis.yml
249
+ - CHANGELOG.md
250
+ - Gemfile
251
+ - Guardfile
252
+ - LICENSE.txt
253
+ - README.md
254
+ - Rakefile
255
+ - emeril.gemspec
256
+ - lib/emeril.rb
257
+ - lib/emeril/category.rb
258
+ - lib/emeril/git_tagger.rb
259
+ - lib/emeril/logging.rb
260
+ - lib/emeril/metadata_chopper.rb
261
+ - lib/emeril/publisher.rb
262
+ - lib/emeril/rake.rb
263
+ - lib/emeril/rake_tasks.rb
264
+ - lib/emeril/releaser.rb
265
+ - lib/emeril/thor.rb
266
+ - lib/emeril/thor_tasks.rb
267
+ - lib/emeril/version.rb
268
+ - spec/emeril/category_spec.rb
269
+ - spec/emeril/git_tagger_spec.rb
270
+ - spec/emeril/metadata_chopper_spec.rb
271
+ - spec/emeril/publisher_spec.rb
272
+ - spec/emeril/releaser_spec.rb
273
+ - spec/fixtures/vcr_cassettes/known_cookbook.yml
274
+ - spec/fixtures/vcr_cassettes/nonexistant_cookbook.yml
275
+ - spec/spec_helper.rb
276
+ homepage: https://github.com/fnichol/emeril
277
+ licenses:
278
+ - MIT
279
+ post_install_message:
280
+ rdoc_options: []
281
+ require_paths:
282
+ - lib
283
+ required_ruby_version: !ruby/object:Gem::Requirement
284
+ none: false
285
+ requirements:
286
+ - - ! '>='
287
+ - !ruby/object:Gem::Version
288
+ version: 1.9.2
289
+ required_rubygems_version: !ruby/object:Gem::Requirement
290
+ none: false
291
+ requirements:
292
+ - - ! '>='
293
+ - !ruby/object:Gem::Version
294
+ version: '0'
295
+ segments:
296
+ - 0
297
+ hash: -303951411398259497
298
+ requirements: []
299
+ rubyforge_project:
300
+ rubygems_version: 1.8.24
301
+ signing_key:
302
+ specification_version: 3
303
+ summary: Release Chef cookbooks
304
+ test_files:
305
+ - spec/emeril/category_spec.rb
306
+ - spec/emeril/git_tagger_spec.rb
307
+ - spec/emeril/metadata_chopper_spec.rb
308
+ - spec/emeril/publisher_spec.rb
309
+ - spec/emeril/releaser_spec.rb
310
+ - spec/fixtures/vcr_cassettes/known_cookbook.yml
311
+ - spec/fixtures/vcr_cassettes/nonexistant_cookbook.yml
312
+ - spec/spec_helper.rb