hudson-remote-api 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -20,4 +20,9 @@ Hudson::Job.list_active
20
20
 
21
21
  # print the last build number of a job
22
22
  j = Hudson::Job.new('jobname')
23
- puts j.last_build
23
+ puts j.last_build
24
+
25
+ # if you are using hudson.plugins.git.GitSCM
26
+ j.repository_url = { :url => 'https://github.com/beeplove/hudson-remote-api-mkhan.git', :branch => 'origin/master' }
27
+ # or, only to change branch
28
+ j.repository_url = { :branch => 'origin/master' }
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
+ require 'rake/testtask'
3
4
 
4
5
  begin
5
6
  require 'jeweler'
@@ -17,12 +18,9 @@ rescue LoadError
17
18
  puts "Jeweler not available. Install it with: sudo gem install jeweler -s http://gemcutter.org"
18
19
  end
19
20
 
20
- namespace :test do
21
- desc "Run all tests"
22
- task :all do
23
- test_files = Dir.glob("test/*.rb")
24
- test_files.each{|f| require f}
25
- end
21
+ Rake::TestTask.new do |t|
22
+ t.libs << 'test'
26
23
  end
27
24
 
28
- Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
25
+ desc "Run tests"
26
+ task :default => :test
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.2
1
+ 0.5.0
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{hudson-remote-api}
8
- s.version = "0.4.2"
7
+ s.name = "hudson-remote-api"
8
+ s.version = "0.5.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Dru Ibarra}]
12
- s.date = %q{2012-03-02}
13
- s.description = %q{Connect to Hudson's remote web API}
14
- s.email = %q{Druwerd@gmail.com}
11
+ s.authors = ["Dru Ibarra"]
12
+ s.date = "2012-06-26"
13
+ s.description = "Connect to Hudson's remote web API"
14
+ s.email = "Druwerd@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README"
@@ -36,11 +36,11 @@ Gem::Specification.new do |s|
36
36
  "test/test_hudson_job.rb",
37
37
  "test/test_hudson_multicast.rb"
38
38
  ]
39
- s.homepage = %q{http://github.com/Druwerd/hudson-remote-api}
40
- s.require_paths = [%q{lib}]
41
- s.rubyforge_project = %q{hudson-remote-api}
42
- s.rubygems_version = %q{1.8.6}
43
- s.summary = %q{Connect to Hudson's remote web API}
39
+ s.homepage = "http://github.com/Druwerd/hudson-remote-api"
40
+ s.require_paths = ["lib"]
41
+ s.rubyforge_project = "hudson-remote-api"
42
+ s.rubygems_version = "1.8.24"
43
+ s.summary = "Connect to Hudson's remote web API"
44
44
 
45
45
  if s.respond_to? :specification_version then
46
46
  s.specification_version = 3
@@ -6,6 +6,24 @@ module Hudson
6
6
  attr_reader :color, :last_build, :last_completed_build, :last_failed_build, :last_stable_build, :last_successful_build, :last_unsuccessful_build, :next_build_number
7
7
  attr_reader :builds_list
8
8
 
9
+ SVN_SCM_CONF = <<-SVN_SCM_STRING
10
+ <scm class="hudson.scm.SubversionSCM">
11
+ <locations>
12
+ <hudson.scm.SubversionSCM_-ModuleLocation>
13
+ <remote>%s</remote>
14
+ <local>.</local>
15
+ </hudson.scm.SubversionSCM_-ModuleLocation>
16
+ </locations>
17
+ <excludedRegions/>
18
+ <includedRegions/>
19
+ <excludedUsers/>
20
+ <excludedRevprop/>
21
+ <excludedCommitMessages/>
22
+ <workspaceUpdater class="hudson.scm.subversion.UpdateUpdater"/>
23
+ </scm>
24
+ SVN_SCM_STRING
25
+
26
+
9
27
  # List all Hudson jobs
10
28
  def self.list()
11
29
  xml = get_xml(@@hudson_xml_api_path)
@@ -44,7 +62,7 @@ module Hudson
44
62
  def initialize(name, config=nil)
45
63
  name.strip!
46
64
  Hudson::Job.fetch_crumb
47
- if Job.list.include?(name)
65
+ if Job.list.include?(name) # job already in Jenkins
48
66
  @name = name
49
67
  load_xml_api
50
68
  load_config
@@ -71,24 +89,38 @@ module Hudson
71
89
  end
72
90
 
73
91
  # Load data from Hudson's Job configuration settings into class variables
74
- def load_config()
92
+ def load_config
75
93
  @config = get_xml(@xml_api_config_path)
76
94
  @config_doc = REXML::Document.new(@config)
77
-
78
- @config_doc = REXML::Document.new(@config)
79
- if !@config_doc.elements["/project/scm/locations/hudson.scm.SubversionSCM_-ModuleLocation/remote"].nil?
80
- @repository_url = @config_doc.elements["/project/scm/locations/hudson.scm.SubversionSCM_-ModuleLocation/remote"].text || ""
81
- end
95
+
82
96
  @repository_urls = []
83
- if !@config_doc.elements["/project/scm/locations"].nil?
84
- @config_doc.elements.each("/project/scm/locations/hudson.scm.SubversionSCM_-ModuleLocation"){|e| @repository_urls << e.elements["remote"].text }
85
- end
86
- if !@config_doc.elements["/project/scm/browser/location"].nil?
87
- @repository_browser_location = @config_doc.elements["/project/scm/browser/location"].text
88
- end
89
- if !@config_doc.elements["/project/description"].nil?
97
+ if @config_doc.elements["/project/description"]
90
98
  @description = @config_doc.elements["/project/description"].text || ""
91
99
  end
100
+
101
+ if @config_doc.elements["/project/scm"].attributes['class'] == "hudson.plugins.git.GitSCM"
102
+ @git = true
103
+ @repository_url = {}
104
+ if @config_doc.elements["/project/scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url"]
105
+ @repository_url[:url] = @config_doc.elements['/project/scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url'].text || ""
106
+ end
107
+ if @config_doc.elements['/project/scm/branches/hudson.plugins.git.BranchSpec/name']
108
+ @repository_url[:branch] = @config_doc.elements['/project/scm/branches/hudson.plugins.git.BranchSpec/name'].text || ""
109
+ end
110
+ if @config_doc.elements['/project/scm/browser/url']
111
+ @repository_browser_location = @config_doc.elements['/project/scm/browser/url'].text || ""
112
+ end
113
+ else
114
+ if !@config_doc.elements["/project/scm/locations/hudson.scm.SubversionSCM_-ModuleLocation/remote"].nil?
115
+ @repository_url = @config_doc.elements["/project/scm/locations/hudson.scm.SubversionSCM_-ModuleLocation/remote"].text || ""
116
+ end
117
+ if !@config_doc.elements["/project/scm/locations"].nil?
118
+ @config_doc.elements.each("/project/scm/locations/hudson.scm.SubversionSCM_-ModuleLocation"){|e| @repository_urls << e.elements["remote"].text }
119
+ end
120
+ if !@config_doc.elements["/project/scm/browser/location"].nil?
121
+ @repository_browser_location = @config_doc.elements["/project/scm/browser/location"].text
122
+ end
123
+ end
92
124
  end
93
125
 
94
126
  def load_info()
@@ -150,10 +182,27 @@ module Hudson
150
182
 
151
183
  # Set the repository url and update on Hudson server
152
184
  def repository_url=(repository_url)
153
- return false if @repository_url.nil?
185
+ #return false if @repository_url.nil?
186
+
154
187
  @repository_url = repository_url
155
- @config_doc.elements["/project/scm/locations/hudson.scm.SubversionSCM_-ModuleLocation/remote"].text = repository_url
188
+
189
+ if @git
190
+ if repository_url[:url]
191
+ @config_doc.elements['/project/scm/userRemoteConfigs/hudson.plugins.git.UserRemoteConfig/url'].text = repository_url[:url]
192
+ end
193
+ if repository_url[:branch]
194
+ @config_doc.elements['/project/scm/branches/hudson.plugins.git.BranchSpec/name'].text = repository_url[:branch]
195
+ end
196
+ else
197
+ if @config_doc.elements["/project/scm"].attributes['class'] == "hudson.scm.NullSCM"
198
+ @config_doc.elements["/project/scm"].replace_with REXML::Document.new(SVN_SCM_CONF % repository_url)
199
+ else
200
+ @config_doc.elements["/project/scm/locations/hudson.scm.SubversionSCM_-ModuleLocation/remote"].text = repository_url
201
+ end
202
+ end
203
+
156
204
  @config = @config_doc.to_s
205
+
157
206
  update
158
207
  end
159
208
 
@@ -174,7 +223,11 @@ module Hudson
174
223
  # Set the repository browser location and update on Hudson server
175
224
  def repository_browser_location=(repository_browser_location)
176
225
  @repository_browser_location = repository_browser_location
177
- @config_doc.elements["/project/scm/browser/location"].text = repository_browser_location
226
+ if @git
227
+ @config_doc.elements['/project/scm/browser/url'].text = repository_browser_location
228
+ else
229
+ @config_doc.elements["/project/scm/browser/location"].text = repository_browser_location
230
+ end
178
231
  @config = @config_doc.to_s
179
232
  update
180
233
  end
@@ -182,6 +235,8 @@ module Hudson
182
235
  # Set the job description and update on Hudson server
183
236
  def description=(description)
184
237
  @description = description
238
+ @config_doc.elements["/project"] << REXML::Element.new("description") if @config_doc.elements["/project/description"].nil?
239
+
185
240
  @config_doc.elements["/project/description"].text = description
186
241
  @config = @config_doc.to_s
187
242
  update
@@ -11,14 +11,14 @@ class TestHudsonBuild < Test::Unit::TestCase
11
11
 
12
12
  def test_build_info
13
13
  build = Hudson::Build.new('test_job')
14
- assert_equal build.job.name, 'test_job'
14
+ assert_equal 'test_job', build.job.name
15
15
 
16
16
  assert build.number.to_i > 0, "build number test failed"
17
17
 
18
18
  assert build.revisions, "build revisions test failed"
19
19
  assert build.revisions.kind_of?(Hash), "build revisions is not an Hash"
20
20
 
21
- assert_equal build.result, "SUCCESS", "build result test failed"
21
+ assert_equal "SUCCESS", build.result, "build result test failed"
22
22
 
23
23
  assert_nil build.culprit, "build culprit test failed"
24
24
  end
@@ -3,6 +3,7 @@ $LOAD_PATH << File.dirname(__FILE__) + "/../lib"
3
3
  require 'hudson-remote-api.rb'
4
4
 
5
5
  class TestHudsonJob < Test::Unit::TestCase
6
+ TEST_SVN_REPO_URL = "http://svn.apache.org/repos/asf/subversion/trunk/doc/user/"
6
7
 
7
8
  def setup
8
9
  Hudson[:url] = "http://localhost:8080"
@@ -32,8 +33,17 @@ class TestHudsonJob < Test::Unit::TestCase
32
33
 
33
34
  def test_desc_update
34
35
  job = Hudson::Job.new('test_job')
35
- assert job.description
36
36
  assert job.description = "test"
37
+ assert job.description != nil, "Job description should not be nil"
38
+ end
39
+
40
+ def test_scm_url
41
+ job = Hudson::Job.new('test_svn_job')
42
+ job.build
43
+ assert job.repository_url = TEST_SVN_REPO_URL
44
+
45
+ job = Hudson::Job.new('test_svn_job')
46
+ assert_equal TEST_SVN_REPO_URL, job.repository_url
37
47
  end
38
48
 
39
49
  def test_new
metadata CHANGED
@@ -1,33 +1,24 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: hudson-remote-api
3
- version: !ruby/object:Gem::Version
4
- hash: 11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 2
10
- version: 0.4.2
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Dru Ibarra
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-03-02 00:00:00 Z
12
+ date: 2012-06-26 00:00:00.000000000 Z
19
13
  dependencies: []
20
-
21
14
  description: Connect to Hudson's remote web API
22
15
  email: Druwerd@gmail.com
23
16
  executables: []
24
-
25
17
  extensions: []
26
-
27
- extra_rdoc_files:
18
+ extra_rdoc_files:
28
19
  - LICENSE
29
20
  - README
30
- files:
21
+ files:
31
22
  - LICENSE
32
23
  - README
33
24
  - Rakefile
@@ -48,36 +39,26 @@ files:
48
39
  - test/test_hudson_multicast.rb
49
40
  homepage: http://github.com/Druwerd/hudson-remote-api
50
41
  licenses: []
51
-
52
42
  post_install_message:
53
43
  rdoc_options: []
54
-
55
- require_paths:
44
+ require_paths:
56
45
  - lib
57
- required_ruby_version: !ruby/object:Gem::Requirement
46
+ required_ruby_version: !ruby/object:Gem::Requirement
58
47
  none: false
59
- requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- hash: 3
63
- segments:
64
- - 0
65
- version: "0"
66
- required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ! '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
53
  none: false
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- hash: 3
72
- segments:
73
- - 0
74
- version: "0"
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
75
58
  requirements: []
76
-
77
59
  rubyforge_project: hudson-remote-api
78
- rubygems_version: 1.8.6
60
+ rubygems_version: 1.8.24
79
61
  signing_key:
80
62
  specification_version: 3
81
63
  summary: Connect to Hudson's remote web API
82
64
  test_files: []
83
-