bamboo-client 0.0.3 → 0.0.4

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.
@@ -1,2 +1,4 @@
1
1
  autotest-all: --color --format pretty features
2
+ autotest-rest: --color --format pretty features/rest.feature
3
+ autotest-remote: --color --format pretty features/remote.feature
2
4
  default: --color --format progress features
@@ -0,0 +1,22 @@
1
+ Feature: Bamboo REST client
2
+ In order to know more about our build pipeline
3
+ As a Bamboo user
4
+ I want to use Bamboo's REST API
5
+
6
+ Background:
7
+ Given I am using the REST client
8
+
9
+ Scenario: Fetch plans
10
+ When I fetch all the plans
11
+ Then I should get a list of plans
12
+ And all plans should have a key
13
+
14
+ Scenario: Fetch projects
15
+ When I fetch all projects
16
+ Then I should get a list of projects
17
+ And all projects should have a key
18
+
19
+ Scenario: Fetch all builds
20
+ When I fetch all builds
21
+ Then I should get a list of builds
22
+ And all builds should have a state
@@ -12,7 +12,7 @@ end
12
12
 
13
13
  Then /^I should get a list of builds$/ do
14
14
  @builds.should_not be_empty
15
- @builds.each { |e| e.should be_kind_of(Bamboo::Client::Remote::Build) }
15
+ @builds.each { |e| e.should be_kind_of(client.class::Build) }
16
16
  end
17
17
 
18
18
  When /^I fetch a build result$/ do
@@ -0,0 +1,33 @@
1
+ When /^I fetch all the plans$/ do
2
+ @plans = client.plans
3
+ end
4
+
5
+ Then /^I should get a list of plans$/ do
6
+ @plans.should_not be_empty
7
+ @plans.each { |plan| plan.should be_kind_of(Bamboo::Client::Rest::Plan) }
8
+ end
9
+
10
+ When /^I fetch all projects$/ do
11
+ @projects = client.projects
12
+ end
13
+
14
+ Then /^I should get a list of projects$/ do
15
+ @projects.should_not be_empty
16
+ @projects.each { |pro| pro.should be_kind_of(Bamboo::Client::Rest::Project) }
17
+ end
18
+
19
+ Then /^all plans should have a key$/ do
20
+ @plans.each { |e| e.key.should be_kind_of(String) }
21
+ end
22
+
23
+ Then /^all projects should have a key$/ do
24
+ @projects.each { |e| e.key.should be_kind_of(String) }
25
+ end
26
+
27
+ When /^I fetch all builds$/ do
28
+ @builds = client.builds
29
+ end
30
+
31
+ Then /^all builds should have a state$/ do
32
+ @builds.each { |b| [:successful, :failed].should include(b.state) }
33
+ end
@@ -1,6 +1,8 @@
1
1
  $:.unshift File.expand_path("../../../lib", __FILE__)
2
2
  require "bamboo-client"
3
3
 
4
+ $DEBUG = false
5
+
4
6
  module BambooClientHelper
5
7
  attr_reader :client
6
8
 
@@ -27,4 +29,4 @@ module BambooClientHelper
27
29
  end
28
30
  end
29
31
 
30
- World(BambooClientHelper)
32
+ World(BambooClientHelper)
@@ -1,5 +1,6 @@
1
1
  require "uri"
2
2
  require "restclient"
3
+ require "time"
3
4
 
4
5
  require "bamboo-client/version"
5
6
  require "bamboo-client/http"
@@ -7,6 +8,7 @@ require "bamboo-client/abstract"
7
8
  require "bamboo-client/rest"
8
9
  require "bamboo-client/remote"
9
10
 
11
+ require "pp" if $DEBUG
10
12
 
11
13
  module Bamboo
12
14
  module Client
@@ -7,6 +7,29 @@ module Bamboo
7
7
  def initialize(url)
8
8
  @uri = URI.parse url
9
9
  end
10
+
11
+ private
12
+
13
+ def uri_for(uri_or_path, params = nil)
14
+ if uri_or_path.kind_of? URI
15
+ u = uri_or_path.dup
16
+
17
+ u.host = @uri.host
18
+ u.port = @uri.port
19
+ u.scheme = @uri.scheme
20
+ else
21
+ u = uri.dup
22
+ u.path = uri_or_path
23
+ end
24
+
25
+ u.query = query_string_for(params) if params
26
+ u.to_s
27
+ end
28
+
29
+ def query_string_for(params)
30
+ params.map { |k, v| "#{k.to_s}=#{CGI.escape(v.to_s)}" }.join('&')
31
+ end
32
+
10
33
  end # Abstract
11
34
  end # Http
12
35
  end # Client
@@ -4,6 +4,50 @@ module Bamboo
4
4
  module Client
5
5
  module Http
6
6
  class Json < Abstract
7
+ class Doc
8
+ attr_reader :data
9
+
10
+ def self.from(str)
11
+ new JSON.parse(str)
12
+ end
13
+
14
+ def initialize(data)
15
+ @data = data
16
+ pp @data if $DEBUG
17
+ end
18
+
19
+ def doc_for(key)
20
+ Doc.new @data.fetch(key)
21
+ end
22
+
23
+ def auto_expand(klass, client)
24
+ key_to_expand = @data.fetch('expand')
25
+
26
+ obj = @data[key_to_expand]
27
+ case obj
28
+ when Hash
29
+ if obj.has_key?('expand')
30
+ Doc.new(obj).auto_expand(klass, client)
31
+ else
32
+ klass.new(obj, client)
33
+ end
34
+ when Array
35
+ obj.map { |e| klass.new(e, client) }
36
+ else
37
+ raise TypeError, "don't know how to auto-expand #{obj.inspect}"
38
+ end
39
+ end
40
+ end # Doc
41
+
42
+ def post(uri_or_path, data = {})
43
+ resp = RestClient.post(uri_for(uri_or_path), data.to_json, :accept => :json, :content_type => :json)
44
+ Doc.from(resp) unless resp.empty?
45
+ end
46
+
47
+ def get(uri_or_path, params = nil)
48
+ uri = uri_for(uri_or_path, params)
49
+ Doc.from RestClient.get(uri, :accept => :json)
50
+ end
7
51
 
8
52
  end # Json
9
53
  end # Http
@@ -44,14 +44,6 @@ module Bamboo
44
44
  Doc.from RestClient.post(uri_for(path), data)
45
45
  end
46
46
 
47
- private
48
-
49
- def uri_for(path)
50
- u = uri.dup
51
- u.path = path
52
-
53
- u.to_s
54
- end
55
47
  end # Xml
56
48
  end # Http
57
49
  end # Client
@@ -8,6 +8,167 @@ module Bamboo
8
8
  #
9
9
 
10
10
  class Rest < Abstract
11
+ def initialize(http)
12
+ super
13
+ @service = "/rest/api/latest"
14
+ end
15
+
16
+ def plans
17
+ get("plan/").auto_expand Plan, @http
18
+ end
19
+
20
+ def projects
21
+ get("project/").auto_expand Project, @http
22
+ end
23
+
24
+ def builds
25
+ get("build/").auto_expand Build, @http
26
+ end
27
+
28
+ private
29
+
30
+ def get(what)
31
+ @http.get File.join(@service, what)
32
+ end
33
+
34
+ class Plan
35
+ def initialize(data, http)
36
+ @data = data
37
+ @http = http
38
+ end
39
+
40
+ def enabled?
41
+ @data['enabled']
42
+ end
43
+
44
+ def type
45
+ @data['type'].downcase.to_sym
46
+ end
47
+
48
+ def name
49
+ @data['name']
50
+ end
51
+
52
+ def key
53
+ @data['key']
54
+ end
55
+
56
+ def url
57
+ @data.fetch("link")['href']
58
+ end
59
+ end # Plan
60
+
61
+ class Project
62
+ def initialize(data, http)
63
+ @data = data
64
+ @http = http
65
+ end
66
+
67
+ def name
68
+ @data['name']
69
+ end
70
+
71
+ def key
72
+ @data['key']
73
+ end
74
+
75
+ def url
76
+ @data.fetch("link")['href']
77
+ end
78
+ end # Project
79
+
80
+ class Build
81
+ def initialize(data, http)
82
+ @data = data
83
+ @http = http
84
+
85
+ @changes = nil
86
+ end
87
+
88
+ def state
89
+ @data.fetch('state').downcase.to_sym
90
+ end
91
+
92
+ def life_cycle_state
93
+ @data.fetch("lifeCycleState").downcase.to_sym
94
+ end
95
+
96
+ def number
97
+ @data['number']
98
+ end
99
+
100
+ def key
101
+ @data['key']
102
+ end
103
+
104
+ def id
105
+ @data['id']
106
+ end
107
+
108
+ def url
109
+ @data.fetch("link")['href']
110
+ end
111
+
112
+ def uri
113
+ @uri ||= URI.parse(url)
114
+ end
115
+
116
+ def changes
117
+ @changes ||= (
118
+ doc = fetch_details("changes.change.files").doc_for('changes')
119
+ doc.auto_expand Change, @http
120
+ )
121
+ end
122
+
123
+ private
124
+
125
+ def fetch_details(expand)
126
+ @http.get(uri, :expand => expand)
127
+ end
128
+ end # Build
129
+
130
+ class Change
131
+ def initialize(data, http)
132
+ @data = data
133
+ @http = http
134
+ end
135
+
136
+ def id
137
+ @data['changesetId']
138
+ end
139
+
140
+ def date
141
+ Time.parse @data['date']
142
+ end
143
+
144
+ def author
145
+ @data['author']
146
+ end
147
+
148
+ def full_name
149
+ @data['fullName']
150
+ end
151
+
152
+ def user_name
153
+ @data['userName']
154
+ end
155
+
156
+ def comment
157
+ @data['comment']
158
+ end
159
+
160
+ def files
161
+ # could use expand here
162
+ Array(@data.fetch('files')['file']).map do |data|
163
+ {
164
+ :name => data['name'],
165
+ :revision => data['revision']
166
+ }
167
+ end
168
+ end
169
+
170
+
171
+ end # Change
11
172
 
12
173
  end # Rest
13
174
  end # Client
@@ -1,5 +1,5 @@
1
1
  module Bamboo
2
2
  module Client
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -0,0 +1,80 @@
1
+ require File.expand_path("../../../spec_helper", __FILE__)
2
+
3
+ module Bamboo
4
+ module Client
5
+ module Http
6
+ describe Json do
7
+ let(:url) { "http://example.com" }
8
+ let(:json) { Json.new(url) }
9
+
10
+ it "does a GET" do
11
+ RestClient.should_receive(:get).with(
12
+ "#{url}/", :accept => :json
13
+ ).and_return('{"some": "data"}')
14
+
15
+ doc = json.get "/"
16
+ doc.should be_kind_of(Json::Doc)
17
+ end
18
+
19
+ it "does a POST" do
20
+ RestClient.should_receive(:post).with(
21
+ "#{url}/", '{"some":"data"}', :accept => :json, :content_type => :json
22
+ ).and_return('')
23
+
24
+ json.post("/", :some => "data").should be_nil
25
+ end
26
+ end
27
+
28
+ describe Json::Doc do
29
+ it "auto expands a one-level expansion" do
30
+ doc = Json::Doc.new(
31
+ "expand" => "a",
32
+ "a" => {"some" => "data"}
33
+ )
34
+
35
+ doc.auto_expand(SpecHelper::Wrapper, nil).obj.should == {"some" => "data"}
36
+ end
37
+
38
+ it "auto expands Arrays" do
39
+ expected = [{"some" => "data"}, {"something" => "else"}]
40
+
41
+ doc = Json::Doc.new(
42
+ "expand" => "a",
43
+ "a" => expected
44
+ )
45
+
46
+ actual = doc.auto_expand(SpecHelper::Wrapper, nil).map { |e| e.obj }
47
+ actual.should == expected
48
+ end
49
+
50
+ it "auto-expands the next expansion level" do
51
+ doc = Json::Doc.new(
52
+ "expand" => "a",
53
+ "a" => {
54
+ "expand" => "b",
55
+ "b" => %w[foo bar]
56
+ }
57
+ )
58
+
59
+ actual = doc.auto_expand(SpecHelper::Wrapper, nil).map { |e| e.obj }
60
+ actual.should == %w[foo bar]
61
+ end
62
+
63
+ it "raises a TypeError if an object can't be expanded" do
64
+ doc = Json::Doc.new(
65
+ "expand" => "a",
66
+ "a" => 1
67
+ )
68
+
69
+ lambda { doc.auto_expand(SpecHelper::Wrapper, nil) }.should raise_error(TypeError)
70
+ end
71
+
72
+ it "returns a doc for the given key" do
73
+ doc = Json::Doc.new("foo" => {"bar" => "baz"})
74
+ doc.doc_for("foo").data.should == {"bar" => "baz"}
75
+ end
76
+ end
77
+
78
+ end # Http
79
+ end # Client
80
+ end # Bamboo
@@ -19,8 +19,8 @@ module Bamboo
19
19
  end
20
20
 
21
21
  describe Xml::Doc do
22
- let(:wrapped) {
23
- m = mock("nokogiri document")
22
+ let(:wrapped) {
23
+ m = mock("nokogiri document")
24
24
  m.stub!(:css).with("errors error").and_return []
25
25
  m
26
26
  }
@@ -34,6 +34,11 @@ module Bamboo
34
34
  doc.text_for("some selector").should == "bar"
35
35
  end
36
36
 
37
+ it "checks for errors in the given document" do
38
+ wrapped.should_receive(:css).with("errors error").and_return [mock(:text => "error!")]
39
+ lambda { doc.text_for "some selector" }.should raise_error(Bamboo::Client::Error)
40
+ end
41
+
37
42
  it "returns an instance of the given class for each node matching the selector" do
38
43
  wrapped.should_receive(:css).with("selector").and_return(['node1', 'node2'])
39
44
 
@@ -4,8 +4,148 @@ module Bamboo
4
4
  module Client
5
5
  describe Rest do
6
6
  let(:http) { mock(Http::Json) }
7
+ let(:document) { mock(Http::Json::Doc) }
7
8
  let(:client) { Rest.new(http) }
8
9
 
9
- end
10
- end
11
- end
10
+ it "should be able to fetch plans" do
11
+ document.should_receive(:auto_expand).with(Rest::Plan, http).and_return %w[foo bar]
12
+
13
+ http.should_receive(:get).with(
14
+ "/rest/api/latest/plan/"
15
+ ).and_return(document)
16
+
17
+ client.plans.should == %w[foo bar]
18
+ end
19
+
20
+ it "should be able to fetch projects" do
21
+ document.should_receive(:auto_expand).with(Rest::Project, http).and_return %w[foo bar]
22
+
23
+ http.should_receive(:get).with("/rest/api/latest/project/").
24
+ and_return(document)
25
+
26
+ client.projects.should == %w[foo bar]
27
+ end
28
+
29
+ it "should be able to fetch builds" do
30
+ document.should_receive(:auto_expand).with(Rest::Build, http).and_return %w[foo bar]
31
+
32
+ http.should_receive(:get).with("/rest/api/latest/build/").
33
+ and_return(document)
34
+
35
+ client.builds.should == %w[foo bar]
36
+ end
37
+
38
+ describe Rest::Plan do
39
+ let(:data) { json_fixture("plan") }
40
+ let(:plan) { Rest::Plan.new data, http }
41
+
42
+ it "knows if the plan is enabled" do
43
+ plan.should be_enabled
44
+ end
45
+
46
+ it "has a type" do
47
+ plan.type.should == :chain
48
+ end
49
+
50
+ it "has a name" do
51
+ plan.name.should == "Selenium 2 Ruby - WebDriver Remote Client Tests - Windows"
52
+ end
53
+
54
+ it "has a key" do
55
+ plan.key.should == "S2RB-REMWIN"
56
+ end
57
+
58
+ it "has a URL" do
59
+ plan.url.should == "http://xserve.openqa.org:8085/rest/api/latest/plan/S2RB-REMWIN"
60
+ end
61
+ end # Plan
62
+
63
+ describe Rest::Project do
64
+ let(:data) { json_fixture("project") }
65
+ let(:plan) { Rest::Project.new data, http }
66
+
67
+ it "has a name" do
68
+ plan.name.should == "Selenium 2 Java"
69
+ end
70
+
71
+ it "has a key" do
72
+ plan.key.should == "S2J"
73
+ end
74
+
75
+ it "has a URL" do
76
+ plan.url.should == "http://xserve.openqa.org:8085/rest/api/latest/project/S2J"
77
+ end
78
+ end
79
+
80
+ describe Rest::Build do
81
+ let(:data) { json_fixture("build") }
82
+ let(:build) { Rest::Build.new data, http }
83
+
84
+ it "has a key" do
85
+ build.key.should == "IAD-DEFAULT-5388"
86
+ end
87
+
88
+ it "has a state" do
89
+ build.state.should == :successful
90
+ end
91
+
92
+ it "has an id" do
93
+ build.id.should == 8487295
94
+ end
95
+
96
+ it "has a number" do
97
+ build.number.should == 5388
98
+ end
99
+
100
+ it "has a life cycle state" do
101
+ build.life_cycle_state.should == :finished
102
+ end
103
+
104
+ it "has a URL" do
105
+ build.url.should == "http://localhost:8085/rest/api/latest/result/IAD-DEFAULT-5388"
106
+ end
107
+
108
+ it "has a list of changes" do
109
+ # TODO: arg expectation
110
+ http.should_receive(:get).and_return Http::Json::Doc.new(json_fixture("build_with_changes"))
111
+ build.changes.first.should be_kind_of(Rest::Change)
112
+ end
113
+ end
114
+
115
+ describe Rest::Change do
116
+ let(:data) { json_fixture("change") }
117
+ let(:change) { Rest::Change.new data, http }
118
+
119
+ it "has an id" do
120
+ change.id.should == "131"
121
+ end
122
+
123
+ it "has a date" do
124
+ change.date.should == Time.parse("2011-01-20T10:04:47.000+01:00")
125
+ end
126
+
127
+ it "has an author" do
128
+ change.author.should == "joedev"
129
+ end
130
+
131
+ it "has a full name" do
132
+ change.full_name.should == "Joe Developer"
133
+ end
134
+
135
+ it "has a username" do
136
+ change.user_name.should == "joedev"
137
+ end
138
+
139
+ it "has a comment" do
140
+ change.comment.should == "Fixed the config thing."
141
+ end
142
+
143
+ it "has a list of files" do
144
+ change.files.first.should == {:name => "/trunk/server/src/main/resources/some-config.ini", :revision => "131"}
145
+ end
146
+ end
147
+
148
+
149
+ end # Rest
150
+ end # Client
151
+ end # Bamboo
@@ -0,0 +1,12 @@
1
+ {
2
+ "type": "restChainResult",
3
+ "id": 8487295,
4
+ "number": 5388,
5
+ "lifeCycleState": "Finished",
6
+ "state": "Successful",
7
+ "key": "IAD-DEFAULT-5388",
8
+ "link": {
9
+ "rel": "self",
10
+ "href": "http://localhost:8085/rest/api/latest/result/IAD-DEFAULT-5388"
11
+ }
12
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "id": 8159340,
3
+ "number": 29,
4
+ "lifeCycleState": "Finished",
5
+ "state": "Successful",
6
+ "key": "ADS-DEFAULT-29",
7
+ "expand": "changes,metadata,stages,labels,jiraIssues,comments",
8
+ "link": {
9
+ "rel": "self",
10
+ "href": "http://localhost:8085/rest/api/latest/build/ADS-DEFAULT-29"
11
+ },
12
+ "buildStartedTime": "2011-01-20T10:08:41.000+01:00",
13
+ "buildCompletedTime": "2011-01-20T10:09:32.000+01:00",
14
+ "buildDurationInSeconds": 51,
15
+ "buildDuration": 51074,
16
+ "buildDurationDescription": "51 seconds",
17
+ "buildRelativeTime": "4 weeks ago",
18
+ "vcsRevisionKey": "131",
19
+ "buildTestSummary": "13 passed",
20
+ "successfulTestCount": 13,
21
+ "failedTestCount": 0,
22
+ "buildReason": "Code has changed",
23
+ "stages": {
24
+ "size": 1,
25
+ "max-result": 1,
26
+ "start-index": 0
27
+ },
28
+ "labels": {
29
+ "size": 0,
30
+ "max-result": 0,
31
+ "start-index": 0
32
+ },
33
+ "jiraIssues": {
34
+ "size": 1,
35
+ "max-result": 1,
36
+ "start-index": 0
37
+ },
38
+ "comments": {
39
+ "size": 0,
40
+ "max-result": 0,
41
+ "start-index": 0
42
+ },
43
+ "changes": {
44
+ "expand": "change",
45
+ "size": 1,
46
+ "max-result": 1,
47
+ "start-index": 0,
48
+ "change": [
49
+ {
50
+ "changesetId": "131",
51
+ "fullName": "Joe Developer",
52
+ "userName": "joedev",
53
+ "author": "joedev",
54
+ "expand": "files",
55
+ "comment": "Fixed the config thing.",
56
+ "date": "2011-01-20T10:04:47.000+01:00",
57
+ "files": {
58
+ "size": 1,
59
+ "max-result": 1,
60
+ "start-index": 0,
61
+ "file": [
62
+ {
63
+ "name": "/trunk/server/src/main/resources/some-config.ini",
64
+ "revision": "131"
65
+ }
66
+ ]
67
+ }
68
+ }
69
+ ]
70
+ },
71
+ "metadata": {
72
+ "size": 7,
73
+ "max-result": 7,
74
+ "start-index": 0
75
+ }
76
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "changesetId": "131",
3
+ "fullName": "Joe Developer",
4
+ "userName": "joedev",
5
+ "author": "joedev",
6
+ "expand": "files",
7
+ "comment": "Fixed the config thing.",
8
+ "date": "2011-01-20T10:04:47.000+01:00",
9
+ "files": {
10
+ "size": 1,
11
+ "max-result": 1,
12
+ "start-index": 0,
13
+ "file": [
14
+ {
15
+ "name": "/trunk/server/src/main/resources/some-config.ini",
16
+ "revision": "131"
17
+ }
18
+ ]
19
+ }
20
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "enabled":true,
3
+ "type":"chain",
4
+ "name":"Selenium 2 Ruby - WebDriver Remote Client Tests - Windows",
5
+ "key":"S2RB-REMWIN",
6
+ "link":
7
+ {
8
+ "rel":"self",
9
+ "href":"http://xserve.openqa.org:8085/rest/api/latest/plan/S2RB-REMWIN"
10
+ }
11
+ }
12
+
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "Selenium 2 Java",
3
+ "key": "S2J",
4
+ "link": {
5
+ "rel": "self",
6
+ "href": "http://xserve.openqa.org:8085/rest/api/latest/project/S2J"
7
+ }
8
+ }
@@ -16,6 +16,12 @@ module Bamboo::Client::SpecHelper
16
16
  Nokogiri.XML File.read(path)
17
17
  end
18
18
 
19
+ def json_fixture(name)
20
+ path = File.join fixture_path("#{name}.json")
21
+
22
+ JSON.parse File.read(path)
23
+ end
24
+
19
25
  def fixture_path(file)
20
26
  dir = File.expand_path("../fixtures", __FILE__)
21
27
 
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bamboo-client
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 3
9
- version: 0.0.3
4
+ prerelease:
5
+ version: 0.0.4
10
6
  platform: ruby
11
7
  authors:
12
8
  - Jari Bakken
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-01-19 00:00:00 +01:00
13
+ date: 2011-02-17 00:00:00 +01:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -25,8 +21,6 @@ dependencies:
25
21
  requirements:
26
22
  - - ">="
27
23
  - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
24
  version: "0"
31
25
  type: :development
32
26
  version_requirements: *id001
@@ -38,8 +32,6 @@ dependencies:
38
32
  requirements:
39
33
  - - ">="
40
34
  - !ruby/object:Gem::Version
41
- segments:
42
- - 0
43
35
  version: "0"
44
36
  type: :development
45
37
  version_requirements: *id002
@@ -51,8 +43,6 @@ dependencies:
51
43
  requirements:
52
44
  - - ">="
53
45
  - !ruby/object:Gem::Version
54
- segments:
55
- - 0
56
46
  version: "0"
57
47
  type: :development
58
48
  version_requirements: *id003
@@ -64,8 +54,6 @@ dependencies:
64
54
  requirements:
65
55
  - - ">="
66
56
  - !ruby/object:Gem::Version
67
- segments:
68
- - 0
69
57
  version: "0"
70
58
  type: :runtime
71
59
  version_requirements: *id004
@@ -77,8 +65,6 @@ dependencies:
77
65
  requirements:
78
66
  - - ">="
79
67
  - !ruby/object:Gem::Version
80
- segments:
81
- - 0
82
68
  version: "0"
83
69
  type: :runtime
84
70
  version_requirements: *id005
@@ -90,8 +76,6 @@ dependencies:
90
76
  requirements:
91
77
  - - ">="
92
78
  - !ruby/object:Gem::Version
93
- segments:
94
- - 0
95
79
  version: "0"
96
80
  type: :runtime
97
81
  version_requirements: *id006
@@ -114,7 +98,9 @@ files:
114
98
  - bamboo-client.gemspec
115
99
  - cucumber.yml
116
100
  - features/remote.feature
101
+ - features/rest.feature
117
102
  - features/step_definitions/remote_steps.rb
103
+ - features/step_definitions/rest_steps.rb
118
104
  - features/support/env.rb
119
105
  - lib/bamboo-client.rb
120
106
  - lib/bamboo-client/abstract.rb
@@ -126,11 +112,17 @@ files:
126
112
  - lib/bamboo-client/rest.rb
127
113
  - lib/bamboo-client/version.rb
128
114
  - spec/bamboo-client/client_spec.rb
115
+ - spec/bamboo-client/http/json_spec.rb
129
116
  - spec/bamboo-client/http/xml_spec.rb
130
117
  - spec/bamboo-client/remote_spec.rb
131
118
  - spec/bamboo-client/rest_spec.rb
119
+ - spec/fixtures/build.json
132
120
  - spec/fixtures/build.xml
133
121
  - spec/fixtures/build_result.xml
122
+ - spec/fixtures/build_with_changes.json
123
+ - spec/fixtures/change.json
124
+ - spec/fixtures/plan.json
125
+ - spec/fixtures/project.json
134
126
  - spec/spec_helper.rb
135
127
  has_rdoc: true
136
128
  homepage: ""
@@ -146,32 +138,36 @@ required_ruby_version: !ruby/object:Gem::Requirement
146
138
  requirements:
147
139
  - - ">="
148
140
  - !ruby/object:Gem::Version
149
- segments:
150
- - 0
151
141
  version: "0"
152
142
  required_rubygems_version: !ruby/object:Gem::Requirement
153
143
  none: false
154
144
  requirements:
155
145
  - - ">="
156
146
  - !ruby/object:Gem::Version
157
- segments:
158
- - 0
159
147
  version: "0"
160
148
  requirements: []
161
149
 
162
150
  rubyforge_project: bamboo-client
163
- rubygems_version: 1.3.7
151
+ rubygems_version: 1.5.2
164
152
  signing_key:
165
153
  specification_version: 3
166
154
  summary: Ruby client for Atlassian Bamboo's REST APIs
167
155
  test_files:
168
156
  - features/remote.feature
157
+ - features/rest.feature
169
158
  - features/step_definitions/remote_steps.rb
159
+ - features/step_definitions/rest_steps.rb
170
160
  - features/support/env.rb
171
161
  - spec/bamboo-client/client_spec.rb
162
+ - spec/bamboo-client/http/json_spec.rb
172
163
  - spec/bamboo-client/http/xml_spec.rb
173
164
  - spec/bamboo-client/remote_spec.rb
174
165
  - spec/bamboo-client/rest_spec.rb
166
+ - spec/fixtures/build.json
175
167
  - spec/fixtures/build.xml
176
168
  - spec/fixtures/build_result.xml
169
+ - spec/fixtures/build_with_changes.json
170
+ - spec/fixtures/change.json
171
+ - spec/fixtures/plan.json
172
+ - spec/fixtures/project.json
177
173
  - spec/spec_helper.rb