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.
@@ -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