ruby_vsts 0.1.1

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.
@@ -0,0 +1,25 @@
1
+ require 'rspec'
2
+ require 'webmock/rspec'
3
+ require 'simplecov'
4
+ require 'simplecov-json'
5
+ require 'codeclimate-test-reporter'
6
+
7
+ SimpleCov.configure do
8
+ root File.join(File.dirname(__FILE__), '..')
9
+ project_name 'Ruby VSTS Client'
10
+ add_filter 'spec'
11
+ end
12
+
13
+ SimpleCov.start
14
+
15
+ RSpec.configure do |config|
16
+ config.order = 'random'
17
+ end
18
+
19
+ WebMock.disable_net_connect!
20
+
21
+ require 'ruby_vsts'
22
+
23
+ def fixtures_path
24
+ File.dirname(__FILE__) + '/fixtures/'
25
+ end
@@ -0,0 +1,10 @@
1
+ require "spec_helper"
2
+
3
+ describe VSTS::BaseModel do
4
+ it "can convert camelcase to underlines" do
5
+ m = described_class.new
6
+ expect(m.underscore("AbcDef")).to eq("abc_def")
7
+ expect(m.underscore("ABCDef")).to eq("abc_def")
8
+ expect(m.underscore("abcDefGhi")).to eq("abc_def_ghi")
9
+ end
10
+ end
@@ -0,0 +1,25 @@
1
+ require "spec_helper"
2
+
3
+ describe VSTS::Change do
4
+ before do
5
+ VSTS.reset
6
+ VSTS.configure do |config|
7
+ config.personal_access_token = "test_token"
8
+ config.base_url = "https://test.visualstudio.local/"
9
+ config.debug = false
10
+ end
11
+
12
+ # stub one changeset
13
+ stub_request(:get, /test.visualstudio.local\/.*?\/changesets\/\d+\?/)
14
+ .to_return(status: 200, body: File.new(fixtures_path + "tfvc_changeset_by_id.json"))
15
+ # stub changes in a changeset
16
+ stub_request(:get, /test.visualstudio.local\/.*?\/changesets\/\d+\/changes\?/)
17
+ .to_return(status: 200, body: File.new(fixtures_path + "tfvc_changeset_changes.json"))
18
+ end
19
+
20
+ let(:changes) { VSTS::Changeset.find(16).changes }
21
+
22
+ it "creates Item objects for changes" do
23
+ expect(changes[0].item).to be_a(VSTS::Item)
24
+ end
25
+ end
@@ -0,0 +1,145 @@
1
+ require "spec_helper"
2
+
3
+ # rubocop:disable Metrics/BlockLength
4
+ describe VSTS::Changeset do
5
+ before do
6
+ VSTS.reset
7
+ VSTS.configure do |config|
8
+ config.personal_access_token = "test_token"
9
+ config.base_url = "https://test.visualstudio.local/"
10
+ config.debug = false
11
+ end
12
+ end
13
+
14
+ describe "finding a single changeset" do
15
+ before do
16
+ # stub one changeset
17
+ stub_request(:get, /test.visualstudio.local\/.*?\/changesets\/\d+\?/)
18
+ .to_return(status: 200, body: File.new(fixtures_path + "tfvc_changeset_by_id.json"))
19
+ end
20
+
21
+ let(:changeset) { described_class.find(16) }
22
+
23
+ it "can find a Changeset instance by id" do
24
+ expect(changeset).to be_a(described_class)
25
+ end
26
+
27
+ it "can create an Identity instance for the author of the changeset" do
28
+ expect(changeset.author).to be_a(VSTS::Identity)
29
+ end
30
+
31
+ it "can fill in Changeset instance fields from the response" do
32
+ expect(changeset.author.display_name).to eq("Chuck Reinhart")
33
+ end
34
+
35
+ it "can download changes" do
36
+ expect(changeset).to respond_to(:changes)
37
+ end
38
+ end
39
+
40
+ describe "finding a list of changesets" do
41
+ before do
42
+ # stub list of changesets (the same response for any query)
43
+ stub_request(:get, /test.visualstudio.local\/.*?\/changesets\?/)
44
+ .to_return(status: 200, body: File.new(fixtures_path + "tfvc_changesets_list.json"))
45
+ end
46
+
47
+ let(:expected_url) { "https://test.visualstudio.local/DefaultCollection/_apis/tfvc/changesets" }
48
+
49
+ it "can find a list of changesets as an array" do
50
+ changeset_list = described_class.find_all
51
+ expect(changeset_list).to be_an(Array)
52
+ expect(changeset_list[0]).to be_a(described_class)
53
+ end
54
+
55
+ it "can find all changesets" do
56
+ changeset_list = described_class.find_all
57
+ expect(changeset_list.length).to eq(18)
58
+ end
59
+
60
+ it "can request a page at a time" do
61
+ described_class.find_all(top: 20, skip: 100)
62
+ query = {
63
+ "$top" => 20,
64
+ "$skip" => 100,
65
+ "api-version" => "1.0"
66
+ }
67
+ expect(a_request(:get, expected_url).with(query: query)).to have_been_made.once
68
+ end
69
+
70
+ it "can sort results" do
71
+ described_class.find_all(orderBy: "id desc")
72
+ query = {
73
+ "$orderBy" => "id desc",
74
+ "api-version" => "1.0"
75
+ }
76
+ expect(a_request(:get, expected_url).with(query: query)).to have_been_made.once
77
+ end
78
+
79
+ describe "filtering" do
80
+ it "can filter by item path" do
81
+ described_class.find_all(itemPath: "$/Fabrikam-Fiber-TFVC/Program.cs")
82
+ query = {
83
+ "searchCriteria.itemPath" => "$/Fabrikam-Fiber-TFVC/Program.cs",
84
+ "api-version" => "1.0"
85
+ }
86
+ expect(a_request(:get, expected_url).with(query: query)).to have_been_made.once
87
+ end
88
+
89
+ it "can filter by author" do
90
+ described_class.find_all(author: "fabrikamfiber3@hotmail.com")
91
+ query = {
92
+ "searchCriteria.author" => "fabrikamfiber3@hotmail.com",
93
+ "api-version" => "1.0"
94
+ }
95
+ expect(a_request(:get, expected_url).with(query: query)).to have_been_made.once
96
+ end
97
+
98
+ it "can filter by range of IDs" do
99
+ described_class.find_all(fromId: 10, toId: 20)
100
+ query = {
101
+ "searchCriteria.fromId" => 10,
102
+ "searchCriteria.toId" => 20,
103
+ "api-version" => "1.0"
104
+ }
105
+ expect(a_request(:get, expected_url).with(query: query)).to have_been_made.once
106
+ end
107
+
108
+ it "can filter by date range" do
109
+ described_class.find_all(fromDate: "03-01-2017", toDate: "03-18-2017-2:00PM")
110
+ query = {
111
+ "searchCriteria.fromDate" => "03-01-2017",
112
+ "searchCriteria.toDate" => "03-18-2017-2:00PM",
113
+ "api-version" => "1.0"
114
+ }
115
+ expect(a_request(:get, expected_url).with(query: query)).to have_been_made.once
116
+ end
117
+ end
118
+ end
119
+
120
+ describe "downloading changes in a changeset" do
121
+ before do
122
+ # stub one changeset
123
+ stub_request(:get, /test.visualstudio.local\/.*?\/changesets\/\d+\?/)
124
+ .to_return(status: 200, body: File.new(fixtures_path + "tfvc_changeset_by_id.json"))
125
+ # stub changes in a changeset
126
+ stub_request(:get, /test.visualstudio.local\/.*?\/changesets\/\d+\/changes\?/)
127
+ .to_return(status: 200, body: File.new(fixtures_path + "tfvc_changeset_changes.json"))
128
+ end
129
+
130
+ let(:changes) { described_class.find(16).changes }
131
+
132
+ it "can get changes as an Array" do
133
+ expect(changes).to be_an(Array)
134
+ end
135
+
136
+ it "creates the required amount of changes" do
137
+ expect(changes.length).to eq(1)
138
+ end
139
+
140
+ it "creates Change instances" do
141
+ expect(changes[0]).to be_a(VSTS::Change)
142
+ end
143
+ end
144
+ end
145
+ # rubocop:enable Metrics/BlockLength
@@ -0,0 +1,43 @@
1
+ require "spec_helper"
2
+
3
+ # rubocop:disable Metrics/BlockLength
4
+ describe VSTS::Configuration do
5
+ before do
6
+ VSTS.reset
7
+ VSTS.configure do |config|
8
+ config.personal_access_token = "test_token"
9
+ config.base_url = "https://testurl.local/"
10
+ config.collection = "testcollection"
11
+ config.team_project = "testproject"
12
+ config.area = "testarea"
13
+ config.api_version = "9.9-test"
14
+ config.debug = true
15
+ end
16
+ end
17
+
18
+ it "has an accessible configuration" do
19
+ expect(VSTS.configuration).to be_a(described_class)
20
+ end
21
+
22
+ it "has its fields configured" do
23
+ expect(VSTS.configuration.personal_access_token).to eq("test_token")
24
+ expect(VSTS.configuration.base_url).to eq("https://testurl.local/")
25
+ expect(VSTS.configuration.collection).to eq("testcollection")
26
+ expect(VSTS.configuration.team_project).to eq("testproject")
27
+ expect(VSTS.configuration.area).to eq("testarea")
28
+ expect(VSTS.configuration.api_version).to eq("9.9-test")
29
+ expect(VSTS.configuration.debug).to eq(true)
30
+ end
31
+
32
+ it "can be reconfigured" do
33
+ VSTS.configuration.debug = false
34
+ expect(VSTS.configuration.debug).to eq(false)
35
+ end
36
+
37
+ it "can be reset" do
38
+ VSTS.reset
39
+ expect(VSTS.configuration.personal_access_token).to eq("")
40
+ expect(VSTS.configuration.base_url).to eq("")
41
+ end
42
+ end
43
+ # rubocop:enable Metrics/BlockLength
@@ -0,0 +1,74 @@
1
+ require "spec_helper"
2
+
3
+ # rubocop:disable Metrics/BlockLength
4
+ describe VSTS::Item do
5
+ before do
6
+ VSTS.reset
7
+ VSTS.configure do |config|
8
+ config.personal_access_token = "test_token"
9
+ config.base_url = "https://test.visualstudio.local/"
10
+ config.debug = false
11
+ end
12
+
13
+ # stub one changeset
14
+ stub_request(:get, /test.visualstudio.local\/.*?\/changesets\/\d+\?/)
15
+ .to_return(status: 200, body: File.new(fixtures_path + "tfvc_changeset_by_id.json"))
16
+ # stub changes in a changeset
17
+ stub_request(:get, /test.visualstudio.local\/.*?\/changesets\/\d+\/changes\?/)
18
+ .to_return(status: 200, body: File.new(fixtures_path + "tfvc_changeset_changes.json"))
19
+ # stub item download
20
+ stub_request(:get, /test.visualstudio.local\/.*?\/items(\/|\?)/)
21
+ .to_return(status: 200, body: "test file\ncontents")
22
+ end
23
+
24
+ let(:item) { VSTS::Changeset.find(16).changes[0].item }
25
+ let(:expected_url) { "https://test.visualstudio.local/DefaultCollection/_apis/tfvc/items" }
26
+
27
+ it "downloads from the correct URL" do
28
+ query = {
29
+ "path" => "$/Fabrikam-Fiber-TFVC/AuthSample-dev/Code/AuthSample.cs",
30
+ "api-version" => "1.0"
31
+ }
32
+ item.get
33
+ expect(a_request(:get, expected_url).with(query: query)).to have_been_made.once
34
+ end
35
+
36
+ it "can be downloaded" do
37
+ expect(item.get).to eq("test file\ncontents")
38
+ end
39
+
40
+ it "can download a specific version" do
41
+ query = {
42
+ "path" => "$/Fabrikam-Fiber-TFVC/AuthSample-dev/Code/AuthSample.cs",
43
+ "versionType" => "changeset",
44
+ "version" => 1000,
45
+ "api-version" => "1.0"
46
+ }
47
+ item.get(versionType: :changeset, version: 1000)
48
+ expect(a_request(:get, expected_url).with(query: query)).to have_been_made.once
49
+ end
50
+
51
+ it "can download the previous version before the latest" do
52
+ query = {
53
+ "path" => "$/Fabrikam-Fiber-TFVC/AuthSample-dev/Code/AuthSample.cs",
54
+ "versionType" => "latest",
55
+ "versionOptions" => "previous",
56
+ "api-version" => "1.0"
57
+ }
58
+ item.get(versionType: :latest, versionOptions: :previous)
59
+ expect(a_request(:get, expected_url).with(query: query)).to have_been_made.once
60
+ end
61
+
62
+ it "can download the previous version before a given changeset" do
63
+ query = {
64
+ "path" => "$/Fabrikam-Fiber-TFVC/AuthSample-dev/Code/AuthSample.cs",
65
+ "versionType" => "changeset",
66
+ "version" => 1000,
67
+ "versionOptions" => "previous",
68
+ "api-version" => "1.0"
69
+ }
70
+ item.get(versionType: :changeset, version: 1000, versionOptions: :previous)
71
+ expect(a_request(:get, expected_url).with(query: query)).to have_been_made.once
72
+ end
73
+ end
74
+ # rubocop:enable Metrics/BlockLength
data/spec/vsts_spec.rb ADDED
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe VSTS do
4
+ describe 'versioning' do
5
+ it 'has a proper version' do
6
+ expect(VSTS::VERSION).to match(/\A\d+\.\d+\.\d+(-\w+)?\z/)
7
+ end
8
+ end
9
+
10
+ describe 'logging' do
11
+ it 'has a logger' do
12
+ expect(described_class.logger).to be_a(Logger)
13
+ end
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,253 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby_vsts
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Gabor Lengyel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDhTCCAm2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMRIwEAYDVQQDDAlydWJ5
14
+ X3ZzdHMxGTAXBgoJkiaJk/IsZAEZFglwcm9kZXhpdHkxEzARBgoJkiaJk/IsZAEZ
15
+ FgNjb20wHhcNMTcwNDEyMDk1MzE1WhcNMTgwNDEyMDk1MzE1WjBEMRIwEAYDVQQD
16
+ DAlydWJ5X3ZzdHMxGTAXBgoJkiaJk/IsZAEZFglwcm9kZXhpdHkxEzARBgoJkiaJ
17
+ k/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCnth7a
18
+ Innh/5+zT5rdwHMySmQG2qyuNh5ammn4ZleFvkZxDPpFb5Kn+BeoR8O3OWEe5WEs
19
+ 4FUR/43Ow1HzYMIJIIb6MxNZyZQj6Bm+cKZPctL/h0KjC7kG+2aRdUCsfFKoZvMZ
20
+ 69yHxtArNtbt6dIRsic8CHioQe0i6/7BVD/1OKKt600dt1K1zf7j7T8xWIdCwbO8
21
+ zWE4GpEBnEA4mBPMKqAZmd+DsqrbCWPie8TdfGeWo71/7rUuCbAUpMq4Rh3SpmfV
22
+ t0OQMShhuAaLoRLuIZ48hiC3ELAr9ZCK8rn5Ci2trLEVjyOvbq/QnwnGspydlyaN
23
+ xzGpH5p82DwcUP5TAgMBAAGjgYEwfzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAd
24
+ BgNVHQ4EFgQUYZTJdcOOpive/ZTgo5EYhS98qUUwIgYDVR0RBBswGYEXcnVieV92
25
+ c3RzQHByb2RleGl0eS5jb20wIgYDVR0SBBswGYEXcnVieV92c3RzQHByb2RleGl0
26
+ eS5jb20wDQYJKoZIhvcNAQEFBQADggEBAFiM7TEAsjlwjCyCMlzw0Yq/igWgaaFP
27
+ of+iPXZUC49YMTpXnQjNl9sE+cxHzkJzyM00YdeJ18DDtquIZ44Hdd30J9oleJ5g
28
+ DgGCX4bCKg5WTBwqvd0ivATn9uxDxLF1VP/cl1MJPXhW8+Bhq2FzbyWvQuxHeFsI
29
+ jJNJdpaL4UgxvhYECxAd1gzvIpRFbSqJJZVr8T4tYjfxyaGJxf9T5GbtYazYcRmP
30
+ Pfk9fa2jjnmyUPewuJZHmwArB9oRryAdwWtOsvVZHZ1ulcmW+Pbo2IiYQHvl1zQH
31
+ Z5Mw91gFnDov+9F9be4W5sZmbj640vetlJGLdMFheEZ2HSX+4fEZu1k=
32
+ -----END CERTIFICATE-----
33
+ date: 2017-04-12 00:00:00.000000000 Z
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rest-client
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '2.0'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '2.0'
49
+ - !ruby/object:Gem::Dependency
50
+ name: bundler
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.14'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.14'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rake
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '12.0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '12.0'
77
+ - !ruby/object:Gem::Dependency
78
+ name: rspec
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '3.5'
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '3.5'
91
+ - !ruby/object:Gem::Dependency
92
+ name: webmock
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '3.0'
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '3.0'
105
+ - !ruby/object:Gem::Dependency
106
+ name: simplecov
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '0.13'
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '0.13'
119
+ - !ruby/object:Gem::Dependency
120
+ name: simplecov-json
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '0.2'
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '0.2'
133
+ - !ruby/object:Gem::Dependency
134
+ name: rubocop
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '0.48'
140
+ type: :development
141
+ prerelease: false
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '0.48'
147
+ - !ruby/object:Gem::Dependency
148
+ name: rubocop-rspec
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '1.15'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: '1.15'
161
+ - !ruby/object:Gem::Dependency
162
+ name: codeclimate-test-reporter
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: '1.0'
168
+ type: :development
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: '1.0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: yard
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - "~>"
180
+ - !ruby/object:Gem::Version
181
+ version: '0.9'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - "~>"
187
+ - !ruby/object:Gem::Version
188
+ version: '0.9'
189
+ description: |2
190
+ An API client to the Microsoft Visual Studio online Rest APIs. It can connect to VSTS via the public API
191
+ and query VSTS with a personal access token. May also work with TFS.
192
+ email: ruby_vsts@prodexity.com
193
+ executables: []
194
+ extensions: []
195
+ extra_rdoc_files: []
196
+ files:
197
+ - ".codeclimate.yml"
198
+ - ".gitignore"
199
+ - ".rspec"
200
+ - ".rubocop.yml"
201
+ - ".yardopts"
202
+ - Gemfile
203
+ - LICENSE.txt
204
+ - README.md
205
+ - Rakefile
206
+ - certs/ruby_vsts-gem-public_cert.pem
207
+ - lib/ruby_vsts.rb
208
+ - lib/vsts/api_client.rb
209
+ - lib/vsts/api_response.rb
210
+ - lib/vsts/base_model.rb
211
+ - lib/vsts/change.rb
212
+ - lib/vsts/changeset.rb
213
+ - lib/vsts/configuration.rb
214
+ - lib/vsts/identity.rb
215
+ - lib/vsts/item.rb
216
+ - lib/vsts/version.rb
217
+ - ruby_vsts.gemspec
218
+ - spec/fixtures/tfvc_changeset_by_id.json
219
+ - spec/fixtures/tfvc_changeset_changes.json
220
+ - spec/fixtures/tfvc_changesets_list.json
221
+ - spec/spec_helper.rb
222
+ - spec/vsts/base_model_spec.rb
223
+ - spec/vsts/change_spec.rb
224
+ - spec/vsts/changeset_spec.rb
225
+ - spec/vsts/configuration_spec.rb
226
+ - spec/vsts/item_spec.rb
227
+ - spec/vsts_spec.rb
228
+ homepage: https://github.com/prodexity/ruby_vsts/
229
+ licenses:
230
+ - MIT
231
+ metadata: {}
232
+ post_install_message:
233
+ rdoc_options: []
234
+ require_paths:
235
+ - lib
236
+ required_ruby_version: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ version: '0'
241
+ required_rubygems_version: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ requirements: []
247
+ rubyforge_project:
248
+ rubygems_version: 2.5.1
249
+ signing_key:
250
+ specification_version: 4
251
+ summary: An unofficial Microsoft Visual Studio Team Services (VSTS) API client in
252
+ Ruby
253
+ test_files: []