hudkins 0.0.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.
- data/.autotest +23 -0
- data/.gemtest +0 -0
- data/History.txt +6 -0
- data/Manifest.txt +29 -0
- data/README.txt +98 -0
- data/Rakefile +25 -0
- data/bin/hudkins +5 -0
- data/lib/assets/config.xml +30 -0
- data/lib/assets/config_snippets/builders.xml +5 -0
- data/lib/assets/free_style_project.xml.erb +14 -0
- data/lib/assets/hudkinsrc +4 -0
- data/lib/hudkins.rb +263 -0
- data/lib/hudkins/command.rb +127 -0
- data/lib/hudkins/command/exec.rb +113 -0
- data/lib/hudkins/command/irb_start.rb +86 -0
- data/lib/hudkins/common.rb +69 -0
- data/lib/hudkins/errors.rb +7 -0
- data/lib/hudkins/job.rb +168 -0
- data/lib/hudkins/jobs.rb +86 -0
- data/lib/hudkins/mixin.rb +103 -0
- data/lib/hudkins/rake.rb +20 -0
- data/lib/hudkins/restclient.rb +130 -0
- data/lib/hudkins/sysinfo.rb +11 -0
- data/test/fixtures/config.erb +30 -0
- data/test/fixtures/jobs.erb +22 -0
- data/test/fixtures/new_project_config.erb +14 -0
- data/test/test_helper.rb +50 -0
- data/test/unit/hudkins/test_job.rb +65 -0
- data/test/unit/hudkins/test_jobs.rb +27 -0
- data/test/unit/test_hudkins.rb +74 -0
- metadata +153 -0
@@ -0,0 +1,65 @@
|
|
1
|
+
require "test/test_helper"
|
2
|
+
require "hudkins"
|
3
|
+
|
4
|
+
class TestHudkinsJob < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@data = {"name"=>"project_name", "url"=>"http://example.com/job/project_name/", "color"=>"blue"}
|
7
|
+
@host = "http://example.com"
|
8
|
+
hudkins_setup
|
9
|
+
@jobs = @hud.jobs
|
10
|
+
@job = @jobs.find_by_name "project_name"
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_new
|
14
|
+
job = Hudkins::Job.new @hud, @data
|
15
|
+
assert_equal %q(/job/project_name/), job.path
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_sorting
|
19
|
+
assert @jobs.each.first < @jobs.each.last,
|
20
|
+
"must respond to sorting methods.\nfirst job's name should be less than second job's name"
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_update_config_updates_config_instance_variable
|
24
|
+
@job.instance_variable_set "@config", nil
|
25
|
+
@hud.expects(:get_parsed).with( @job.path + "/config.xml", optionally(kind_of(Hash)) ).returns( "test/config" )
|
26
|
+
@job.update_config
|
27
|
+
assert_equal "test/config", @job.instance_variable_get( "@config" )
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_config
|
31
|
+
mock_rc_resource(:get, mock_files.config, :xml)
|
32
|
+
#@hud.expects(:get).once.returns( mock_files.config )
|
33
|
+
@job.config
|
34
|
+
@job.config
|
35
|
+
assert_kind_of Nokogiri::XML::Document, @job.config
|
36
|
+
end
|
37
|
+
|
38
|
+
# should we post if @config hasn't changed?
|
39
|
+
# we could set a dirty? flag whenever we update it...
|
40
|
+
|
41
|
+
def test_post_config!
|
42
|
+
# make sure we set @config
|
43
|
+
@job.stubs(:update_config).returns( "mock/config" )
|
44
|
+
@job.config
|
45
|
+
@hud.expects(:post).with( @job.path + "/config.xml", "mock/config", optionally(kind_of(Hash)))
|
46
|
+
@job.post_config!
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_scm_url
|
50
|
+
mock_rc_resource(:get, mock_files.config, :xml)
|
51
|
+
assert_equal "https://subversion/project_name/branches/current_branch", @job.scm_url
|
52
|
+
end
|
53
|
+
|
54
|
+
#def test_scm_update
|
55
|
+
#@hud.expects(:get).at_least_once.with( "/job/project_name/" + "/config.xml").returns( mock_config )
|
56
|
+
#old_url = @job.scm_url
|
57
|
+
#new_url = "http://svn/foobar"
|
58
|
+
#@hud.expects(:post).with( @job.path + "/config.xml", anything )
|
59
|
+
#@job.scm_url = new_url
|
60
|
+
#new_config = @job.config
|
61
|
+
#@hud.expects(:get).with( "/job/project_name/" + "/config.xml").returns( new_config.to_s )
|
62
|
+
#ret = @job.update_scm!
|
63
|
+
#assert_equal new_url, ret
|
64
|
+
#end
|
65
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "test/test_helper"
|
2
|
+
require "hudkins"
|
3
|
+
|
4
|
+
class TestHudkinsJobs < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
hudkins_setup
|
7
|
+
@jobs = @hud.jobs
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_new
|
11
|
+
assert_kind_of Hudkins::Jobs, @jobs
|
12
|
+
assert_kind_of Enumerable, @jobs, "must extend enumerable."
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_find_by
|
16
|
+
# not sure how to test this better. maybe these functions are dumb.
|
17
|
+
job = @jobs.find_by_url "http://example.com/job/project_name/"
|
18
|
+
assert_match /^project_name$/, job.name
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_respond_to?
|
22
|
+
@jobs.respond_to? "find_by_name"
|
23
|
+
@jobs.respond_to? "find_by_url"
|
24
|
+
@jobs.respond_to? "each"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require "test/test_helper"
|
2
|
+
require "hudkins"
|
3
|
+
|
4
|
+
class TestHudkins < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@host = "http://example.com"
|
7
|
+
@hud = Hudkins.new @host
|
8
|
+
@mock_response = mock("response").responds_like(Hudkins::Response.new 1,2,3)
|
9
|
+
@mock_response.stubs(:success?).returns(true)
|
10
|
+
mock_rc_resource(:get, mock_files.jobs, :json)
|
11
|
+
@hud.jobs
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_new
|
15
|
+
assert_equal @host, @hud.host.to_s
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_jobs
|
19
|
+
# already initialized.
|
20
|
+
Hudkins::Jobs.expects(:new).never
|
21
|
+
@hud.jobs
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_update_jobs
|
25
|
+
Hudkins::Jobs.expects(:new).once
|
26
|
+
@hud.update_jobs
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_get
|
30
|
+
mock_rc_resource(:get)
|
31
|
+
assert Hudkins.new.get( "/my/path" ), "hudkins.get should return true"
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_get_with_invalid_path
|
35
|
+
mock_rc_resource(:get) {|rc| rc.raises( RestClient::ResourceNotFound ) }
|
36
|
+
#RestClient::Resource.any_instance.expects(:get).raises( RestClient::ResourceNotFound )
|
37
|
+
assert_raises RestClient::ResourceNotFound do
|
38
|
+
@hud.get "/invalid/path"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_parse_string_json
|
43
|
+
ret = @hud.parse_string mock_files.jobs, :json
|
44
|
+
assert_kind_of Hash, ret
|
45
|
+
assert_equal "http://example.com/job/project_name/", ret["jobs"].first["url"]
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_parse_string_xml
|
49
|
+
ret = @hud.parse_string mock_files.config, :xml
|
50
|
+
assert_kind_of Nokogiri::XML::Document, ret
|
51
|
+
assert_equal "https://subversion/project_name/branches/current_branch", ret.at("//scm//remote").content
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_post
|
55
|
+
mock_rc_resource(:post)
|
56
|
+
@hud.post "/my/path", "data"
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_post_failure
|
60
|
+
mock_rc_resource(:post) {|rc| rc.raises( RestClient::Exception.new ) }
|
61
|
+
assert_raises RestClient::Exception do
|
62
|
+
@hud.post "/my/path", "bad_data"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
#def test_create_new_job
|
67
|
+
#mock_rc_resource(:post, mock_files.new_job_json, :xml)
|
68
|
+
#job = @hud.add_job :job_name
|
69
|
+
#assert_kind_of Hudkins::Job, job
|
70
|
+
#assert job.disabled?, "new job must start disabled"
|
71
|
+
#assert_nil job.scm_url, "new job must not have any scm_url"
|
72
|
+
#assert_equal job, @hud.jobs.find_by_name( :job_name )
|
73
|
+
#end
|
74
|
+
end
|
metadata
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hudkins
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Brian Henderson
|
9
|
+
- Adam Avilla
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2011-09-16 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: json
|
17
|
+
requirement: &17528000 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.5.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *17528000
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: nokogiri
|
28
|
+
requirement: &17527500 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.5.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *17527500
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rest-client
|
39
|
+
requirement: &17527020 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 1.6.1
|
45
|
+
type: :runtime
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *17527020
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: minitest
|
50
|
+
requirement: &17526520 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.7.2
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *17526520
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: mocha
|
61
|
+
requirement: &17525960 !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ~>
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 0.9.8
|
67
|
+
type: :development
|
68
|
+
prerelease: false
|
69
|
+
version_requirements: *17525960
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: hoe
|
72
|
+
requirement: &17525520 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '2.12'
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: *17525520
|
81
|
+
description: Hudson interaction gem.
|
82
|
+
email:
|
83
|
+
- bhenderson@attinteractive.com
|
84
|
+
- bhenderson@attinteractive.com
|
85
|
+
executables:
|
86
|
+
- hudkins
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files:
|
89
|
+
- History.txt
|
90
|
+
- Manifest.txt
|
91
|
+
- README.txt
|
92
|
+
files:
|
93
|
+
- .autotest
|
94
|
+
- History.txt
|
95
|
+
- Manifest.txt
|
96
|
+
- README.txt
|
97
|
+
- Rakefile
|
98
|
+
- bin/hudkins
|
99
|
+
- lib/assets/config.xml
|
100
|
+
- lib/assets/config_snippets/builders.xml
|
101
|
+
- lib/assets/free_style_project.xml.erb
|
102
|
+
- lib/assets/hudkinsrc
|
103
|
+
- lib/hudkins.rb
|
104
|
+
- lib/hudkins/command.rb
|
105
|
+
- lib/hudkins/command/exec.rb
|
106
|
+
- lib/hudkins/command/irb_start.rb
|
107
|
+
- lib/hudkins/common.rb
|
108
|
+
- lib/hudkins/errors.rb
|
109
|
+
- lib/hudkins/job.rb
|
110
|
+
- lib/hudkins/jobs.rb
|
111
|
+
- lib/hudkins/mixin.rb
|
112
|
+
- lib/hudkins/rake.rb
|
113
|
+
- lib/hudkins/restclient.rb
|
114
|
+
- lib/hudkins/sysinfo.rb
|
115
|
+
- test/fixtures/config.erb
|
116
|
+
- test/fixtures/jobs.erb
|
117
|
+
- test/fixtures/new_project_config.erb
|
118
|
+
- test/test_helper.rb
|
119
|
+
- test/unit/hudkins/test_job.rb
|
120
|
+
- test/unit/hudkins/test_jobs.rb
|
121
|
+
- test/unit/test_hudkins.rb
|
122
|
+
- .gemtest
|
123
|
+
homepage: http://github.com/bhenderson/hudkins
|
124
|
+
licenses: []
|
125
|
+
post_install_message:
|
126
|
+
rdoc_options:
|
127
|
+
- --main
|
128
|
+
- README.txt
|
129
|
+
require_paths:
|
130
|
+
- lib
|
131
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
none: false
|
133
|
+
requirements:
|
134
|
+
- - ! '>='
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
requirements: []
|
144
|
+
rubyforge_project: hudkins
|
145
|
+
rubygems_version: 1.8.9
|
146
|
+
signing_key:
|
147
|
+
specification_version: 3
|
148
|
+
summary: Hudson interaction gem.
|
149
|
+
test_files:
|
150
|
+
- test/unit/hudkins/test_jobs.rb
|
151
|
+
- test/unit/hudkins/test_job.rb
|
152
|
+
- test/unit/test_hudkins.rb
|
153
|
+
- test/test_helper.rb
|