targit 0.0.6 → 0.1.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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +36 -0
  4. data/bin/targit +20 -7
  5. data/lib/targit.rb +1 -0
  6. data/lib/targit/asset.rb +8 -24
  7. data/lib/targit/client.rb +22 -0
  8. data/lib/targit/release.rb +6 -5
  9. data/lib/targit/version.rb +1 -1
  10. data/spec/examples/alpha +1 -0
  11. data/spec/examples/beta +1 -0
  12. data/spec/fixtures/cassettes/asset_autocreate_release.yml +272 -0
  13. data/spec/fixtures/cassettes/asset_existence_check_fail.yml +206 -0
  14. data/spec/fixtures/cassettes/asset_existence_check_pass.yml +206 -0
  15. data/spec/fixtures/cassettes/asset_metadata_absent.yml +209 -0
  16. data/spec/fixtures/cassettes/asset_metadata_present.yml +670 -0
  17. data/spec/fixtures/cassettes/asset_url_absent.yml +405 -0
  18. data/spec/fixtures/cassettes/asset_url_present.yml +674 -0
  19. data/spec/fixtures/cassettes/asset_without_release.yml +70 -0
  20. data/spec/fixtures/cassettes/block_existing_asset.yml +206 -0
  21. data/spec/fixtures/cassettes/create_new_asset.yml +674 -0
  22. data/spec/fixtures/cassettes/create_new_release.yml +205 -0
  23. data/spec/fixtures/cassettes/current_asset.yml +208 -0
  24. data/spec/fixtures/cassettes/current_io_asset.yml +70 -0
  25. data/spec/fixtures/cassettes/current_releases.yml +70 -0
  26. data/spec/fixtures/cassettes/delete_asset.yml +541 -0
  27. data/spec/fixtures/cassettes/no_release_found.yml +70 -0
  28. data/spec/fixtures/cassettes/release_object.yml +70 -0
  29. data/spec/fixtures/cassettes/replace_existing_asset.yml +867 -0
  30. data/spec/spec_helper.rb +18 -0
  31. data/spec/targit/asset_spec.rb +212 -0
  32. data/spec/targit/release_spec.rb +40 -0
  33. data/spec/targit/version_spec.rb +9 -0
  34. data/spec/targit_spec.rb +17 -0
  35. data/targit.gemspec +2 -0
  36. metadata +78 -4
data/spec/spec_helper.rb CHANGED
@@ -8,3 +8,21 @@ end
8
8
 
9
9
  require 'rspec'
10
10
  require 'targit'
11
+
12
+ unless File.exist? 'spec/.creds'
13
+ File.open('spec/.creds', 'w') do |fh|
14
+ fh << "---\ntargit: sekritkey\n"
15
+ end
16
+ end
17
+
18
+ require 'vcr'
19
+ VCR.configure do |c|
20
+ c.cassette_library_dir = 'spec/fixtures/cassettes'
21
+ c.hook_into :webmock
22
+ c.before_record do |i|
23
+ i.request.headers.delete 'Authorization'
24
+ %w(Etag X-Github-Request-Id X-Served-By).each do |header|
25
+ i.response.headers.delete header
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,212 @@
1
+ require 'spec_helper'
2
+
3
+ describe Targit do
4
+ describe Targit::Asset do
5
+ let(:asset) do
6
+ VCR.use_cassette('current_asset') do
7
+ Targit.new(
8
+ 'spec/examples/alpha',
9
+ 'akerl/targit',
10
+ 'testing',
11
+ authfile: 'spec/.creds',
12
+ create: true
13
+ )
14
+ end
15
+ end
16
+ let(:io_asset) do
17
+ VCR.use_cassette('current_io_asset') do
18
+ fh = File.open('spec/examples/alpha')
19
+ Targit.new(
20
+ fh,
21
+ 'akerl/targit',
22
+ 'testing',
23
+ authfile: 'spec/.creds',
24
+ create: true
25
+ )
26
+ end
27
+ end
28
+
29
+ it 'exposes the release object' do
30
+ expect(asset.release).to be_an_instance_of Targit::Release
31
+ end
32
+ it 'exposes the asset attribute' do
33
+ expect(asset.asset).to eql 'spec/examples/alpha'
34
+ end
35
+ it 'exposes the asset name' do
36
+ expect(asset.name).to eql 'alpha'
37
+ expect(io_asset.name).to eql 'alpha'
38
+ end
39
+
40
+ it 'does not create a release by default' do
41
+ VCR.use_cassette('asset_without_release') do
42
+ expect do
43
+ Targit.new(
44
+ 'spec/examples/beta',
45
+ 'akerl/targit',
46
+ 'more_testing',
47
+ authfile: 'spec/.creds'
48
+ )
49
+ end.to raise_error RuntimeError, /No release found/
50
+ end
51
+ end
52
+
53
+ it 'can create a new release' do
54
+ VCR.use_cassette('asset_autocreate_release') do
55
+ expect do
56
+ Targit.new(
57
+ 'spec/examples/beta',
58
+ 'akerl/targit',
59
+ 'more_testing',
60
+ authfile: 'spec/.creds'
61
+ )
62
+ end.to raise_error RuntimeError, /No release found/
63
+ asset = Targit.new(
64
+ 'spec/examples/beta',
65
+ 'akerl/targit',
66
+ 'more_testing',
67
+ authfile: 'spec/.creds',
68
+ create: true
69
+ )
70
+ expect(asset.release).to be_an_instance_of Targit::Release
71
+ end
72
+ end
73
+
74
+ describe '#upload!' do
75
+ it 'uploads a release asset' do
76
+ VCR.use_cassette('create_new_asset') do
77
+ asset = Targit.new(
78
+ 'spec/examples/beta',
79
+ 'akerl/targit',
80
+ 'testing',
81
+ authfile: 'spec/.creds'
82
+ )
83
+ expect { asset.url }.to raise_error RuntimeError, /URL not found/
84
+ asset.upload!
85
+ expect(asset.url).to eql 'https://github.com/akerl/targit/releases/download/testing/beta'
86
+ end
87
+ end
88
+ it 'will fail to replace an existing asset by default' do
89
+ VCR.use_cassette('block_existing_asset') do
90
+ asset = Targit.new(
91
+ 'spec/examples/beta',
92
+ 'akerl/targit',
93
+ 'testing',
94
+ authfile: 'spec/.creds'
95
+ )
96
+ expect { asset.upload! }.to raise_error RuntimeError, /already exists/
97
+ end
98
+ end
99
+ it 'can replace an existing asset' do
100
+ VCR.use_cassette('replace_existing_asset') do
101
+ asset = Targit.new(
102
+ 'spec/examples/beta',
103
+ 'akerl/targit',
104
+ 'testing',
105
+ authfile: 'spec/.creds',
106
+ force: true
107
+ )
108
+ expect(asset.url).to eql 'https://github.com/akerl/targit/releases/download/testing/beta'
109
+ asset.upload!
110
+ expect(asset.url).to eql 'https://github.com/akerl/targit/releases/download/testing/beta'
111
+ end
112
+ end
113
+ end
114
+
115
+ describe '#already_exists?' do
116
+ it 'returns true if the asset is on GitHub' do
117
+ VCR.use_cassette('asset_existence_check_pass') do
118
+ asset = Targit.new(
119
+ 'spec/examples/beta',
120
+ 'akerl/targit',
121
+ 'testing',
122
+ authfile: 'spec/.creds'
123
+ )
124
+ expect(asset.already_exists?).to be_truthy
125
+ end
126
+ end
127
+ it 'returns false if the asset is not on GitHub' do
128
+ VCR.use_cassette('asset_existence_check_fail') do
129
+ asset = Targit.new(
130
+ 'spec/examples/charlie',
131
+ 'akerl/targit',
132
+ 'testing',
133
+ authfile: 'spec/.creds'
134
+ )
135
+ expect(asset.already_exists?).to be_falsey
136
+ end
137
+ end
138
+ end
139
+
140
+ describe '#delete!' do
141
+ it 'removes the asset from GitHub' do
142
+ VCR.use_cassette('delete_asset') do
143
+ asset = Targit.new(
144
+ 'spec/examples/beta',
145
+ 'akerl/targit',
146
+ 'testing',
147
+ authfile: 'spec/.creds'
148
+ )
149
+ expect(asset.already_exists?).to be_truthy
150
+ asset.delete!
151
+ expect(asset.already_exists?).to be_falsey
152
+ end
153
+ end
154
+ end
155
+
156
+ describe '#github_data' do
157
+ it 'returns the GitHub metadata for this asset' do
158
+ VCR.use_cassette('asset_metadata_present') do
159
+ asset = Targit.new(
160
+ 'spec/examples/beta',
161
+ 'akerl/targit',
162
+ 'meta_testing',
163
+ authfile: 'spec/.creds',
164
+ create: true
165
+ )
166
+ asset.upload!
167
+ expect(asset.github_data[:name]).to eql 'beta'
168
+ end
169
+ end
170
+ it 'returns nil if the asset is not on GitHub' do
171
+ VCR.use_cassette('asset_metadata_absent') do
172
+ asset = Targit.new(
173
+ 'spec/examples/charlie',
174
+ 'akerl/targit',
175
+ 'testing',
176
+ authfile: 'spec/.creds'
177
+ )
178
+ expect(asset.github_data).to be_nil
179
+ end
180
+ end
181
+ end
182
+
183
+ describe '#url' do
184
+ it 'returns the download URL if the asset is on GitHub' do
185
+ VCR.use_cassette('asset_url_present') do
186
+ asset = Targit.new(
187
+ 'spec/examples/beta',
188
+ 'akerl/targit',
189
+ 'testing',
190
+ authfile: 'spec/.creds',
191
+ force: true
192
+ )
193
+ asset.upload!
194
+ expect(asset.url).to eql 'https://github.com/akerl/targit/releases/download/testing/beta'
195
+ end
196
+ end
197
+ it 'raises if the asset is not on GitHub' do
198
+ VCR.use_cassette('asset_url_absent') do
199
+ asset = Targit.new(
200
+ 'spec/examples/beta',
201
+ 'akerl/targit',
202
+ 'testing',
203
+ authfile: 'spec/.creds',
204
+ create: true
205
+ )
206
+ asset.delete!
207
+ expect { asset.url }.to raise_error RuntimeError, /URL not found/
208
+ end
209
+ end
210
+ end
211
+ end
212
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ describe Targit do
4
+ describe Targit::Release do
5
+ let(:basic_release) do
6
+ VCR.use_cassette('release_object') do
7
+ Targit::Release.new 'akerl/targit', 'testing', authfile: 'spec/.creds'
8
+ end
9
+ end
10
+
11
+ it 'exposes the release object' do
12
+ expect(basic_release.data[:tag_name]).to eql 'testing'
13
+ end
14
+ it 'exposes the repo name' do
15
+ expect(basic_release.repo).to eql 'akerl/targit'
16
+ end
17
+ it 'exposes the tag name' do
18
+ expect(basic_release.tag).to eql 'testing'
19
+ end
20
+
21
+ it 'does not create a new release by default' do
22
+ VCR.use_cassette('no_release_found') do
23
+ expect do
24
+ Targit::Release.new(
25
+ 'akerl/targit', 'new_release', authfile: 'spec/.creds'
26
+ )
27
+ end.to raise_error RuntimeError, /No release found/
28
+ end
29
+ end
30
+
31
+ it 'creates the repo if called with :create = true' do
32
+ VCR.use_cassette('create_new_release') do
33
+ release = Targit::Release.new(
34
+ 'akerl/targit', 'new_release', create: true, authfile: 'spec/.creds'
35
+ )
36
+ expect(release.repo).to eql 'akerl/targit'
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe Targit do
4
+ describe '::VERSION' do
5
+ it 'follows the semantic version scheme' do
6
+ expect(Targit::VERSION).to match(/\d+\.\d+\.\d+/)
7
+ end
8
+ end
9
+ end
data/spec/targit_spec.rb CHANGED
@@ -1 +1,18 @@
1
1
  require 'spec_helper'
2
+
3
+ describe Targit do
4
+ describe '#new' do
5
+ it 'creates Asset objects' do
6
+ VCR.use_cassette('current_releases') do
7
+ asset = Targit.new(
8
+ 'spec/examples/alpha',
9
+ 'akerl/targit',
10
+ 'testing',
11
+ authfile: 'spec/.creds',
12
+ create: true
13
+ )
14
+ expect(asset).to be_an_instance_of Targit::Asset
15
+ end
16
+ end
17
+ end
18
+ end
data/targit.gemspec CHANGED
@@ -27,4 +27,6 @@ Gem::Specification.new do |s|
27
27
  s.add_development_dependency 'coveralls', '~> 0.7.0'
28
28
  s.add_development_dependency 'rspec', '~> 3.0.0'
29
29
  s.add_development_dependency 'fuubar', '~> 2.0.0.rc1'
30
+ s.add_development_dependency 'webmock', '~> 1.18.0'
31
+ s.add_development_dependency 'vcr', '~> 2.9.2'
30
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: targit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Les Aker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-08 00:00:00.000000000 Z
11
+ date: 2014-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit
@@ -136,6 +136,34 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 2.0.0.rc1
139
+ - !ruby/object:Gem::Dependency
140
+ name: webmock
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 1.18.0
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 1.18.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: vcr
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 2.9.2
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 2.9.2
139
167
  description: Manages GitHub release assets for pushing binaries and other large files
140
168
  email: me@lesaker.org
141
169
  executables:
@@ -154,9 +182,33 @@ files:
154
182
  - bin/targit
155
183
  - lib/targit.rb
156
184
  - lib/targit/asset.rb
185
+ - lib/targit/client.rb
157
186
  - lib/targit/release.rb
158
187
  - lib/targit/version.rb
188
+ - spec/examples/alpha
189
+ - spec/examples/beta
190
+ - spec/fixtures/cassettes/asset_autocreate_release.yml
191
+ - spec/fixtures/cassettes/asset_existence_check_fail.yml
192
+ - spec/fixtures/cassettes/asset_existence_check_pass.yml
193
+ - spec/fixtures/cassettes/asset_metadata_absent.yml
194
+ - spec/fixtures/cassettes/asset_metadata_present.yml
195
+ - spec/fixtures/cassettes/asset_url_absent.yml
196
+ - spec/fixtures/cassettes/asset_url_present.yml
197
+ - spec/fixtures/cassettes/asset_without_release.yml
198
+ - spec/fixtures/cassettes/block_existing_asset.yml
199
+ - spec/fixtures/cassettes/create_new_asset.yml
200
+ - spec/fixtures/cassettes/create_new_release.yml
201
+ - spec/fixtures/cassettes/current_asset.yml
202
+ - spec/fixtures/cassettes/current_io_asset.yml
203
+ - spec/fixtures/cassettes/current_releases.yml
204
+ - spec/fixtures/cassettes/delete_asset.yml
205
+ - spec/fixtures/cassettes/no_release_found.yml
206
+ - spec/fixtures/cassettes/release_object.yml
207
+ - spec/fixtures/cassettes/replace_existing_asset.yml
159
208
  - spec/spec_helper.rb
209
+ - spec/targit/asset_spec.rb
210
+ - spec/targit/release_spec.rb
211
+ - spec/targit/version_spec.rb
160
212
  - spec/targit_spec.rb
161
213
  - targit.gemspec
162
214
  homepage: https://github.com/akerl/targit
@@ -179,11 +231,33 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
231
  version: '0'
180
232
  requirements: []
181
233
  rubyforge_project:
182
- rubygems_version: 2.0.14
234
+ rubygems_version: 2.2.2
183
235
  signing_key:
184
236
  specification_version: 4
185
237
  summary: Tool for adding GitHub release assets
186
238
  test_files:
239
+ - spec/examples/alpha
240
+ - spec/examples/beta
241
+ - spec/fixtures/cassettes/asset_autocreate_release.yml
242
+ - spec/fixtures/cassettes/asset_existence_check_fail.yml
243
+ - spec/fixtures/cassettes/asset_existence_check_pass.yml
244
+ - spec/fixtures/cassettes/asset_metadata_absent.yml
245
+ - spec/fixtures/cassettes/asset_metadata_present.yml
246
+ - spec/fixtures/cassettes/asset_url_absent.yml
247
+ - spec/fixtures/cassettes/asset_url_present.yml
248
+ - spec/fixtures/cassettes/asset_without_release.yml
249
+ - spec/fixtures/cassettes/block_existing_asset.yml
250
+ - spec/fixtures/cassettes/create_new_asset.yml
251
+ - spec/fixtures/cassettes/create_new_release.yml
252
+ - spec/fixtures/cassettes/current_asset.yml
253
+ - spec/fixtures/cassettes/current_io_asset.yml
254
+ - spec/fixtures/cassettes/current_releases.yml
255
+ - spec/fixtures/cassettes/delete_asset.yml
256
+ - spec/fixtures/cassettes/no_release_found.yml
257
+ - spec/fixtures/cassettes/release_object.yml
258
+ - spec/fixtures/cassettes/replace_existing_asset.yml
187
259
  - spec/spec_helper.rb
260
+ - spec/targit/asset_spec.rb
261
+ - spec/targit/release_spec.rb
262
+ - spec/targit/version_spec.rb
188
263
  - spec/targit_spec.rb
189
- has_rdoc: