dpl 1.8.48.travis.2486.5 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -0
  3. data/.travis.yml +42 -21
  4. data/Gemfile +3 -98
  5. data/README.md +5 -16
  6. data/Rakefile +160 -1
  7. data/dpl-anynines.gemspec +3 -0
  8. data/dpl-atlas.gemspec +3 -0
  9. data/dpl-azure_webapps.gemspec +3 -0
  10. data/dpl-bintray.gemspec +3 -0
  11. data/dpl-bitballoon.gemspec +3 -0
  12. data/dpl-bluemix_cloud_foundry.gemspec +3 -0
  13. data/dpl-boxfuse.gemspec +3 -0
  14. data/dpl-catalyze.gemspec +3 -0
  15. data/dpl-chef_supermarket.gemspec +8 -0
  16. data/dpl-cloud66.gemspec +3 -0
  17. data/dpl-cloud_files.gemspec +3 -0
  18. data/dpl-cloud_foundry.gemspec +3 -0
  19. data/dpl-code_deploy.gemspec +3 -0
  20. data/dpl-deis.gemspec +3 -0
  21. data/dpl-divshot.gemspec +3 -0
  22. data/dpl-elastic_beanstalk.gemspec +3 -0
  23. data/dpl-engine_yard.gemspec +3 -0
  24. data/dpl-firebase.gemspec +3 -0
  25. data/dpl-gae.gemspec +3 -0
  26. data/dpl-gcs.gemspec +3 -0
  27. data/dpl-hackage.gemspec +3 -0
  28. data/dpl-heroku.gemspec +3 -0
  29. data/dpl-lambda.gemspec +3 -0
  30. data/dpl-launchpad.gemspec +3 -0
  31. data/dpl-modulus.gemspec +3 -0
  32. data/dpl-npm.gemspec +3 -0
  33. data/dpl-openshift.gemspec +3 -0
  34. data/dpl-ops_works.gemspec +3 -0
  35. data/dpl-packagecloud.gemspec +3 -0
  36. data/dpl-pages.gemspec +3 -0
  37. data/dpl-puppet_forge.gemspec +3 -0
  38. data/dpl-pypi.gemspec +3 -0
  39. data/dpl-releases.gemspec +3 -0
  40. data/dpl-rubygems.gemspec +3 -0
  41. data/dpl-s3.gemspec +3 -0
  42. data/dpl-scalingo.gemspec +3 -0
  43. data/dpl-script.gemspec +3 -0
  44. data/dpl-surge.gemspec +3 -0
  45. data/dpl-testfairy.gemspec +3 -0
  46. data/dpl-transifex.gemspec +3 -0
  47. data/dpl.gemspec +2 -31
  48. data/gemspec_helper.rb +49 -0
  49. data/lib/dpl/provider.rb +101 -58
  50. data/lib/dpl/version.rb +1 -1
  51. data/spec/provider_spec.rb +15 -34
  52. metadata +76 -107
  53. data/lib/dpl/provider/anynines.rb +0 -13
  54. data/lib/dpl/provider/appfog.rb +0 -21
  55. data/lib/dpl/provider/atlas.rb +0 -108
  56. data/lib/dpl/provider/azure_webapps.rb +0 -48
  57. data/lib/dpl/provider/bintray.rb +0 -509
  58. data/lib/dpl/provider/bitballoon.rb +0 -22
  59. data/lib/dpl/provider/bluemix_cloud_foundry.rb +0 -23
  60. data/lib/dpl/provider/boxfuse.rb +0 -57
  61. data/lib/dpl/provider/catalyze.rb +0 -49
  62. data/lib/dpl/provider/chef_supermarket.rb +0 -85
  63. data/lib/dpl/provider/cloud66.rb +0 -38
  64. data/lib/dpl/provider/cloud_files.rb +0 -38
  65. data/lib/dpl/provider/cloud_foundry.rb +0 -43
  66. data/lib/dpl/provider/code_deploy.rb +0 -154
  67. data/lib/dpl/provider/deis.rb +0 -128
  68. data/lib/dpl/provider/divshot.rb +0 -23
  69. data/lib/dpl/provider/elastic_beanstalk.rb +0 -195
  70. data/lib/dpl/provider/engine_yard.rb +0 -90
  71. data/lib/dpl/provider/firebase.rb +0 -27
  72. data/lib/dpl/provider/gae.rb +0 -97
  73. data/lib/dpl/provider/gcs.rb +0 -59
  74. data/lib/dpl/provider/hackage.rb +0 -29
  75. data/lib/dpl/provider/heroku.rb +0 -18
  76. data/lib/dpl/provider/heroku/api.rb +0 -98
  77. data/lib/dpl/provider/heroku/generic.rb +0 -94
  78. data/lib/dpl/provider/heroku/git.rb +0 -28
  79. data/lib/dpl/provider/lambda.rb +0 -236
  80. data/lib/dpl/provider/launchpad.rb +0 -48
  81. data/lib/dpl/provider/modulus.rb +0 -23
  82. data/lib/dpl/provider/npm.rb +0 -64
  83. data/lib/dpl/provider/openshift.rb +0 -59
  84. data/lib/dpl/provider/ops_works.rb +0 -132
  85. data/lib/dpl/provider/packagecloud.rb +0 -144
  86. data/lib/dpl/provider/pages.rb +0 -212
  87. data/lib/dpl/provider/puppet_forge.rb +0 -43
  88. data/lib/dpl/provider/pypi.rb +0 -103
  89. data/lib/dpl/provider/releases.rb +0 -139
  90. data/lib/dpl/provider/rubygems.rb +0 -51
  91. data/lib/dpl/provider/s3.rb +0 -123
  92. data/lib/dpl/provider/scalingo.rb +0 -97
  93. data/lib/dpl/provider/script.rb +0 -29
  94. data/lib/dpl/provider/surge.rb +0 -33
  95. data/lib/dpl/provider/testfairy.rb +0 -111
  96. data/lib/dpl/provider/transifex.rb +0 -45
  97. data/spec/provider/anynines_spec.rb +0 -20
  98. data/spec/provider/appfog_spec.rb +0 -35
  99. data/spec/provider/atlas_spec.rb +0 -99
  100. data/spec/provider/azure_webapps_spec.rb +0 -95
  101. data/spec/provider/bintray_spec.rb +0 -259
  102. data/spec/provider/bitballoon_spec.rb +0 -32
  103. data/spec/provider/bluemixcloudfoundry_spec.rb +0 -23
  104. data/spec/provider/boxfuse_spec.rb +0 -16
  105. data/spec/provider/catalyze_spec.rb +0 -39
  106. data/spec/provider/chef_supermarket_spec.rb +0 -51
  107. data/spec/provider/cloud66_spec.rb +0 -44
  108. data/spec/provider/cloud_files_spec.rb +0 -88
  109. data/spec/provider/cloudfoundry_spec.rb +0 -71
  110. data/spec/provider/code_deploy_spec.rb +0 -366
  111. data/spec/provider/deis_spec.rb +0 -116
  112. data/spec/provider/divshot_spec.rb +0 -28
  113. data/spec/provider/elastic_beanstalk_spec.rb +0 -209
  114. data/spec/provider/firebase_spec.rb +0 -40
  115. data/spec/provider/gae_spec.rb +0 -26
  116. data/spec/provider/gcs_spec.rb +0 -115
  117. data/spec/provider/hackage_spec.rb +0 -47
  118. data/spec/provider/heroku_spec.rb +0 -357
  119. data/spec/provider/lambda_spec.rb +0 -432
  120. data/spec/provider/launchpad_spec.rb +0 -33
  121. data/spec/provider/modulus_spec.rb +0 -29
  122. data/spec/provider/npm_spec.rb +0 -95
  123. data/spec/provider/openshift_spec.rb +0 -91
  124. data/spec/provider/ops_works_spec.rb +0 -127
  125. data/spec/provider/packagecloud_spec.rb +0 -56
  126. data/spec/provider/puppet_forge_spec.rb +0 -60
  127. data/spec/provider/pypi_spec.rb +0 -105
  128. data/spec/provider/releases_spec.rb +0 -303
  129. data/spec/provider/rubygems_spec.rb +0 -106
  130. data/spec/provider/s3_spec.rb +0 -174
  131. data/spec/provider/scalingo_spec.rb +0 -64
  132. data/spec/provider/script_spec.rb +0 -26
  133. data/spec/provider/surge_spec.rb +0 -15
  134. data/spec/provider/testfairy_spec.rb +0 -65
  135. data/spec/provider/transifex_spec.rb +0 -110
@@ -1,105 +0,0 @@
1
- require 'spec_helper'
2
- require 'dpl/provider/pypi'
3
-
4
- describe DPL::Provider::PyPI do
5
- subject :provider do
6
- described_class.new(DummyContext.new, :user => 'foo', :password => 'bar')
7
- end
8
-
9
- describe "#install_deploy_dependencies" do
10
- example do
11
- expect(provider.context).to receive(:shell).with(
12
- "wget -O - https://bootstrap.pypa.io/get-pip.py | python - --no-setuptools --no-wheel && pip install --upgrade setuptools twine wheel"
13
- ).and_return(true)
14
- provider.install_deploy_dependencies
15
- end
16
- end
17
-
18
- describe "#config" do
19
- it 'accepts a user and a password' do
20
- expect(provider.config[:servers]['pypi']).to include 'username: foo'
21
- expect(provider.config[:servers]['pypi']).to include 'password: bar'
22
- end
23
- end
24
-
25
- describe "#check_auth" do
26
- example do
27
- expect(provider).to receive(:log).with("Authenticated as foo")
28
- provider.check_auth
29
- end
30
- end
31
-
32
- describe "#push_app" do
33
- example "default" do
34
- expect(provider.context).to receive(:shell).with("python setup.py sdist").and_return(true)
35
- expect(provider.context).to receive(:shell).with("twine upload -r pypi dist/*").and_return(true)
36
- expect(provider.context).to receive(:shell).with("rm -rf dist/*").and_return(true)
37
- expect(provider.context).not_to receive(:shell).with("python setup.py upload_docs -r https://upload.pypi.org/legacy/")
38
- provider.push_app
39
- end
40
-
41
- example "with :distributions option" do
42
- provider.options.update(:distributions => 'sdist bdist')
43
- expect(provider.context).to receive(:shell).with("python setup.py sdist bdist").and_return(true)
44
- expect(provider.context).to receive(:shell).with("twine upload -r pypi dist/*").and_return(true)
45
- expect(provider.context).to receive(:shell).with("rm -rf dist/*").and_return(true)
46
- expect(provider.context).not_to receive(:shell).with("python setup.py upload_docs -r https://upload.pypi.org/legacy/")
47
- provider.push_app
48
- end
49
-
50
- example "with :server option" do
51
- provider.options.update(:server => 'http://blah.com')
52
- expect(provider.context).to receive(:shell).with("python setup.py sdist").and_return(true)
53
- expect(provider.context).to receive(:shell).with("twine upload -r pypi dist/*").and_return(true)
54
- expect(provider.context).to receive(:shell).with("rm -rf dist/*").and_return(true)
55
- expect(provider.context).not_to receive(:shell).with("python setup.py upload_docs -r http://blah.com")
56
- provider.push_app
57
- end
58
-
59
- example "with :skip_upload_docs option" do
60
- provider.options.update(:skip_upload_docs => true)
61
- expect(provider.context).to receive(:shell).with("python setup.py sdist").and_return(true)
62
- expect(provider.context).to receive(:shell).with("twine upload -r pypi dist/*").and_return(true)
63
- expect(provider.context).to receive(:shell).with("rm -rf dist/*").and_return(true)
64
- expect(provider.context).not_to receive(:shell).with("python setup.py upload_docs -r https://upload.pypi.org/legacy/")
65
- provider.push_app
66
- end
67
-
68
- context "with :skip_upload_docs option being false" do
69
- before :each do
70
- provider.options.update(:skip_upload_docs => false)
71
- end
72
-
73
- it "runs upload_docs" do
74
- expect(provider.context).to receive(:shell).with("python setup.py sdist").and_return(true)
75
- expect(provider.context).to receive(:shell).with("twine upload -r pypi dist/*").and_return(true)
76
- expect(provider.context).to receive(:shell).with("rm -rf dist/*").and_return(true)
77
- expect(provider.context).to receive(:shell).with("python setup.py upload_docs -r https://upload.pypi.org/legacy/").and_return(true)
78
- provider.push_app
79
- end
80
-
81
- example "with :docs_dir option" do
82
- provider.options.update(:docs_dir => 'some/dir')
83
- expect(provider.context).to receive(:shell).with("python setup.py sdist").and_return(true)
84
- expect(provider.context).to receive(:shell).with("twine upload -r pypi dist/*").and_return(true)
85
- expect(provider.context).to receive(:shell).with("rm -rf dist/*").and_return(true)
86
- expect(provider.context).to receive(:shell).with("python setup.py upload_docs --upload-dir some/dir -r https://upload.pypi.org/legacy/").and_return(true)
87
- provider.push_app
88
- end
89
- end
90
-
91
- end
92
-
93
- describe "#write_servers" do
94
- example do
95
- f = double(:f)
96
- expect(f).to receive(:puts).with(" pypi")
97
- expect(f).to receive(:puts).with("[pypi]")
98
- expect(f).to receive(:puts).with(["repository: https://upload.pypi.org/legacy/",
99
- "username: foo",
100
- "password: bar"
101
- ])
102
- provider.write_servers(f)
103
- end
104
- end
105
- end
@@ -1,303 +0,0 @@
1
- require 'spec_helper'
2
- require 'dpl/provider/releases'
3
- require 'octokit'
4
-
5
- describe DPL::Provider::Releases do
6
- subject :provider do
7
- described_class.new(DummyContext.new, :api_key => '0123445789qwertyuiop0123445789qwertyuiop', :file => 'blah.txt')
8
- end
9
-
10
- describe "#travis_tag" do
11
- example "When $TRAVIS_TAG is nil" do
12
- provider.context.env['TRAVIS_TAG'] = nil
13
-
14
- expect(provider.travis_tag).to eq(nil)
15
- end
16
-
17
- example "When $TRAVIS_TAG if set but empty" do
18
- provider.context.env['TRAVIS_TAG'] = nil
19
-
20
- expect(provider.travis_tag).to eq(nil)
21
- end
22
-
23
- example "When $TRAVIS_TAG if set" do
24
- provider.context.env['TRAVIS_TAG'] = "foo"
25
-
26
- expect(provider.travis_tag).to eq("foo")
27
- end
28
- end
29
-
30
- describe "#api" do
31
- example "With API key" do
32
- api = double(:api)
33
- expect(::Octokit::Client).to receive(:new).with(:access_token => '0123445789qwertyuiop0123445789qwertyuiop').and_return(api)
34
- expect(provider.api).to eq(api)
35
- end
36
-
37
- example "With username and password" do
38
- api = double(:api)
39
- provider.options.update(:user => 'foo')
40
- provider.options.update(:password => 'bar')
41
-
42
- expect(::Octokit::Client).to receive(:new).with(:login => 'foo', :password => 'bar').and_return(api)
43
- expect(provider.api).to eq(api)
44
- end
45
- end
46
-
47
- describe "#releases" do
48
- example "With ENV Slug" do
49
- allow(provider).to receive(:slug).and_return("foo/bar")
50
-
51
- expect(provider.api).to receive(:releases).with("foo/bar")
52
- provider.releases
53
- end
54
-
55
- example "With repo option" do
56
- provider.options.update(:repo => 'bar/foo')
57
-
58
- expect(provider.api).to receive(:releases).with('bar/foo')
59
- provider.releases
60
- end
61
- end
62
-
63
- describe "#files" do
64
- example "without file globbing and a single file" do
65
- expect(provider.files).to eq(['blah.txt'])
66
- end
67
-
68
- example "without file globbing and multiple files" do
69
- provider.options.update(:file => ['foo.txt', 'bar.txt'])
70
- expect(provider.files).to eq(['foo.txt', 'bar.txt'])
71
- end
72
-
73
- example "with file globbing and a single glob" do
74
- provider.options.update(:file_glob => true)
75
- provider.options.update(:file => 'bl*.txt')
76
- expect(::Dir).to receive(:glob).with('bl*.txt').and_return(['blah.txt'])
77
- expect(provider.files).to eq(['blah.txt'])
78
- end
79
-
80
- example "with file globbing and multiple globs" do
81
- provider.options.update(:file_glob => true)
82
- provider.options.update(:file => ['f*.txt', 'b*.txt'])
83
- expect(::Dir).to receive(:glob).with('f*.txt').and_return(['foo.txt'])
84
- expect(::Dir).to receive(:glob).with('b*.txt').and_return(['bar.txt'])
85
- expect(provider.files).to eq(['foo.txt', 'bar.txt'])
86
- end
87
- end
88
-
89
- describe "#needs_key?" do
90
- example do
91
- expect(provider.needs_key?).to eq(false)
92
- end
93
- end
94
-
95
- describe "#check_app" do
96
- example "Without $TRAVIS_TAG" do
97
- allow(provider).to receive(:travis_tag).and_return(nil)
98
- allow(provider).to receive(:slug).and_return("foo/bar")
99
- allow(provider).to receive(:get_tag).and_return("foo")
100
-
101
- expect(provider.context).to receive(:shell).with("git fetch --tags")
102
- expect(provider).to receive(:log).with("Deploying to repo: foo/bar")
103
- expect(provider).to receive(:log).with("Current tag is: foo")
104
-
105
- provider.check_app
106
- end
107
-
108
- example "With $TRAVIS_TAG" do
109
- allow(provider).to receive(:travis_tag).and_return("bar")
110
- allow(provider).to receive(:slug).and_return("foo/bar")
111
-
112
- expect(provider.context).not_to receive(:shell).with("git fetch --tags")
113
- expect(provider).to receive(:log).with("Deploying to repo: foo/bar")
114
- expect(provider).to receive(:log).with("Current tag is: bar")
115
-
116
- provider.check_app
117
- end
118
- end
119
-
120
- describe "#get_tag" do
121
- example "Without $TRAVIS_TAG" do
122
- allow(provider).to receive(:travis_tag).and_return(nil)
123
- allow(provider).to receive(:`).and_return("bar")
124
-
125
- expect(provider.get_tag).to eq("bar")
126
- end
127
-
128
- example "With $TRAVIS_TAG" do
129
- allow(provider).to receive(:travis_tag).and_return("foo")
130
-
131
- expect(provider.get_tag).to eq("foo")
132
- end
133
- end
134
-
135
- describe "#check_auth" do
136
- example "With proper permissions" do
137
- allow_message_expectations_on_nil
138
- allow(provider).to receive(:user)
139
- allow(provider).to receive(:setup_auth)
140
- expect(provider.api).to receive(:scopes).and_return(["public_repo"])
141
- expect(provider.user).to receive(:name).and_return("foo")
142
- expect(provider).to receive(:log).with("Logged in as foo")
143
- provider.check_auth
144
- end
145
-
146
- example "With improper permissions" do
147
- allow_message_expectations_on_nil
148
- allow(provider).to receive(:user)
149
- allow(provider).to receive(:setup_auth)
150
- expect(provider.api).to receive(:scopes).exactly(2).times.and_return([])
151
- expect { provider.check_auth }.to raise_error(DPL::Error)
152
- end
153
- end
154
-
155
- describe "#push_app" do
156
- example "When Release Exists but has no Files" do
157
- allow_message_expectations_on_nil
158
-
159
- provider.options.update(:file => ["test/foo.bar", "bar.txt"])
160
-
161
- allow(provider).to receive(:releases).and_return([""])
162
- allow(provider).to receive(:get_tag).and_return("v0.0.0")
163
-
164
- provider.releases.map do |release|
165
- allow(release).to receive(:tag_name).and_return("v0.0.0")
166
- allow(release).to receive(:rels).and_return({:self => nil})
167
- allow(release.rels[:self]).to receive(:href)
168
- end
169
-
170
- allow(provider.api).to receive(:release)
171
- allow(provider.api.release).to receive(:rels).and_return({:assets => nil})
172
- allow(provider.api.release.rels[:assets]).to receive(:get).and_return({:data => [""]})
173
- allow(provider.api.release.rels[:assets].get).to receive(:data).and_return([])
174
-
175
- expect(provider.api).to receive(:upload_asset).with(anything, "test/foo.bar", {:name=>"foo.bar", :content_type=>"application/octet-stream"})
176
- expect(provider.api).to receive(:upload_asset).with(anything, "bar.txt", {:name=>"bar.txt", :content_type=>"text/plain"})
177
- expect(provider.api).to receive(:update_release).with(anything, hash_including(:draft => false))
178
-
179
- provider.push_app
180
- end
181
-
182
- example "When Release Exists and has Files" do
183
- allow_message_expectations_on_nil
184
-
185
- provider.options.update(:file => ["test/foo.bar", "bar.txt"])
186
-
187
- allow(provider).to receive(:releases).and_return([""])
188
- allow(provider).to receive(:get_tag).and_return("v0.0.0")
189
-
190
- provider.releases.map do |release|
191
- allow(release).to receive(:tag_name).and_return("v0.0.0")
192
- allow(release).to receive(:rels).and_return({:self => nil})
193
- allow(release.rels[:self]).to receive(:href)
194
- end
195
-
196
- allow(provider.api).to receive(:release)
197
- allow(provider.api.release).to receive(:rels).and_return({:assets => nil})
198
- allow(provider.api.release.rels[:assets]).to receive(:get).and_return({:data => [""]})
199
- allow(provider.api.release.rels[:assets].get).to receive(:data).and_return([double(:name => "foo.bar", :url => 'foo-bar-url'), double(:name => "foo.foo", :url => 'foo-foo-url')])
200
-
201
- expect(provider.api).to receive(:upload_asset).with(anything, "bar.txt", {:name=>"bar.txt", :content_type=>"text/plain"})
202
- expect(provider).to receive(:log).with("foo.bar already exists, skipping.")
203
- expect(provider.api).to receive(:update_release).with(anything, hash_including(:draft => false))
204
-
205
- provider.push_app
206
- end
207
-
208
- example "When Release Exists and has Files but overwrite flag is true" do
209
- allow_message_expectations_on_nil
210
-
211
- provider.options.update(:file => ["exists.txt"])
212
- provider.options.update(:overwrite => true)
213
-
214
- allow(provider).to receive(:releases).and_return([""])
215
- allow(provider).to receive(:get_tag).and_return("v0.0.0")
216
-
217
- provider.releases.map do |release|
218
- allow(release).to receive(:tag_name).and_return("v0.0.0")
219
- allow(release).to receive(:rels).and_return({:self => nil})
220
- allow(release.rels[:self]).to receive(:href)
221
- end
222
-
223
- allow(provider.api).to receive(:release)
224
- allow(provider.api.release).to receive(:rels).and_return({:assets => nil})
225
- allow(provider.api.release.rels[:assets]).to receive(:get).and_return({:data => [""]})
226
- allow(provider.api.release.rels[:assets].get).to receive(:data).and_return([double(:name => "exists.txt", :url => "release-url")])
227
-
228
- expect(provider.api).to receive(:delete_release_asset).with("release-url").and_return(true)
229
- expect(provider.api).to receive(:upload_asset).with(anything, "exists.txt", {:name=>"exists.txt", :content_type=>"text/plain"})
230
- expect(provider.api).to receive(:update_release).with(anything, hash_including(:draft => false))
231
-
232
- provider.push_app
233
- end
234
-
235
- example "When Release Doesn't Exist" do
236
- allow_message_expectations_on_nil
237
-
238
- provider.options.update(:file => ["test/foo.bar", "bar.txt"])
239
-
240
- allow(provider).to receive(:releases).and_return([""])
241
-
242
- provider.releases.map do |release|
243
- allow(release).to receive(:tag_name).and_return("foo")
244
- allow(release).to receive(:rels).and_return({:self => nil})
245
- allow(release.rels[:self]).to receive(:href)
246
- end
247
-
248
- allow(provider.api).to receive(:create_release)
249
- allow(provider.api.create_release).to receive(:rels).and_return({:self => nil})
250
- allow(provider.api.create_release.rels[:slef]).to receive(:href)
251
-
252
- allow(provider.api).to receive(:release)
253
- allow(provider.api.release).to receive(:rels).and_return({:assets => nil})
254
- allow(provider.api.release.rels[:assets]).to receive(:get).and_return({:data => nil})
255
- allow(provider.api.release.rels[:assets].get).to receive(:data).and_return([])
256
-
257
- expect(provider.api).to receive(:upload_asset).with(anything, "test/foo.bar", {:name=>"foo.bar", :content_type=>"application/octet-stream"})
258
- expect(provider.api).to receive(:upload_asset).with(anything, "bar.txt", {:name=>"bar.txt", :content_type=>"text/plain"})
259
- expect(provider.api).to receive(:update_release).with(anything, hash_including(:draft => false))
260
-
261
- provider.push_app
262
- end
263
-
264
- example "With Release Number" do
265
- allow_message_expectations_on_nil
266
-
267
- provider.options.update(:file => ["bar.txt"])
268
- provider.options.update(:release_number => "1234")
269
-
270
- allow(provider).to receive(:slug).and_return("foo/bar")
271
-
272
- allow(provider.api).to receive(:release)
273
- allow(provider.api.release).to receive(:rels).and_return({:assets => nil})
274
- allow(provider.api.release.rels[:assets]).to receive(:get).and_return({:data => nil})
275
- allow(provider.api.release.rels[:assets].get).to receive(:data).and_return([])
276
-
277
- expect(provider.api).to receive(:upload_asset).with("https://api.github.com/repos/foo/bar/releases/1234", "bar.txt", {:name=>"bar.txt", :content_type=>"text/plain"})
278
- expect(provider.api).to receive(:update_release).with(anything, hash_including(:draft => false))
279
-
280
- provider.push_app
281
- end
282
-
283
- example "When draft is true" do
284
- allow_message_expectations_on_nil
285
-
286
- provider.options.update(:file => ["bar.txt"])
287
- provider.options.update(:release_number => "1234")
288
- provider.options.update(:draft => true)
289
-
290
- allow(provider).to receive(:slug).and_return("foo/bar")
291
-
292
- allow(provider.api).to receive(:release)
293
- allow(provider.api.release).to receive(:rels).and_return({:assets => nil})
294
- allow(provider.api.release.rels[:assets]).to receive(:get).and_return({:data => nil})
295
- allow(provider.api.release.rels[:assets].get).to receive(:data).and_return([])
296
-
297
- expect(provider.api).to receive(:upload_asset).with("https://api.github.com/repos/foo/bar/releases/1234", "bar.txt", {:name=>"bar.txt", :content_type=>"text/plain"})
298
- expect(provider.api).to receive(:update_release).with(anything, hash_including(:draft => true))
299
-
300
- provider.push_app
301
- end
302
- end
303
- end
@@ -1,106 +0,0 @@
1
- require 'spec_helper'
2
- require 'rubygems'
3
- require 'gems'
4
- require 'dpl/provider/rubygems'
5
-
6
- describe DPL::Provider::RubyGems do
7
- subject :provider do
8
- described_class.new(DummyContext.new, :app => 'example', :api_key => 'foo')
9
- end
10
-
11
- describe "#api" do
12
- example "with an api key" do
13
- expect(::Gems).to receive(:key=).with('foo')
14
- provider.setup_auth
15
- end
16
-
17
- example "with a username and password" do
18
- provider.options.update(:user => 'test', :password => 'blah')
19
- provider.options.delete(:api_key)
20
- expect(::Gems).to receive(:username=).with('test')
21
- expect(::Gems).to receive(:password=).with('blah')
22
- provider.setup_auth
23
- end
24
- end
25
-
26
- describe "#check_auth" do
27
- example do
28
- provider.options.update(:user => 'test', :password => 'blah')
29
- provider.options.delete(:api_key)
30
- expect(provider).to receive(:log).with("Authenticated with username test")
31
- provider.check_auth
32
- end
33
- end
34
-
35
- describe "#check_app" do
36
- example do
37
- expect(::Gems).to receive(:info).with('example').and_return({'name' => 'example'})
38
- expect(provider).to receive(:log).with("Looking up gem example")
39
- expect(provider).to receive(:log).with("Found gem example")
40
- provider.check_app
41
- end
42
- end
43
-
44
- describe "#push_app" do
45
- after(:each) do
46
- expect(File).to receive(:new).with('File').and_return('Test file')
47
- expect(provider).to receive(:log).with('Yes!')
48
- provider.push_app
49
- end
50
-
51
- example "with options[:app]" do
52
- provider.options.update(:app => 'example')
53
- expect(provider.context).to receive(:shell).with("gem build example.gemspec")
54
- expect(Dir).to receive(:glob).with('example-*.gem').and_yield('File')
55
- expect(::Gems).to receive(:push).with('Test file').and_return('Yes!')
56
- end
57
-
58
- example "with options[:gem]" do
59
- provider.options.update(:gem => 'example-gem')
60
- expect(provider.context).to receive(:shell).with("gem build example-gem.gemspec")
61
- expect(Dir).to receive(:glob).with('example-gem-*.gem').and_yield('File')
62
- expect(::Gems).to receive(:push).with('Test file').and_return('Yes!')
63
- end
64
-
65
- example "with options[:gemspec]" do
66
- provider.options.update(:gemspec => 'blah.gemspec')
67
- expect(provider.context).to receive(:shell).with("gem build blah.gemspec")
68
- expect(Dir).to receive(:glob).with('blah-*.gem').and_yield('File')
69
- expect(::Gems).to receive(:push).with('Test file').and_return('Yes!')
70
- end
71
-
72
- example "with options[:host]" do
73
- provider.options.update(:host => 'http://example.com')
74
- expect(provider.context).to receive(:shell).with("gem build example.gemspec")
75
- expect(Dir).to receive(:glob).with('example-*.gem').and_yield('File')
76
- expect(::Gems).to receive(:push).with('Test file', host='http://example.com').and_return('Yes!')
77
- end
78
- end
79
-
80
- describe "#setup_gem" do
81
- example "with options[:gem] and options[:app] set" do
82
- provider.options.update(:gem => 'test', :app => 'blah')
83
- provider.setup_gem
84
- expect(provider.options[:gem]).to eq('test')
85
- end
86
-
87
- example "with options[:app] set" do
88
- provider.options.update(:app => 'foo')
89
- provider.setup_gem
90
- expect(provider.options[:gem]).to eq('foo')
91
- end
92
-
93
- example "with options[:gem] set" do
94
- provider.options.update(:gem => 'bar')
95
- provider.setup_gem
96
- expect(provider.options[:gem]).to eq('bar')
97
- end
98
- end
99
-
100
- describe "#gemspec" do
101
- example do
102
- provider.options.update(:gemspec => 'test.gemspec')
103
- expect(provider.gemspec).to eq('test')
104
- end
105
- end
106
- end