emeril 0.6.0 → 0.7.0
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.
- checksums.yaml +7 -0
- data/.travis.yml +11 -0
- data/CHANGELOG.md +17 -0
- data/Gemfile +5 -0
- data/Guardfile +1 -1
- data/README.md +1 -0
- data/Rakefile +8 -2
- data/emeril.gemspec +1 -1
- data/lib/emeril/publisher.rb +1 -0
- data/lib/emeril/releaser.rb +5 -1
- data/lib/emeril/version.rb +1 -1
- data/spec/fixtures/client_key.pem +27 -0
- data/spec/fixtures/vcr_cassettes/new_release.yml +125 -0
- data/spec/integration/new_release_spec.rb +69 -0
- data/spec/integration/skip_publish_spec.rb +54 -0
- data/spec/spec_helper.rb +69 -0
- data/spec/{emeril → unit/emeril}/category_spec.rb +1 -1
- data/spec/{emeril → unit/emeril}/git_tagger_spec.rb +9 -47
- data/spec/{emeril → unit/emeril}/metadata_chopper_spec.rb +1 -1
- data/spec/{emeril → unit/emeril}/publisher_spec.rb +1 -1
- data/spec/{emeril → unit/emeril}/releaser_spec.rb +12 -1
- metadata +51 -73
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f6302d107f9d6cf6b6b69b14bd4f6f0514d50fe6
|
4
|
+
data.tar.gz: 1e89c4e9dfdba1758ce8d4cba37cf513bb0e3afb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e8b707e4affd40fe9520dc2ed28717b761abab6ff7d020cebebc6f07d5059327ecbcc7409466b42dc8c7801c679feded3e4e54e16bbd34e9455ec9ae9b05081b
|
7
|
+
data.tar.gz: 987c6de17c5bfbcc63fdde1607dfe3f4a002cc095b291856bfd7f65bb9801ba7dd6bf0fd60e26e211fc09bd095ab3d610b5542cd93ee4ed0f44b6fe17d54b016
|
data/.travis.yml
CHANGED
@@ -6,6 +6,17 @@ rvm:
|
|
6
6
|
- 1.9.2
|
7
7
|
- ruby-head
|
8
8
|
|
9
|
+
env:
|
10
|
+
- "CHEF_VERSION="
|
11
|
+
- "CHEF_VERSION='~> 11.6.0'"
|
12
|
+
- "CHEF_VERSION='~> 11.4.4'"
|
13
|
+
- "CHEF_VERSION='~> 10.26'"
|
14
|
+
|
9
15
|
matrix:
|
10
16
|
allow_failures:
|
11
17
|
- rvm: ruby-head
|
18
|
+
exclude:
|
19
|
+
- rvm: 2.0.0
|
20
|
+
env: "CHEF_VERSION='~> 11.4.4'"
|
21
|
+
- rvm: 2.0.0
|
22
|
+
env: "CHEF_VERSION='~> 10.26'"
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
## 0.7.0 / 2013-08-26
|
2
|
+
|
3
|
+
### Breaking Changes
|
4
|
+
|
5
|
+
* Drop support for Chef version 0.10.10. ([@fnichol][])
|
6
|
+
|
7
|
+
### Bug fixes
|
8
|
+
|
9
|
+
* Pull request [#2][]: Dont set default publisher when community site is false. ([@capen][])
|
10
|
+
|
11
|
+
### Improvements
|
12
|
+
|
13
|
+
* Add integration test suite and explicitly test against different versions of Chef. ([@fnichol][])
|
14
|
+
|
15
|
+
|
1
16
|
## 0.6.0 / 2013-05-30
|
2
17
|
|
3
18
|
### Bug fixes
|
@@ -22,5 +37,7 @@ The initial release, **BAM**!
|
|
22
37
|
|
23
38
|
<!--- The following link definition list is generated by PimpMyChangelog --->
|
24
39
|
[#1]: https://github.com/fnichol/emeril/issues/1
|
40
|
+
[#2]: https://github.com/fnichol/emeril/issues/2
|
41
|
+
[@capen]: https://github.com/capen
|
25
42
|
[@fnichol]: https://github.com/fnichol
|
26
43
|
[@thbishop]: https://github.com/thbishop
|
data/Gemfile
CHANGED
data/Guardfile
CHANGED
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -5,12 +5,18 @@ require 'tailor/rake_task'
|
|
5
5
|
|
6
6
|
Rake::TestTask.new(:unit) do |t|
|
7
7
|
t.libs.push "lib"
|
8
|
-
t.test_files = FileList['spec/**/*_spec.rb']
|
8
|
+
t.test_files = FileList['spec/unit/**/*_spec.rb']
|
9
|
+
t.verbose = true
|
10
|
+
end
|
11
|
+
|
12
|
+
Rake::TestTask.new(:integration) do |t|
|
13
|
+
t.libs.push "lib"
|
14
|
+
t.test_files = FileList['spec/integration/**/*_spec.rb']
|
9
15
|
t.verbose = true
|
10
16
|
end
|
11
17
|
|
12
18
|
desc "Run all test suites"
|
13
|
-
task :test => [:unit]
|
19
|
+
task :test => [:unit, :integration]
|
14
20
|
|
15
21
|
desc "Run cane to check quality metrics"
|
16
22
|
Cane::RakeTask.new do |cane|
|
data/emeril.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.required_ruby_version = '>= 1.9.2'
|
22
22
|
|
23
|
-
spec.add_dependency 'chef', '
|
23
|
+
spec.add_dependency 'chef', '> 0.10.10'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
26
26
|
spec.add_development_dependency 'rake'
|
data/lib/emeril/publisher.rb
CHANGED
data/lib/emeril/releaser.rb
CHANGED
@@ -36,8 +36,8 @@ module Emeril
|
|
36
36
|
@metadata = options.fetch(:metadata) { default_metadata }
|
37
37
|
@category = options.fetch(:category) { default_category }
|
38
38
|
@git_tagger = options.fetch(:git_tagger) { default_git_tagger }
|
39
|
-
@publisher = options.fetch(:publisher) { default_publisher }
|
40
39
|
@publish_to_community = options.fetch(:publish_to_community) { true }
|
40
|
+
set_publisher(options.fetch(:publisher, nil)) if publish_to_community
|
41
41
|
end
|
42
42
|
|
43
43
|
# Tags and releases a cookbook.
|
@@ -77,6 +77,10 @@ module Emeril
|
|
77
77
|
)
|
78
78
|
end
|
79
79
|
|
80
|
+
def set_publisher(publisher)
|
81
|
+
@publisher = publisher || default_publisher
|
82
|
+
end
|
83
|
+
|
80
84
|
def default_category
|
81
85
|
Category.for_cookbook(metadata[:name]) || "Other"
|
82
86
|
end
|
data/lib/emeril/version.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEpAIBAAKCAQEA0sOY9tHvVtLZ6xmVmH8d8LrRrNcWOXbrvvCrai+T3GtRvRSL
|
3
|
+
hksLrpOpD0L9EHM6NdThNF/eGA9Oq+UKAe6yXR0hwsKuxKXqQ8SEmlhZZ9GiuggD
|
4
|
+
B/zYD3ItB6SGpdkRe7kQqTChQyrIXqbRkJqxoTXLyeJDF0sCyTdp3L8IZCUWodM8
|
5
|
+
oV9TlQBJHYtG1gLUwIi8kcMVEoCn2Q8ltCj0/ftnwhTtwO52RkWA0uYOLGVayHsL
|
6
|
+
SCFfx+ACWPU/oWCwW5/KBqb3veTv0aEg/nh0QsFzRLoTx6SRFI5dT2Nf8iiJe4WC
|
7
|
+
UG8WKEB2G8QPnxsxfOPYDBdTJ4CXEi2e+z41VQIDAQABAoIBAALhqbW2KQ+G0nPk
|
8
|
+
ZacwFbi01SkHx8YBWjfCEpXhEKRy0ytCnKW5YO+CFU2gHNWcva7+uhV9OgwaKXkw
|
9
|
+
KHLeUJH1VADVqI4Htqw2g5mYm6BPvWnNsjzpuAp+BR+VoEGkNhj67r9hatMAQr0I
|
10
|
+
itTvSH5rvd2EumYXIHKfz1K1SegUk1u1EL1RcMzRmZe4gDb6eNBs9Sg4im4ybTG6
|
11
|
+
pPIytA8vBQVWhjuAR2Tm+wZHiy0Az6Vu7c2mS07FSX6FO4E8SxWf8idaK9ijMGSq
|
12
|
+
FvIS04mrY6XCPUPUC4qm1qNnhDPpOr7CpI2OO98SqGanStS5NFlSFXeXPpM280/u
|
13
|
+
fZUA0AECgYEA+x7QUnffDrt7LK2cX6wbvn4mRnFxet7bJjrfWIHf+Rm0URikaNma
|
14
|
+
h0/wNKpKBwIH+eHK/LslgzcplrqPytGGHLOG97Gyo5tGAzyLHUWBmsNkRksY2sPL
|
15
|
+
uHq6pYWJNkqhnWGnIbmqCr0EWih82x/y4qxbJYpYqXMrit0wVf7yAgkCgYEA1twI
|
16
|
+
gFaXqesetTPoEHSQSgC8S4D5/NkdriUXCYb06REcvo9IpFMuiOkVUYNN5d3MDNTP
|
17
|
+
IdBicfmvfNELvBtXDomEUD8ls1UuoTIXRNGZ0VsZXu7OErXCK0JKNNyqRmOwcvYL
|
18
|
+
JRqLfnlei5Ndo1lu286yL74c5rdTLs/nI2p4e+0CgYB079ZmcLeILrmfBoFI8+Y/
|
19
|
+
gJLmPrFvXBOE6+lRV7kqUFPtZ6I3yQzyccETZTDvrnx0WjaiFavUPH27WMjY01S2
|
20
|
+
TMtO0Iq1MPsbSrglO1as8MvjB9ldFcvp7gy4Q0Sv6XT0yqJ/S+vo8Df0m+H4UBpU
|
21
|
+
f5o6EwBSd/UQxwtZIE0lsQKBgQCswfjX8Eg8KL/lJNpIOOE3j4XXE9ptksmJl2sB
|
22
|
+
jxDnQYoiMqVO808saHVquC/vTrpd6tKtNpehWwjeTFuqITWLi8jmmQ+gNTKsC9Gn
|
23
|
+
1Pxf2Gb67PqnEpwQGln+TRtgQ5HBrdHiQIi+5am+gnw89pDrjjO5rZwhanAo6KPJ
|
24
|
+
1zcPNQKBgQDxFu8v4frDmRNCVaZS4f1B6wTrcMrnibIDlnzrK9GG6Hz1U7dDv8s8
|
25
|
+
Nf4UmeMzDXjlPWZVOvS5+9HKJPdPj7/onv8B2m18+lcgTTDJBkza7R1mjL1Cje/Z
|
26
|
+
KcVGsryKN6cjE7yCDasnA7R2rVBV/7NWeJV77bmzT5O//rW4yIfUIg==
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,125 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://cookbooks.opscode.com/api/v1/cookbooks/emeril
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept:
|
11
|
+
- ! '*/*'
|
12
|
+
User-Agent:
|
13
|
+
- Ruby
|
14
|
+
X-Ops-Userid: opsycodesy
|
15
|
+
response:
|
16
|
+
status:
|
17
|
+
code: 404
|
18
|
+
message: Not Found
|
19
|
+
headers:
|
20
|
+
Server:
|
21
|
+
- ngx_openresty
|
22
|
+
Date:
|
23
|
+
- Tue, 27 Aug 2013 04:18:43 GMT
|
24
|
+
Content-Type:
|
25
|
+
- text/html; charset=utf-8
|
26
|
+
Content-Length:
|
27
|
+
- '71'
|
28
|
+
Connection:
|
29
|
+
- keep-alive
|
30
|
+
Status:
|
31
|
+
- 404 Not Found
|
32
|
+
Cache-Control:
|
33
|
+
- no-cache
|
34
|
+
body:
|
35
|
+
encoding: US-ASCII
|
36
|
+
string: ! '{"error_messages":["Resource does not exist"],"error_code":"NOT_FOUND"}'
|
37
|
+
http_version:
|
38
|
+
recorded_at: Tue, 27 Aug 2013 04:18:43 GMT
|
39
|
+
- request:
|
40
|
+
method: post
|
41
|
+
uri: http://cookbooks.opscode.com/api/v1/cookbooks
|
42
|
+
body:
|
43
|
+
encoding: ASCII-8BIT
|
44
|
+
string: !binary |-
|
45
|
+
LS0tLS0tUnVieU11bHRpcGFydENsaWVudDY5NDgxNlpaWlpaDQpDb250ZW50
|
46
|
+
LURpc3Bvc2l0aW9uOiBmb3JtLWRhdGE7IG5hbWU9InRhcmJhbGwiOyBmaWxl
|
47
|
+
bmFtZT0iZW1lcmlsLnRneiINCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24v
|
48
|
+
b2N0ZXQtc3RyZWFtDQoNCh+LCACjKBxSAAPtl1FvmzAQx/PMp/DY60SAAJH2
|
49
|
+
tE7tY1+mvVcGDvAGNrJNp2rqd58pjkbcRlE1yFT1flLk4DvZZx//w4YOJGu3
|
50
|
+
mzUJw3CfpuSpzabWcGinhyiOw30YJ3GyI2G0i8L9hqSrRmUZlKbShFJxVjSi
|
51
|
+
Pen3qwE4bd04iyKLx7kSMOW/A01LqmnwQwm+9BxmP7IkOZ1/k3cn/2maRRsS
|
52
|
+
Lh3IS7zz/P/2CPE57cD/TPzpZfA/jX0lqEKyXjPBR9O1YLwmSg9V9WFyaAWv
|
53
|
+
7856dZRxbX4gR/ut2WMKLfnaDrpxHe7A/G9Ht25y+5KPbkEhOjsjK4Crp0iv
|
54
|
+
elo0QOIgnEx9S3UlZKeMcVzSo11DD7wEXjA4Nkgwg3bGRsfIj21qqGtQz/sL
|
55
|
+
wSsTgTYrPOrvpbhnpdsrwYRUuL1Ua8nyQTvh1FIMvfF9FiTrHc97kMrudRJE
|
56
|
+
QeR7j/+Wf1f/Ml/mvZpzTv+7eO/qP44y1P8lGKVP5hyKgPdXmAfLsXo9V7kv
|
57
|
+
6dazmp2NP5OuNysf1npUQTy3xrh2K4fZ6FYV/3tb3wxW/99urq5vb4KuXGOO
|
58
|
+
c/o3BcDRf7LD7/9l+Ei+GzHmQJUmoiL68KBQQu8Cq3971ljnHvj6+1+SJhHe
|
59
|
+
/y6Bk/8SKjq0etlj4Nn6n2RO/rM0irH+X4KSmdRrIR+Iv9Vdv30Aao52njmj
|
60
|
+
/aQ1ED+nqsHjFIIgCIIgCIIgCIIgCIIgyNvjDyUZemYAKAAADQotLS0tLS1S
|
61
|
+
dWJ5TXVsdGlwYXJ0Q2xpZW50Njk0ODE2WlpaWloNCkNvbnRlbnQtRGlzcG9z
|
62
|
+
aXRpb246IGZvcm0tZGF0YTsgbmFtZT0iY29va2Jvb2siDQoNCnsiY2F0ZWdv
|
63
|
+
cnkiOiJPdGhlciJ9DQotLS0tLS1SdWJ5TXVsdGlwYXJ0Q2xpZW50Njk0ODE2
|
64
|
+
WlpaWlotLQ0K
|
65
|
+
headers:
|
66
|
+
Accept:
|
67
|
+
- application/json
|
68
|
+
X-Chef-Version:
|
69
|
+
- 11.4.4
|
70
|
+
X-Ops-Sign:
|
71
|
+
- algorithm=sha1;version=1.0;
|
72
|
+
X-Ops-Userid: opsycodesy
|
73
|
+
X-Ops-Timestamp:
|
74
|
+
- '2013-08-27T04:18:43Z'
|
75
|
+
X-Ops-Content-Hash:
|
76
|
+
- ! '{{X-Ops-Content-Hash}}'
|
77
|
+
X-Ops-Authorization-1:
|
78
|
+
- ! '{{X-Ops-Authorization-1}}'
|
79
|
+
X-Ops-Authorization-2:
|
80
|
+
- ! '{{X-Ops-Authorization-2}}'
|
81
|
+
X-Ops-Authorization-3:
|
82
|
+
- ! '{{X-Ops-Authorization-3}}'
|
83
|
+
X-Ops-Authorization-4:
|
84
|
+
- ! '{{X-Ops-Authorization-4}}'
|
85
|
+
X-Ops-Authorization-5:
|
86
|
+
- ! '{{X-Ops-Authorization-5}}'
|
87
|
+
X-Ops-Authorization-6:
|
88
|
+
- ! '{{X-Ops-Authorization-6}}'
|
89
|
+
User-Agent:
|
90
|
+
- Ruby
|
91
|
+
Content-Length:
|
92
|
+
- '864'
|
93
|
+
Content-Type:
|
94
|
+
- multipart/form-data; boundary=----RubyMultipartClient694816ZZZZZ
|
95
|
+
response:
|
96
|
+
status:
|
97
|
+
code: 201
|
98
|
+
message: Created
|
99
|
+
headers:
|
100
|
+
Server:
|
101
|
+
- ngx_openresty
|
102
|
+
Date:
|
103
|
+
- Tue, 27 Aug 2013 04:18:45 GMT
|
104
|
+
Content-Type:
|
105
|
+
- application/json; charset=utf-8
|
106
|
+
Content-Length:
|
107
|
+
- '55'
|
108
|
+
Connection:
|
109
|
+
- keep-alive
|
110
|
+
Status:
|
111
|
+
- 201 Created
|
112
|
+
Location:
|
113
|
+
- http://cookbooks.opscode.com/cookbooks/emeril
|
114
|
+
Cache-Control:
|
115
|
+
- no-cache
|
116
|
+
Set-Cookie:
|
117
|
+
- logged-in-username=fnichol; domain=.opscode.com; path=/
|
118
|
+
X-Runtime:
|
119
|
+
- '2344'
|
120
|
+
body:
|
121
|
+
encoding: US-ASCII
|
122
|
+
string: ! '{"uri":"http://cookbooks.opscode.com/cookbooks/emeril"}'
|
123
|
+
http_version:
|
124
|
+
recorded_at: Tue, 27 Aug 2013 04:18:45 GMT
|
125
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require_relative '../spec_helper'
|
4
|
+
require 'vcr'
|
5
|
+
|
6
|
+
require 'chef/knife'
|
7
|
+
require 'emeril'
|
8
|
+
|
9
|
+
VCR.configure do |config|
|
10
|
+
config.cassette_library_dir = "spec/fixtures/vcr_cassettes"
|
11
|
+
config.hook_into :webmock
|
12
|
+
|
13
|
+
# remove sensitive authentication information from the recording
|
14
|
+
config.before_record do |interaction|
|
15
|
+
headers = interaction.request.headers
|
16
|
+
headers.keys.
|
17
|
+
select { |k| k =~ /^X-Ops-(Authorization-|Content-Hash)/ }.
|
18
|
+
each { |header| headers[header] = Array("{{#{header}}}") }
|
19
|
+
headers["X-Ops-Userid"] = "opsycodesy"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "Releasing and publishing a cookbook" do
|
24
|
+
|
25
|
+
include Emeril::SpecCommon
|
26
|
+
|
27
|
+
before do
|
28
|
+
@saved = Hash.new
|
29
|
+
%w{node_name client_key}.map(&:to_sym).each do |attr|
|
30
|
+
@saved[attr] = Chef::Config[attr]
|
31
|
+
end
|
32
|
+
|
33
|
+
Chef::Config[:node_name] = ENV["CHEF_NODE_NAME"] || "opsycodesy"
|
34
|
+
Chef::Config[:client_key] = ENV["CHEF_CLIENT_KEY"] || make_client_key!
|
35
|
+
end
|
36
|
+
|
37
|
+
after do
|
38
|
+
%w{node_name client_key}.map(&:to_sym).each do |attr|
|
39
|
+
Chef::Config[attr] = @saved.delete(attr)
|
40
|
+
end
|
41
|
+
|
42
|
+
FileUtils.remove_dir(cookbook_path)
|
43
|
+
end
|
44
|
+
|
45
|
+
let(:cookbook_path) { File.join(Dir.mktmpdir, "emeril")}
|
46
|
+
|
47
|
+
let(:logger) do
|
48
|
+
if ENV["DEBUG"]
|
49
|
+
Chef::Log.level = Logger::DEBUG
|
50
|
+
l = Logger.new(STDOUT)
|
51
|
+
l.level = Logger::DEBUG
|
52
|
+
l
|
53
|
+
else
|
54
|
+
Logger.new(StringIO.new)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
it "releases a new cookbook" do
|
59
|
+
make_cookbook!(version: "1.2.3")
|
60
|
+
|
61
|
+
VCR.use_cassette('new_release') do
|
62
|
+
Emeril::Releaser.new(logger: logger, source_path: cookbook_path).run
|
63
|
+
end
|
64
|
+
|
65
|
+
# tag was pushed to the remote
|
66
|
+
git_tag = run_cmd("git tag", in: "#{File.dirname(cookbook_path)}/remote")
|
67
|
+
git_tag.chomp.must_equal "v1.2.3"
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require_relative '../spec_helper'
|
4
|
+
require 'vcr'
|
5
|
+
|
6
|
+
require 'chef/knife'
|
7
|
+
require 'emeril'
|
8
|
+
|
9
|
+
describe "Releasing and but not publishing a cookbook" do
|
10
|
+
|
11
|
+
include Emeril::SpecCommon
|
12
|
+
|
13
|
+
let(:cookbook_path) { File.join(Dir.mktmpdir, "emeril")}
|
14
|
+
|
15
|
+
let(:logger) do
|
16
|
+
if ENV["DEBUG"]
|
17
|
+
Chef::Log.level = Logger::DEBUG
|
18
|
+
l = Logger.new(STDOUT)
|
19
|
+
l.level = Logger::DEBUG
|
20
|
+
l
|
21
|
+
else
|
22
|
+
Logger.new(StringIO.new)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it "releases a new cookbook" do
|
27
|
+
make_cookbook!(version: "4.5.6")
|
28
|
+
|
29
|
+
VCR.use_cassette('new_release') do
|
30
|
+
Emeril::Releaser.new(
|
31
|
+
logger: logger, source_path: cookbook_path, publish_to_community: false
|
32
|
+
).run
|
33
|
+
end
|
34
|
+
|
35
|
+
# tag was pushed to the remote
|
36
|
+
git_tag = run_cmd("git tag", in: "#{File.dirname(cookbook_path)}/remote")
|
37
|
+
git_tag.chomp.must_equal "v4.5.6"
|
38
|
+
end
|
39
|
+
|
40
|
+
it "releases a new cookbook with a custom git tag prefix" do
|
41
|
+
make_cookbook!(version: "1.0.0")
|
42
|
+
|
43
|
+
VCR.use_cassette('new_release') do
|
44
|
+
Emeril::Releaser.new(
|
45
|
+
logger: logger, source_path: cookbook_path, publish_to_community: false,
|
46
|
+
tag_prefix: "release-"
|
47
|
+
).run
|
48
|
+
end
|
49
|
+
|
50
|
+
# tag was pushed to the remote
|
51
|
+
git_tag = run_cmd("git tag", in: "#{File.dirname(cookbook_path)}/remote")
|
52
|
+
git_tag.chomp.must_equal "release-1.0.0"
|
53
|
+
end
|
54
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -25,3 +25,72 @@ class IO
|
|
25
25
|
File.open(args[0], "rb") { |f| f.read(args[1]) }
|
26
26
|
end
|
27
27
|
end
|
28
|
+
|
29
|
+
require 'chef'
|
30
|
+
require 'chef/cookbook_site_streaming_uploader'
|
31
|
+
class Chef
|
32
|
+
class CookbookSiteStreamingUploader
|
33
|
+
class MultipartStream
|
34
|
+
alias_method :read_original, :read
|
35
|
+
|
36
|
+
def read(how_much = nil)
|
37
|
+
read_original(how_much || size)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
module Emeril
|
44
|
+
|
45
|
+
module SpecCommon
|
46
|
+
|
47
|
+
def make_cookbook!(opts = {})
|
48
|
+
FileUtils.mkdir_p("#{cookbook_path}/recipes")
|
49
|
+
remote_dir = File.join(File.dirname(cookbook_path), "remote")
|
50
|
+
|
51
|
+
File.open("#{cookbook_path}/metadata.rb", "wb") do |f|
|
52
|
+
f.write <<-METADATA_RB.gsub(/^ {10}/, '')
|
53
|
+
name "#{opts.fetch(:name, "emeril")}"
|
54
|
+
maintainer "Michael Bluth"
|
55
|
+
maintainer_email "michael@bluth.com"
|
56
|
+
license "Apache 2.0"
|
57
|
+
description "Doing stuff!"
|
58
|
+
long_description "Doing stuff!"
|
59
|
+
version "#{opts.fetch(:version, "4.1.1")}"
|
60
|
+
METADATA_RB
|
61
|
+
end
|
62
|
+
File.open("#{cookbook_path}/recipes/default.rb", "wb") do |f|
|
63
|
+
f.write <<-DEFAULT_RB.gsub(/^ {10}/, '')
|
64
|
+
directory "/tmp/yeah"
|
65
|
+
|
66
|
+
package "bash"
|
67
|
+
DEFAULT_RB
|
68
|
+
end
|
69
|
+
File.open("#{cookbook_path}/README.md", "wb") do |f|
|
70
|
+
f.write <<-README.gsub(/^ {10}/, '')
|
71
|
+
# The beast of the beasts
|
72
|
+
README
|
73
|
+
end
|
74
|
+
|
75
|
+
run_cmd [
|
76
|
+
%{git init},
|
77
|
+
%{git config user.email "you@example.com"},
|
78
|
+
%{git config user.name "Your Name"},
|
79
|
+
%{git add .},
|
80
|
+
%{git commit -m "Initial"},
|
81
|
+
%{git remote add origin #{remote_dir}},
|
82
|
+
%{git init --bare #{remote_dir}}
|
83
|
+
].join(" && ")
|
84
|
+
end
|
85
|
+
|
86
|
+
def make_client_key!
|
87
|
+
file = "#{File.dirname(cookbook_path)}/client_key.pem"
|
88
|
+
FileUtils.cp("#{File.dirname(__FILE__)}/fixtures/client_key.pem", file)
|
89
|
+
file
|
90
|
+
end
|
91
|
+
|
92
|
+
def run_cmd(cmd, opts = {})
|
93
|
+
%x{cd #{opts.fetch(:in, cookbook_path)} && #{cmd}}
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
require_relative '
|
3
|
+
require_relative '../../spec_helper'
|
4
4
|
require 'tmpdir'
|
5
5
|
require 'logger'
|
6
6
|
|
@@ -8,11 +8,13 @@ require 'emeril/git_tagger'
|
|
8
8
|
|
9
9
|
describe Emeril::GitTagger do
|
10
10
|
|
11
|
-
|
11
|
+
include Emeril::SpecCommon
|
12
|
+
|
13
|
+
let(:cookbook_path) { File.join(Dir.mktmpdir, "emeril") }
|
12
14
|
|
13
15
|
let(:git_tagger) do
|
14
16
|
Emeril::GitTagger.new(
|
15
|
-
:source_path =>
|
17
|
+
:source_path => cookbook_path,
|
16
18
|
:version => "4.1.1",
|
17
19
|
:logger => nil
|
18
20
|
)
|
@@ -32,7 +34,7 @@ describe Emeril::GitTagger do
|
|
32
34
|
end
|
33
35
|
|
34
36
|
after do
|
35
|
-
FileUtils.remove_dir(
|
37
|
+
FileUtils.remove_dir(cookbook_path)
|
36
38
|
end
|
37
39
|
|
38
40
|
it "tags the repo" do
|
@@ -42,7 +44,7 @@ describe Emeril::GitTagger do
|
|
42
44
|
|
43
45
|
it "disables the tag prefix" do
|
44
46
|
Emeril::GitTagger.new(
|
45
|
-
:source_path =>
|
47
|
+
:source_path => cookbook_path,
|
46
48
|
:version => "4.1.1",
|
47
49
|
:logger => nil,
|
48
50
|
:tag_prefix => false
|
@@ -53,7 +55,7 @@ describe Emeril::GitTagger do
|
|
53
55
|
|
54
56
|
it "uses a custom tag prefix" do
|
55
57
|
Emeril::GitTagger.new(
|
56
|
-
:source_path =>
|
58
|
+
:source_path => cookbook_path,
|
57
59
|
:version => "4.1.1",
|
58
60
|
:logger => nil,
|
59
61
|
:tag_prefix => "version-"
|
@@ -72,7 +74,7 @@ describe Emeril::GitTagger do
|
|
72
74
|
describe "when git repo is not clean" do
|
73
75
|
|
74
76
|
before do
|
75
|
-
File.open("#{
|
77
|
+
File.open("#{cookbook_path}/README.md", "wb") { |f| f.write "Yep." }
|
76
78
|
end
|
77
79
|
|
78
80
|
it "raises GitNotCleanError" do
|
@@ -104,44 +106,4 @@ describe Emeril::GitTagger do
|
|
104
106
|
end
|
105
107
|
end
|
106
108
|
end
|
107
|
-
|
108
|
-
private
|
109
|
-
|
110
|
-
def make_cookbook!
|
111
|
-
FileUtils.mkdir_p("#{sandbox_path}/recipes")
|
112
|
-
remote_dir = File.join(File.dirname(sandbox_path), "remote")
|
113
|
-
|
114
|
-
File.open("#{sandbox_path}/metadata.rb", "wb") do |f|
|
115
|
-
f.write <<-METADATA_RB.gsub(/^ {8}/, '')
|
116
|
-
name "#{name}"
|
117
|
-
maintainer "Michael Bluth"
|
118
|
-
maintainer_email "michael@bluth.com"
|
119
|
-
license "Apache 2.0"
|
120
|
-
description "Doing stuff!"
|
121
|
-
long_description "Doing stuff!"
|
122
|
-
version "4.1.1"
|
123
|
-
METADATA_RB
|
124
|
-
end
|
125
|
-
File.open("#{sandbox_path}/recipes/default.rb", "wb") do |f|
|
126
|
-
f.write <<-DEFAULT_RB.gsub(/^ {8}/, '')
|
127
|
-
directory "/tmp/yeah"
|
128
|
-
|
129
|
-
package "bash"
|
130
|
-
DEFAULT_RB
|
131
|
-
end
|
132
|
-
|
133
|
-
run_cmd [
|
134
|
-
%{git init},
|
135
|
-
%{git config user.email "you@example.com"},
|
136
|
-
%{git config user.name "Your Name"},
|
137
|
-
%{git add .},
|
138
|
-
%{git commit -m "Initial"},
|
139
|
-
%{git remote add origin #{remote_dir}},
|
140
|
-
%{git init --bare #{remote_dir}}
|
141
|
-
].join(" && ")
|
142
|
-
end
|
143
|
-
|
144
|
-
def run_cmd(cmd, opts = {})
|
145
|
-
%x{cd #{opts.fetch(:in, sandbox_path)} && #{cmd}}
|
146
|
-
end
|
147
109
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
-
require_relative '
|
3
|
+
require_relative '../../spec_helper'
|
4
4
|
|
5
5
|
require 'emeril/releaser'
|
6
6
|
|
@@ -98,6 +98,17 @@ describe Emeril::Releaser do
|
|
98
98
|
)
|
99
99
|
end
|
100
100
|
|
101
|
+
it "does not call Publisher when disabling community site publishing" do
|
102
|
+
Emeril::Publisher.expects(:new).never
|
103
|
+
|
104
|
+
Emeril::Releaser.new(
|
105
|
+
:source_path => source_path,
|
106
|
+
:metadata => metadata,
|
107
|
+
:category => category,
|
108
|
+
:publish_to_community => false
|
109
|
+
)
|
110
|
+
end
|
111
|
+
|
101
112
|
it "disables the git version tag prefix" do
|
102
113
|
Emeril::GitTagger.expects(:new).with do |opts|
|
103
114
|
opts[:tag_prefix] == false
|
metadata
CHANGED
@@ -1,36 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emeril
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.7.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Fletcher Nichol
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-08-27 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: chef
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>'
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 0.10.10
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>'
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 0.10.10
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: bundler
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,193 +41,169 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: minitest
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: guard-minitest
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: mocha
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: fakefs
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: vcr
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - '>='
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: '0'
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - '>='
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '0'
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: webmock
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
|
-
- -
|
129
|
+
- - '>='
|
148
130
|
- !ruby/object:Gem::Version
|
149
131
|
version: '0'
|
150
132
|
type: :development
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
|
-
- -
|
136
|
+
- - '>='
|
156
137
|
- !ruby/object:Gem::Version
|
157
138
|
version: '0'
|
158
139
|
- !ruby/object:Gem::Dependency
|
159
140
|
name: cane
|
160
141
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
142
|
requirements:
|
163
|
-
- -
|
143
|
+
- - '>='
|
164
144
|
- !ruby/object:Gem::Version
|
165
145
|
version: '0'
|
166
146
|
type: :development
|
167
147
|
prerelease: false
|
168
148
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
149
|
requirements:
|
171
|
-
- -
|
150
|
+
- - '>='
|
172
151
|
- !ruby/object:Gem::Version
|
173
152
|
version: '0'
|
174
153
|
- !ruby/object:Gem::Dependency
|
175
154
|
name: guard-cane
|
176
155
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
156
|
requirements:
|
179
|
-
- -
|
157
|
+
- - '>='
|
180
158
|
- !ruby/object:Gem::Version
|
181
159
|
version: '0'
|
182
160
|
type: :development
|
183
161
|
prerelease: false
|
184
162
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
163
|
requirements:
|
187
|
-
- -
|
164
|
+
- - '>='
|
188
165
|
- !ruby/object:Gem::Version
|
189
166
|
version: '0'
|
190
167
|
- !ruby/object:Gem::Dependency
|
191
168
|
name: tailor
|
192
169
|
requirement: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
170
|
requirements:
|
195
|
-
- -
|
171
|
+
- - '>='
|
196
172
|
- !ruby/object:Gem::Version
|
197
173
|
version: '0'
|
198
174
|
type: :development
|
199
175
|
prerelease: false
|
200
176
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
177
|
requirements:
|
203
|
-
- -
|
178
|
+
- - '>='
|
204
179
|
- !ruby/object:Gem::Version
|
205
180
|
version: '0'
|
206
181
|
- !ruby/object:Gem::Dependency
|
207
182
|
name: simplecov
|
208
183
|
requirement: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
184
|
requirements:
|
211
|
-
- -
|
185
|
+
- - '>='
|
212
186
|
- !ruby/object:Gem::Version
|
213
187
|
version: '0'
|
214
188
|
type: :development
|
215
189
|
prerelease: false
|
216
190
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
191
|
requirements:
|
219
|
-
- -
|
192
|
+
- - '>='
|
220
193
|
- !ruby/object:Gem::Version
|
221
194
|
version: '0'
|
222
195
|
- !ruby/object:Gem::Dependency
|
223
196
|
name: countloc
|
224
197
|
requirement: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
198
|
requirements:
|
227
|
-
- -
|
199
|
+
- - '>='
|
228
200
|
- !ruby/object:Gem::Version
|
229
201
|
version: '0'
|
230
202
|
type: :development
|
231
203
|
prerelease: false
|
232
204
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
none: false
|
234
205
|
requirements:
|
235
|
-
- -
|
206
|
+
- - '>='
|
236
207
|
- !ruby/object:Gem::Version
|
237
208
|
version: '0'
|
238
209
|
description: Release Chef cookbooks
|
@@ -266,45 +237,52 @@ files:
|
|
266
237
|
- lib/emeril/thor.rb
|
267
238
|
- lib/emeril/thor_tasks.rb
|
268
239
|
- lib/emeril/version.rb
|
269
|
-
- spec/
|
270
|
-
- spec/emeril/git_tagger_spec.rb
|
271
|
-
- spec/emeril/metadata_chopper_spec.rb
|
272
|
-
- spec/emeril/publisher_spec.rb
|
273
|
-
- spec/emeril/releaser_spec.rb
|
240
|
+
- spec/fixtures/client_key.pem
|
274
241
|
- spec/fixtures/vcr_cassettes/known_cookbook.yml
|
242
|
+
- spec/fixtures/vcr_cassettes/new_release.yml
|
275
243
|
- spec/fixtures/vcr_cassettes/nonexistant_cookbook.yml
|
244
|
+
- spec/integration/new_release_spec.rb
|
245
|
+
- spec/integration/skip_publish_spec.rb
|
276
246
|
- spec/spec_helper.rb
|
247
|
+
- spec/unit/emeril/category_spec.rb
|
248
|
+
- spec/unit/emeril/git_tagger_spec.rb
|
249
|
+
- spec/unit/emeril/metadata_chopper_spec.rb
|
250
|
+
- spec/unit/emeril/publisher_spec.rb
|
251
|
+
- spec/unit/emeril/releaser_spec.rb
|
277
252
|
homepage: https://github.com/fnichol/emeril
|
278
253
|
licenses:
|
279
254
|
- MIT
|
255
|
+
metadata: {}
|
280
256
|
post_install_message:
|
281
257
|
rdoc_options: []
|
282
258
|
require_paths:
|
283
259
|
- lib
|
284
260
|
required_ruby_version: !ruby/object:Gem::Requirement
|
285
|
-
none: false
|
286
261
|
requirements:
|
287
|
-
- -
|
262
|
+
- - '>='
|
288
263
|
- !ruby/object:Gem::Version
|
289
264
|
version: 1.9.2
|
290
265
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
291
|
-
none: false
|
292
266
|
requirements:
|
293
|
-
- -
|
267
|
+
- - '>='
|
294
268
|
- !ruby/object:Gem::Version
|
295
269
|
version: '0'
|
296
270
|
requirements: []
|
297
271
|
rubyforge_project:
|
298
|
-
rubygems_version:
|
272
|
+
rubygems_version: 2.0.3
|
299
273
|
signing_key:
|
300
|
-
specification_version:
|
274
|
+
specification_version: 4
|
301
275
|
summary: Release Chef cookbooks
|
302
276
|
test_files:
|
303
|
-
- spec/
|
304
|
-
- spec/emeril/git_tagger_spec.rb
|
305
|
-
- spec/emeril/metadata_chopper_spec.rb
|
306
|
-
- spec/emeril/publisher_spec.rb
|
307
|
-
- spec/emeril/releaser_spec.rb
|
277
|
+
- spec/fixtures/client_key.pem
|
308
278
|
- spec/fixtures/vcr_cassettes/known_cookbook.yml
|
279
|
+
- spec/fixtures/vcr_cassettes/new_release.yml
|
309
280
|
- spec/fixtures/vcr_cassettes/nonexistant_cookbook.yml
|
281
|
+
- spec/integration/new_release_spec.rb
|
282
|
+
- spec/integration/skip_publish_spec.rb
|
310
283
|
- spec/spec_helper.rb
|
284
|
+
- spec/unit/emeril/category_spec.rb
|
285
|
+
- spec/unit/emeril/git_tagger_spec.rb
|
286
|
+
- spec/unit/emeril/metadata_chopper_spec.rb
|
287
|
+
- spec/unit/emeril/publisher_spec.rb
|
288
|
+
- spec/unit/emeril/releaser_spec.rb
|