felixclack-cijoe 0.9.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/LICENSE +20 -0
- data/README.md +175 -0
- data/Rakefile +31 -0
- data/bin/cijoe +50 -0
- data/lib/cijoe.rb +233 -0
- data/lib/cijoe/build.rb +67 -0
- data/lib/cijoe/campfire.rb +78 -0
- data/lib/cijoe/commit.rb +27 -0
- data/lib/cijoe/config.rb +43 -0
- data/lib/cijoe/public/favicon.ico +0 -0
- data/lib/cijoe/public/octocat.png +0 -0
- data/lib/cijoe/public/screen.css +222 -0
- data/lib/cijoe/server.rb +115 -0
- data/lib/cijoe/version.rb +3 -0
- data/lib/cijoe/views/json.erb +8 -0
- data/lib/cijoe/views/template.erb +43 -0
- data/test/helper.rb +14 -0
- data/test/test_cijoe.rb +17 -0
- data/test/test_cijoe_server.rb +93 -0
- metadata +126 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<link href="<%= cijoe_root %>/screen.css" media="screen" rel="stylesheet" type="text/css" />
|
5
|
+
<title><%= h(joe.project) %>: CI Joe</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<div class="site">
|
9
|
+
<div id="home">
|
10
|
+
<ul class="posts">
|
11
|
+
<% if joe.current_build %>
|
12
|
+
<li>
|
13
|
+
<span class="date"><%= pretty_time(joe.current_build.started_at) if joe.current_build %></span> »
|
14
|
+
<% if joe.current_build.sha %>
|
15
|
+
Building <%= joe.current_build.branch %> at <a href="<%= joe.current_build.commit.url %>"><%= joe.current_build.short_sha %></a> <small>(pid: <%= joe.pid %>)</small>
|
16
|
+
<% else %>
|
17
|
+
Build starting...
|
18
|
+
<% end %>
|
19
|
+
</li>
|
20
|
+
<% else %>
|
21
|
+
<li><form method="POST"><input type="submit" value="Build"/></form></li>
|
22
|
+
<% end %>
|
23
|
+
|
24
|
+
<% if joe.last_build %>
|
25
|
+
<li>
|
26
|
+
<span class="date"><%= pretty_time(joe.last_build.finished_at) %></span> »
|
27
|
+
<% if joe.last_build.sha %>
|
28
|
+
Built <%= joe.last_build.branch %> at <a href="<%= joe.last_build.commit.url %>"><%= joe.last_build.short_sha %></a>
|
29
|
+
<% end %>
|
30
|
+
<span class="<%= joe.last_build.status %>">(<%= joe.last_build.status %>)</span>
|
31
|
+
<% if joe.last_build.duration %>
|
32
|
+
in <span class="duration"><%= joe.last_build.duration %></span> seconds.
|
33
|
+
<% end %>
|
34
|
+
</li>
|
35
|
+
<% if joe.last_build.failed? %>
|
36
|
+
<li><pre class="terminal"><code><%=ansi_color_codes h(joe.last_build.output) %></code></pre></li>
|
37
|
+
<% end %>
|
38
|
+
<% end %>
|
39
|
+
</ul>
|
40
|
+
</div>
|
41
|
+
</div>
|
42
|
+
</body>
|
43
|
+
</html>
|
data/test/helper.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
ENV['RACK_ENV'] = 'test'
|
5
|
+
|
6
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
7
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
8
|
+
require 'cijoe'
|
9
|
+
|
10
|
+
CIJoe::Server.set :project_path, "."
|
11
|
+
CIJoe::Server.set :environment, "test"
|
12
|
+
|
13
|
+
class Test::Unit::TestCase
|
14
|
+
end
|
data/test/test_cijoe.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestCIJoe < Test::Unit::TestCase
|
4
|
+
def test_raise_error_on_invalid_command
|
5
|
+
assert_raise RuntimeError, LoadError do
|
6
|
+
CIJoe::Config.new('--invalid').to_s
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_return_value_of_config
|
11
|
+
assert_equal `git config blame`.chomp, CIJoe::Config.new('blame').to_s
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_return_empty_string_when_config_does_not_exist
|
15
|
+
assert_equal '', CIJoe::Config.new('invalid').to_s
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require "helper"
|
2
|
+
require "rack/test"
|
3
|
+
require "cijoe/server"
|
4
|
+
|
5
|
+
class TestCIJoeServer < Test::Unit::TestCase
|
6
|
+
include Rack::Test::Methods
|
7
|
+
|
8
|
+
class ::CIJoe
|
9
|
+
attr_writer :current_build, :last_build
|
10
|
+
end
|
11
|
+
|
12
|
+
attr_accessor :app
|
13
|
+
|
14
|
+
def setup
|
15
|
+
@app = CIJoe::Server.new
|
16
|
+
# make Build#restore a no-op so we don't overwrite our current/last
|
17
|
+
# build attributes set from tests.
|
18
|
+
joe = @app.joe
|
19
|
+
def joe.restore
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_ping
|
24
|
+
app.joe.last_build = build :worked
|
25
|
+
assert !app.joe.building?, "have a last build, but not a current"
|
26
|
+
|
27
|
+
get "/ping"
|
28
|
+
assert_equal 200, last_response.status
|
29
|
+
assert_equal app.joe.last_build.sha, last_response.body
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_ping_building
|
33
|
+
app.joe.current_build = build :building
|
34
|
+
assert app.joe.building?, "buildin' a awsum project"
|
35
|
+
|
36
|
+
get "/ping"
|
37
|
+
assert_equal 412, last_response.status
|
38
|
+
assert_equal "building", last_response.body
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_ping_building_with_a_previous_build
|
42
|
+
app.joe.last_build = build :worked
|
43
|
+
app.joe.current_build = build :building
|
44
|
+
assert app.joe.building?, "buildin' a awsum project"
|
45
|
+
|
46
|
+
get "/ping"
|
47
|
+
assert_equal 412, last_response.status
|
48
|
+
assert_equal "building", last_response.body
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_ping_failed
|
52
|
+
app.joe.last_build = build :failed
|
53
|
+
|
54
|
+
get "/ping"
|
55
|
+
assert_equal 412, last_response.status
|
56
|
+
assert_equal app.joe.last_build.sha, last_response.body
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_ping_should_not_reset_current_build_in_tests
|
60
|
+
current_build = build :building
|
61
|
+
app.joe.current_build = current_build
|
62
|
+
assert app.joe.building?
|
63
|
+
get "/ping"
|
64
|
+
assert_equal current_build, app.joe.current_build
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_jsonp_should_return_plain_json_without_param
|
68
|
+
app.joe.last_build = build :failed
|
69
|
+
get "/api/json"
|
70
|
+
assert_equal 200, last_response.status
|
71
|
+
assert_equal 'application/json', last_response.content_type
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_jsonp_should_return_jsonp_with_param
|
75
|
+
app.joe.last_build = build :failed
|
76
|
+
get "/api/json?jsonp=fooberz"
|
77
|
+
puts last_response.inspect
|
78
|
+
assert_equal 200, last_response.status
|
79
|
+
assert_equal 'application/json', last_response.content_type
|
80
|
+
assert_match /^fooberz\(/, last_response.body
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_should_not_barf_when_no_build
|
85
|
+
end
|
86
|
+
|
87
|
+
# Create a new, fake build. All we care about is status.
|
88
|
+
|
89
|
+
def build status
|
90
|
+
CIJoe::Build.new "path", "user", "project", Time.now, Time.now,
|
91
|
+
"deadbeef", status, "output", nil
|
92
|
+
end
|
93
|
+
end
|
metadata
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: felixclack-cijoe
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 57
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 9
|
9
|
+
- 1
|
10
|
+
version: 0.9.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Chris Wanstrath
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-04-01 00:00:00 +01:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: choice
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: sinatra
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :runtime
|
48
|
+
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: rack-test
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :development
|
62
|
+
version_requirements: *id003
|
63
|
+
description: " cijoe is a sinatra-based continuous integration server. It's like an\n old rusty pickup truck: it might be smelly and gross, but it gets the\n job done.\n"
|
64
|
+
email: chris@ozmm.org
|
65
|
+
executables:
|
66
|
+
- cijoe
|
67
|
+
extensions: []
|
68
|
+
|
69
|
+
extra_rdoc_files: []
|
70
|
+
|
71
|
+
files:
|
72
|
+
- README.md
|
73
|
+
- Rakefile
|
74
|
+
- LICENSE
|
75
|
+
- lib/cijoe/build.rb
|
76
|
+
- lib/cijoe/campfire.rb
|
77
|
+
- lib/cijoe/commit.rb
|
78
|
+
- lib/cijoe/config.rb
|
79
|
+
- lib/cijoe/public/favicon.ico
|
80
|
+
- lib/cijoe/public/octocat.png
|
81
|
+
- lib/cijoe/public/screen.css
|
82
|
+
- lib/cijoe/server.rb
|
83
|
+
- lib/cijoe/version.rb
|
84
|
+
- lib/cijoe/views/json.erb
|
85
|
+
- lib/cijoe/views/template.erb
|
86
|
+
- lib/cijoe.rb
|
87
|
+
- bin/cijoe
|
88
|
+
- test/helper.rb
|
89
|
+
- test/test_cijoe.rb
|
90
|
+
- test/test_cijoe_server.rb
|
91
|
+
has_rdoc: false
|
92
|
+
homepage: http://github.com/felixclack/cijoe
|
93
|
+
licenses: []
|
94
|
+
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
hash: 3
|
106
|
+
segments:
|
107
|
+
- 0
|
108
|
+
version: "0"
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
hash: 3
|
115
|
+
segments:
|
116
|
+
- 0
|
117
|
+
version: "0"
|
118
|
+
requirements: []
|
119
|
+
|
120
|
+
rubyforge_project:
|
121
|
+
rubygems_version: 1.3.7
|
122
|
+
signing_key:
|
123
|
+
specification_version: 3
|
124
|
+
summary: cijoe builds your builds.
|
125
|
+
test_files: []
|
126
|
+
|