continuous4r 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. data/History.txt +4 -0
  2. data/License.txt +20 -0
  3. data/Manifest.txt +83 -0
  4. data/README.txt +1 -0
  5. data/Rakefile +4 -0
  6. data/config/hoe.rb +71 -0
  7. data/config/requirements.rb +17 -0
  8. data/lib/capistrano_formatter.rb +19 -0
  9. data/lib/continuous4r/version.rb +9 -0
  10. data/lib/continuous4r.rb +490 -0
  11. data/lib/flog_formatter.rb +48 -0
  12. data/lib/heckle_formatter.rb +27 -0
  13. data/lib/httperf_formatter.rb +160 -0
  14. data/lib/site/body-capistrano.rhtml +8 -0
  15. data/lib/site/body-changelog.rhtml +8 -0
  16. data/lib/site/body-continuous4r-reports.rhtml +83 -0
  17. data/lib/site/body-dcov.rhtml +27 -0
  18. data/lib/site/body-dependencies.rhtml +52 -0
  19. data/lib/site/body-flog.rhtml +15 -0
  20. data/lib/site/body-heckle.rhtml +16 -0
  21. data/lib/site/body-httperf.rhtml +8 -0
  22. data/lib/site/body-index.rhtml +71 -0
  23. data/lib/site/body-issue-tracking.rhtml +38 -0
  24. data/lib/site/body-kwala.rhtml +35 -0
  25. data/lib/site/body-railroad.rhtml +29 -0
  26. data/lib/site/body-rcov.rhtml +23 -0
  27. data/lib/site/body-rdoc.rhtml +12 -0
  28. data/lib/site/body-scm-usage.rhtml +37 -0
  29. data/lib/site/body-stats.rhtml +8 -0
  30. data/lib/site/body-team-list.rhtml +73 -0
  31. data/lib/site/body-tests.rhtml +8 -0
  32. data/lib/site/body-zentest.rhtml +8 -0
  33. data/lib/site/header.rhtml +41 -0
  34. data/lib/site/images/continuous4r-logo.png +0 -0
  35. data/lib/site/images/external.png +0 -0
  36. data/lib/site/images/icon_error_sml.gif +0 -0
  37. data/lib/site/images/icon_success_sml.gif +0 -0
  38. data/lib/site/images/newwindow.png +0 -0
  39. data/lib/site/menu-capistrano.rhtml +23 -0
  40. data/lib/site/menu-changelog.rhtml +23 -0
  41. data/lib/site/menu-continuous4r-reports.rhtml +31 -0
  42. data/lib/site/menu-dcov.rhtml +23 -0
  43. data/lib/site/menu-dependencies.rhtml +19 -0
  44. data/lib/site/menu-flog.rhtml +23 -0
  45. data/lib/site/menu-heckle.rhtml +23 -0
  46. data/lib/site/menu-httperf.rhtml +23 -0
  47. data/lib/site/menu-index.rhtml +19 -0
  48. data/lib/site/menu-issue-tracking.rhtml +19 -0
  49. data/lib/site/menu-kwala.rhtml +23 -0
  50. data/lib/site/menu-railroad.rhtml +23 -0
  51. data/lib/site/menu-rcov.rhtml +23 -0
  52. data/lib/site/menu-rdoc.rhtml +23 -0
  53. data/lib/site/menu-scm-usage.rhtml +19 -0
  54. data/lib/site/menu-stats.rhtml +23 -0
  55. data/lib/site/menu-team-list.rhtml +19 -0
  56. data/lib/site/menu-tests.rhtml +23 -0
  57. data/lib/site/menu-zentest.rhtml +23 -0
  58. data/lib/site/style/commons-maven.css +113 -0
  59. data/lib/site/style/maven-base.css +151 -0
  60. data/lib/site/style/maven-theme.css +100 -0
  61. data/lib/site/style/project.css +1 -0
  62. data/lib/stats_formatter.rb +51 -0
  63. data/lib/subversion_extractor.rb +64 -0
  64. data/lib/tests_formatter.rb +65 -0
  65. data/lib/zen_test_formatter.rb +48 -0
  66. data/log/debug.log +0 -0
  67. data/script/destroy +14 -0
  68. data/script/destroy.cmd +1 -0
  69. data/script/generate +14 -0
  70. data/script/generate.cmd +1 -0
  71. data/script/txt2html +74 -0
  72. data/script/txt2html.cmd +1 -0
  73. data/setup.rb +1585 -0
  74. data/tasks/deployment.rake +34 -0
  75. data/tasks/environment.rake +7 -0
  76. data/tasks/website.rake +17 -0
  77. data/test/test_continuous4r.rb +11 -0
  78. data/test/test_helper.rb +2 -0
  79. data/website/index.html +411 -0
  80. data/website/index.txt +298 -0
  81. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  82. data/website/stylesheets/screen.css +138 -0
  83. data/website/template.rhtml +48 -0
  84. metadata +141 -0
@@ -0,0 +1,160 @@
1
+ # ===================================================
2
+ # Classe de formatage de resultat renvoye par httperf
3
+ # Author: Vincent Dubois
4
+ # ===================================================
5
+ class HttperfFormatter
6
+ attr_accessor :results, :description
7
+
8
+ # Constructeur
9
+ def initialize results, description
10
+ self.results = results
11
+ self.description = description
12
+ end
13
+
14
+ # Methode qui permet de fabriquer le flux HTML a partir du flux console httperf
15
+ def to_html
16
+ html = "<h3>Statistics for task '#{self.description}' :</h3><table class='bodyTable'><tbody>"
17
+ begin
18
+ results_lines = self.results.split(/$/)
19
+ # On enleve la premiere ligne d'espace, sinon elle apparait en premier
20
+ if results_lines.length > 2 #and results_lines[2] == ""
21
+ results_lines.delete_at(2)
22
+ results_lines.delete_at(results_lines.length-1)
23
+ end
24
+ i = 0
25
+ results_lines.each do |line|
26
+ if line[0..0].to_i == 0
27
+ elements = line[1..line.length].split(/$|\:/)
28
+ else
29
+ elements = line.split(/$|\:/)
30
+ end
31
+ html = html + "<tr class='" + (i % 2 == 0 ? "a" : "b" ) + "'>" + format_line(elements) + "</tr>"
32
+ i = i + 1
33
+ end
34
+ rescue Exception => e
35
+ raise " Unable to format httperf results. Exception is : #{e.to_s}"
36
+ end
37
+ html = html + "</tbody></table>"
38
+ end
39
+
40
+ # Methode qui permet de formater une ligne de presentation des resultats
41
+ def format_line elements
42
+ line = ""
43
+ if elements.length == 0
44
+ line = line + "<td colspan='11'>&#160;</td>"
45
+ else
46
+ details = elements[1].split(' ') if elements.length > 1
47
+ if elements[0] != "Maximum connect burst length" and elements[0][0..6] != "ttperf "
48
+ line = line + "<td><b>#{elements[0]}</b></td>"
49
+ end
50
+ case elements[0]
51
+ when "Total"
52
+ line = line + "<td><b>#{details[0]}</b></td>"
53
+ line = line + "<td>#{details[1]}</td>"
54
+ line = line + "<td><b>#{details[2]}</b></td>"
55
+ line = line + "<td>#{details[3]}</td>"
56
+ line = line + "<td><b>#{details[4]}</b></td>"
57
+ line = line + "<td>#{details[5]}</td>"
58
+ line = line + "<td><b>#{details[6]}</b></td>"
59
+ line = line + "<td colspan='3'>#{details[7]} #{details[8]}</td>"
60
+ when "Connection rate"
61
+ line = line + "<td colspan='10'>#{elements[1]}</td>"
62
+ when "Connection time [ms]"
63
+ line = line + "<td><b>#{details[0]}</b></td>"
64
+ if details[0] == "min"
65
+ line = line + "<td>#{details[1]}</td>"
66
+ line = line + "<td><b>#{details[2]}</b></td>"
67
+ line = line + "<td>#{details[3]}</td>"
68
+ line = line + "<td><b>#{details[4]}</b></td>"
69
+ line = line + "<td>#{details[5]}</td>"
70
+ line = line + "<td><b>#{details[6]}</b></td>"
71
+ line = line + "<td>#{details[7]}</td>"
72
+ line = line + "<td><b>#{details[8]}</b></td>"
73
+ line = line + "<td>#{details[9]}</td>"
74
+ else
75
+ line = line + "<td colspan='9'>#{details[1]}</td>"
76
+ end
77
+ when "Connection length [replies/conn]"
78
+ line = line + "<td colspan='10'>#{elements[1]}</td>"
79
+ when "Request rate"
80
+ line = line + "<td colspan='10'>#{elements[1]}</td>"
81
+ when "Request size [B]"
82
+ line = line + "<td colspan='10'>#{elements[1]}</td>"
83
+ when "Reply rate [replies/s]"
84
+ line = line + "<td><b>#{details[0]}</b></td>"
85
+ line = line + "<td>#{details[1]}</td>"
86
+ line = line + "<td><b>#{details[2]}</b></td>"
87
+ line = line + "<td>#{details[3]}</td>"
88
+ line = line + "<td><b>#{details[4]}</b></td>"
89
+ line = line + "<td>#{details[5]}</td>"
90
+ line = line + "<td><b>#{details[6]}</b></td>"
91
+ line = line + "<td>#{details[7]}</td>"
92
+ line = line + "<td colspan='3'><i>#{details[8]} #{details[9]}</i></td>"
93
+ when "Reply time [ms]"
94
+ line = line + "<td><b>#{details[0]}</b></td>"
95
+ line = line + "<td>#{details[1]}</td>"
96
+ line = line + "<td><b>#{details[2]}</b></td>"
97
+ line = line + "<td colspan='8'>#{details[3]}</td>"
98
+ when "Reply size [B]"
99
+ line = line + "<td><b>#{details[0]}</b></td>"
100
+ line = line + "<td>#{details[1]}</td>"
101
+ line = line + "<td><b>#{details[2]}</b></td>"
102
+ line = line + "<td>#{details[3]}</td>"
103
+ line = line + "<td><b>#{details[4]}</b></td>"
104
+ line = line + "<td>#{details[5]}</td>"
105
+ line = line + "<td colspan='5'><i>#{details[6]} #{details[7]}</i></td>"
106
+ when "Reply status"
107
+ line = line + "<td>#{details[0]}</td>"
108
+ line = line + "<td>#{details[1]}</td>"
109
+ line = line + "<td>#{details[2]}</td>"
110
+ line = line + "<td>#{details[3]}</td>"
111
+ line = line + "<td colspan='7'>#{details[4]}</td>"
112
+ when "CPU time [s]"
113
+ line = line + "<td><b>#{details[0]}</b></td>"
114
+ line = line + "<td>#{details[1]}</td>"
115
+ line = line + "<td><b>#{details[2]}</b></td>"
116
+ line = line + "<td>#{details[3]}</td>"
117
+ line = line + "<td colspan='7'><i>#{details[4]} #{details[5]} #{details[6]} #{details[7]} #{details[8]} #{details[9]}</i></td>"
118
+ when "Net I/O"
119
+ line = line + "<td colspan='10'>#{elements[1]}</td>"
120
+ when "Errors"
121
+ line = line + "<td><b>#{details[0]}</b></td>"
122
+ line = line + "<td>#{details[1]}</td>"
123
+ line = line + "<td><b>#{details[2]}</b></td>"
124
+ line = line + "<td>#{details[3]}</td>"
125
+ line = line + "<td><b>#{details[4]}</b></td>"
126
+ line = line + "<td>#{details[5]}</td>"
127
+ line = line + "<td><b>#{details[6]}</b></td>"
128
+ if details[0] == "total"
129
+ line = line + "<td>#{details[7]}</td>"
130
+ line = line + "<td><b>#{details[8]}</b></td>"
131
+ line = line + "<td>#{details[9]}</td>"
132
+ else
133
+ line = line + "<td colspan='4'>#{details[7]}</td>"
134
+ end
135
+ when "Session rate [sess/s]"
136
+ line = line + "<td><b>#{details[0]}</b></td>"
137
+ line = line + "<td>#{details[1]}</td>"
138
+ line = line + "<td><b>#{details[2]}</b></td>"
139
+ line = line + "<td>#{details[3]}</td>"
140
+ line = line + "<td><b>#{details[4]}</b></td>"
141
+ line = line + "<td>#{details[5]}</td>"
142
+ line = line + "<td><b>#{details[6]}</b></td>"
143
+ line = line + "<td>#{details[7]}</td>"
144
+ line = line + "<td colspan='3'><i>#{details[8]}</i></td>"
145
+ when "Session"
146
+ line = line + "<td><b>#{details[0]}</b></td>"
147
+ line = line + "<td colspan='9'>#{details[1]} #{details[2]}</td>"
148
+ when "Session lifetime [s]"
149
+ line = line + "<td colspan='10'>#{elements[1]}</td>"
150
+ when "Session failtime [s]"
151
+ line = line + "<td colspan='10'>#{elements[1]}</td>"
152
+ when "Session length histogram"
153
+ line = line + "<td colspan='10'>#{elements[1]}</td>"
154
+ end
155
+ return line
156
+ end
157
+ end
158
+
159
+ private :format_line
160
+ end
@@ -0,0 +1,8 @@
1
+ <div id="bodyColumn">
2
+ <div class="contentBox">
3
+ <div class="section"><a name="Capistrano_Report"></a>
4
+ <h2>Capistrano Deployments Report</h2>
5
+ <%= File.read("capistrano.html") %>
6
+ </div>
7
+ </div>
8
+ </div>
@@ -0,0 +1,8 @@
1
+ <div id="bodyColumn">
2
+ <div class="contentBox">
3
+ <div class="section"><a name="changelog"></a>
4
+ <h2>Changelog Report</h2>
5
+ <%= File.read("changelog.html") %>
6
+ </div>
7
+ </div>
8
+ </div>
@@ -0,0 +1,83 @@
1
+ <%
2
+ require 'rubygems'
3
+ require 'XmlElements'
4
+ project = XmlElements.fromString(File.read("continuous4r-project.xml"))
5
+ %>
6
+ <div id="bodyColumn">
7
+ <div class="contentBox">
8
+ <div class="section">
9
+ <a name="Continous4R_Generated_Reports"></a><h2>Continuous4r Generated Reports</h2>
10
+ <p>
11
+ This document provides an overview of the various reports that are automatically generated by
12
+ <a target="_blank" href="http://continuous4r.rubyforge.org/" class="externalLink" title="External Link">continuous4r</a>
13
+ . Each report is briefly described below.
14
+ </p>
15
+
16
+ <div class="subsection"><a name="Overview"></a><h3>Overview</h3>
17
+ <table class="bodyTable">
18
+ <tr class="b">
19
+ <th>
20
+ Document
21
+ </th>
22
+ <th>
23
+ Description
24
+ </th>
25
+ </tr>
26
+ <%
27
+ i = 0
28
+ begin
29
+ project.tasks.each('task') do |task|
30
+ %>
31
+ <tr class="<% if i % 2 == 0 %>a<% else %>b<% end %>">
32
+ <td>
33
+ <a href="<%= task['name'] %>.html">
34
+ <%= task['name'] %>
35
+ </a>
36
+ </td>
37
+ <td><%
38
+ begin
39
+ puts task.description.text
40
+ rescue
41
+ case task['name']
42
+ when "changelog"
43
+ puts "Displays changes in the SCM repository."
44
+ when "stats"
45
+ puts "Provides statistics for your Rails code."
46
+ when "dcov"
47
+ puts "Provides statistics on the coverage of your documentation (rdoc)."
48
+ when "rcov"
49
+ puts "Provides general and detailed statistics on the coverage of your unit tests."
50
+ when "rdoc"
51
+ puts "Report for the generation of the apidoc for #{project['name']}"
52
+ when "heckle"
53
+ puts "Provides results for the attempts of breaking your tests with heckle."
54
+ when "flog"
55
+ puts "Provides statistics on the complexity of your class methods with flog."
56
+ when "zentest"
57
+ puts "Provides generated code for units tests which are missing in your project."
58
+ when "capistrano"
59
+ puts "Report for deployments of your application with Capistrano."
60
+ when "httperf"
61
+ puts "Provides data on the stressing of your application with httperf."
62
+ when "kwala"
63
+ puts "Provides various reports on quality and metrics for your Ruby code."
64
+ when "railroad"
65
+ puts "Provides graphs for you controllers and/or models."
66
+ when "tests"
67
+ puts "Report on the execution of you unit tests."
68
+ end
69
+ end %></td>
70
+ </tr>
71
+ <% i = i + 1
72
+ end
73
+ rescue Exception => e
74
+ unless e.to_s == "no childs named 'task' found!"
75
+ raise e
76
+ end
77
+ puts "<tr class='a'><td colspan='2'>No reports</td></tr>"
78
+ end %>
79
+ </table>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ </div>
@@ -0,0 +1,27 @@
1
+ <%
2
+ require 'rubygems'
3
+ require 'hpricot'
4
+ require 'XmlElements'
5
+ project = XmlElements.fromString(File.read("continuous4r-project.xml"))
6
+ %>
7
+ <div id="bodyColumn">
8
+ <div class="contentBox">
9
+ <div class="section"><a name="dcov"></a>
10
+ <%
11
+ # chargement/modification du rapport dcov
12
+ path = ""
13
+ project.tasks.each('task') do |task|
14
+ if task['name'] == "dcov"
15
+ path = task.params.report['path']
16
+ end
17
+ end
18
+ doc = Hpricot(File.read(path))
19
+ doc.at("h1").swap("<h2>Dcov Results</h2>")
20
+ doc.search('//font') do |font|
21
+ font.swap("<span style='color: red;'>" + font.inner_html + "</span>")
22
+ end
23
+ %>
24
+ <%= (doc/"body").inner_html %>
25
+ </div>
26
+ </div>
27
+ </div>
@@ -0,0 +1,52 @@
1
+ <%
2
+ require 'rubygems'
3
+ require 'XmlElements'
4
+ require 'date'
5
+ project = XmlElements.fromString(File.read("continuous4r-project.xml"))
6
+ %>
7
+ <div id="bodyColumn">
8
+ <div class="contentBox">
9
+ <div class="section">
10
+ <a name="Dependencies"></a>
11
+ <h2>Dependencies</h2>
12
+ <p>
13
+ The following is a list of dependencies for this project. These dependencies are required to compile and run the application:
14
+ </p>
15
+ <table class="bodyTable">
16
+ <thead>
17
+ <tr class="b">
18
+ <th>
19
+ Artifact ID
20
+ </th>
21
+ <th>
22
+ Type
23
+ </th>
24
+ <th>
25
+ Version
26
+ </th>
27
+ <th>
28
+ Comment
29
+ </th>
30
+ </tr>
31
+ </thead>
32
+ <tbody>
33
+ <% i = 0
34
+ project.gems.each('gem') do |gem|
35
+ i = i + 1
36
+ gem_raw_details = `gem query -d|grep #{gem['name']}`
37
+ gem_details = gem_raw_details.split(/$/)
38
+ gem_comment = gem_details[1] if gem_details.length > 1
39
+ gem_comment ||= ''
40
+ %>
41
+ <tr class="<% if i % 2 == 0 %>a<% else %>b<% end %>">
42
+ <td><%= gem['name'] %></td>
43
+ <td>gem</td>
44
+ <td><%= gem['version'] %></td>
45
+ <td><%= gem_comment %></td>
46
+ </tr>
47
+ <% end %>
48
+ </tbody>
49
+ </table>
50
+ </div>
51
+ </div>
52
+ </div>
@@ -0,0 +1,15 @@
1
+ <%
2
+ require 'rubygems'
3
+ require 'XmlElements'
4
+ require "#{File.dirname(__FILE__)}/../flog_formatter.rb"
5
+ %>
6
+ <div id="bodyColumn">
7
+ <div class="contentBox">
8
+ <div class="section"><a name="rcov"></a>
9
+ <h2>Flog Results</h2>
10
+ <p>Flog shows you the most torturous code you wrote. The more painful the code, the higher the score.</p>
11
+ <p>Flog essentially scores an ABC metric: Assignments, Branches, Calls, with particular attention placed on calls.</p>
12
+ <%= FlogFormatter.new(File.read("flog.log")).to_html %>
13
+ </div>
14
+ </div>
15
+ </div>
@@ -0,0 +1,16 @@
1
+ <div id="bodyColumn">
2
+ <div class="contentBox">
3
+ <div class="section"><a name="heckle"></a>
4
+ <h2>Heckle Results</h2>
5
+ <p>Think you write good tests? Not bloody likely... Put it to the test with heckle. It'll put your code into submission in seconds.</p>
6
+ <p>The premise is really really simple to understand:
7
+ <ul>
8
+ <li>Your tests should pass.</li>
9
+ <li>Break your code.</li>
10
+ <li>Now they should fail.</li>
11
+ </ul>
12
+ For each failure heckle points out, you've got a test to write.</p><br/><br/>
13
+ <%= File.read("heckle.html") %>
14
+ </div>
15
+ </div>
16
+ </div>
@@ -0,0 +1,8 @@
1
+ <div id="bodyColumn">
2
+ <div class="contentBox">
3
+ <div class="section"><a name="httperf"></a>
4
+ <h2>httperf execution statistics</h2>
5
+ <%= File.read("httperf.html") %>
6
+ </div>
7
+ </div>
8
+ </div>
@@ -0,0 +1,71 @@
1
+ <div id="bodyColumn">
2
+ <div class="contentBox">
3
+ <div class="section">
4
+ <a name="General_Project_Information"></a>
5
+ <h2>General Project Information</h2>
6
+ <p>
7
+ This document provides an overview of the various documents and links
8
+ that are part of this project's general information. All of this
9
+ content is automatically generated by <a target="_blank" href="http://continuous4r.rubyforge.org/" class="externalLink" title="External Link">continuous4r</a> on behalf of the project.
10
+ </p>
11
+ <div class="subsection"><a name="Overview"></a><h3>Overview</h3>
12
+ <table class="bodyTable">
13
+ <tbody>
14
+ <tr class="b">
15
+ <th>
16
+ Document
17
+ </th>
18
+ <th>
19
+ Description
20
+ </th>
21
+ </tr>
22
+ <tr class="b">
23
+ <td>
24
+ <a href="team-list.html">
25
+ Project Team
26
+ </a>
27
+ </td>
28
+ <td>
29
+ This document provides information on the members of this project.
30
+ These are the individuals who have contributed to the project in one
31
+ form or another.
32
+ </td>
33
+ </tr>
34
+ <tr class="a">
35
+ <td>
36
+ <a href="dependencies.html">
37
+ Dependencies
38
+ </a>
39
+ </td>
40
+ <td>
41
+ This document lists the projects dependencies and provides information on each dependency.
42
+ </td>
43
+ </tr>
44
+ <tr class="b">
45
+ <td>
46
+ <a href="scm-usage.html">
47
+ Source Repository
48
+ </a>
49
+ </td>
50
+ <td>
51
+ This is a link to the online source repository that can be viewed via a web browser.
52
+ </td>
53
+ </tr>
54
+ <tr class="a">
55
+ <td>
56
+ <a href="issue-tracking.html">
57
+ Issue Tracking
58
+ </a>
59
+ </td>
60
+ <td>
61
+ This is a link to the issue tracking system for this project. Issues
62
+ (bugs, features, change requests) can be created and queried using this
63
+ link.
64
+ </td>
65
+ </tr>
66
+ </tbody>
67
+ </table>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ </div>
@@ -0,0 +1,38 @@
1
+ <%
2
+ require 'rubygems'
3
+ require 'XmlElements'
4
+ require 'date'
5
+ project = XmlElements.fromString(File.read("continuous4r-project.xml"))
6
+ %>
7
+ <div id="bodyColumn">
8
+ <div class="contentBox">
9
+ <div class="section"><a name="Issue_tracking"></a>
10
+ <h2>Issue tracking</h2>
11
+ <p>
12
+ <%= project['name'] %> uses <a href="<%= project.bugtracker.tracker_url.text %>" target="_blank" class="externalLink" title="External Link"><%= project.bugtracker.tracker_type.text %></a> for tracking issues.
13
+ See the <a target="_blank" href="<%= project.bugtracker.url.text %>" class="externalLink" title="External Link"><%= project['name'] %> project page</a>.
14
+ </p>
15
+ <p>
16
+ To use <%= project.bugtracker.tracker_type.text %> you may need to <a target="_blank" href="<%= project.bugtracker.tracker_account_create.text %>" class="externalLink" title="External Link">create an account</a>.
17
+ </p>
18
+ <p>
19
+ If you would like to report a bug, or raise an enhancement request with
20
+ <%= project['name'] %> please do the following:
21
+ <ol>
22
+ <li><a target="_blank" href="<%= project.bugtracker.search.text %>" class="externalLink" title="External Link">Search existing open bugs</a>.
23
+ If you find your issue listed then please add a comment with your details.</li>
24
+ <li>Decide if your issue is a bug or an enhancement.</li>
25
+ <li>Submit either a <a target="_blank" href="<%= project.bugtracker.add.text %>" class="externalLink" title="External Link">bug report</a>
26
+ or <a target="_blank" href="<%= project.bugtracker.add.text %>" class="externalLink" title="External Link">enhancement request</a>.</li>
27
+ </ol>
28
+ </p>
29
+ <p>
30
+ Please also remember these points:
31
+ <ul>
32
+ <li>the more information you provide, the better we can help you</li>
33
+ <li>test cases are vital, particularly for any proposed enhancements</li>
34
+ </ul>
35
+ </p>
36
+ </div>
37
+ </div>
38
+ </div>
@@ -0,0 +1,35 @@
1
+ <%
2
+ require 'rubygems'
3
+ require 'hpricot'
4
+ require 'XmlElements'
5
+ %>
6
+ <div id="bodyColumn">
7
+ <div class="contentBox">
8
+ <div class="section"><a name="rcov"></a>
9
+ <%
10
+ # chargement/modification du rapport rcov
11
+ doc = Hpricot(File.read("continuous4r_build/kwala/index.html"))
12
+ doc.search('//h2') do |h2|
13
+ h2.swap("<h3>#{h2.inner_html}</h3>")
14
+ end
15
+ doc.at("h1").swap("<h2>Kwala Build Results</h2>")
16
+ doc.search('//a') do |link|
17
+ if link.inner_text.index('rcov').nil?
18
+ link.swap("<a target='_blank' href='kwala/#{link.attributes['href']}'>#{link.inner_text}</a>")
19
+ end
20
+ end
21
+ doc.search('//table') do |table|
22
+ table.swap("<table class='bodyTable'>#{table.inner_html}</table>")
23
+ end
24
+ doc.search("tr:even") do |tr|
25
+ tr.swap("<tr class='b'>#{tr.inner_html}</tr>")
26
+ end
27
+ doc.search("tr:odd") do |tr|
28
+ tr.swap("<tr class='a'>#{tr.inner_html}</tr>")
29
+ end
30
+ %>
31
+ <%= doc.search("link")[0].to_html %>
32
+ <%= (doc/"body").inner_html %>
33
+ </div>
34
+ </div>
35
+ </div>
@@ -0,0 +1,29 @@
1
+ <%
2
+ require 'rubygems'
3
+ require 'XmlElements'
4
+ project = XmlElements.fromString(File.read("continuous4r-project.xml"))
5
+ %>
6
+ <div id="bodyColumn">
7
+ <div class="contentBox">
8
+ <div class="section"><a name="httperf"></a>
9
+ <% project.tasks.each('task') do |task|
10
+ if task['name'] == "railroad"
11
+ if task.params.generate['value'] == 'all' or task.params.generate['value'] == 'controllers'
12
+ %>
13
+ <h2>Railroad controllers graph</h2>
14
+ <object type="image/svg+xml" data="railroad/controllers.svg" width="100%" height="470">
15
+ <img src="railroad/controllers.svg" alt="controllers">
16
+ </object>
17
+ <% end %>
18
+ <% if task.params.generate['value'] == 'all' or task.params.generate['value'] == 'models' %>
19
+ <h2>Railroad models graph</h2>
20
+ <object type="image/svg+xml" data="railroad/models.svg" width="100%" height="470">
21
+ <img src="railroad/models.svg" alt="controllers">
22
+ </object>
23
+ <% end
24
+ end
25
+ end
26
+ %>
27
+ </div>
28
+ </div>
29
+ </div>
@@ -0,0 +1,23 @@
1
+ <%
2
+ require 'rubygems'
3
+ require 'hpricot'
4
+ require 'XmlElements'
5
+ %>
6
+ <div id="bodyColumn">
7
+ <div class="contentBox">
8
+ <div class="section"><a name="rcov"></a>
9
+ <%
10
+ # chargement/modification du rapport rcov
11
+ doc = Hpricot(File.read("continuous4r_build/rcov/index.html"))
12
+ doc.search('//a') do |link|
13
+ if link.inner_text.index('rcov').nil?
14
+ link.swap("<a target='_blank' href='rcov/#{link.attributes['href']}'>#{link.inner_text}</a>")
15
+ end
16
+ end
17
+ %>
18
+ <h2>Rcov Results</h2>
19
+ <%= doc.search("style")[1].to_html %>
20
+ <%= (doc/"body").inner_html %>
21
+ </div>
22
+ </div>
23
+ </div>
@@ -0,0 +1,12 @@
1
+ <div id="bodyColumn">
2
+ <div class="contentBox">
3
+ <div class="section"><a name="Rdoc_Report"></a>
4
+ <h2>Rdoc Report</h2>
5
+ <p style="padding-left: 20px;"><a target="_blank" class="newWindow" href="rdoc/app/index.html">View generated apidoc</a></p>
6
+ <div>
7
+ <pre class="source"><%= File.read("rdoc.log") %>
8
+ </pre>
9
+ </div>
10
+ </div>
11
+ </div>
12
+ </div>
@@ -0,0 +1,37 @@
1
+ <%
2
+ require 'rubygems'
3
+ require 'XmlElements'
4
+ require 'date'
5
+ project = XmlElements.fromString(File.read("continuous4r-project.xml"))
6
+ %>
7
+ <div id="bodyColumn">
8
+ <div class="contentBox">
9
+ <div class="section"><a name="Source_repository"></a>
10
+ <h2>Source repository</h2>
11
+ <%
12
+ scms = {'cvs' => ['CVS', 'http://www.nongnu.org/cvs/'], 'svn' => ['subversion', 'http://subversion.tigris.org']}
13
+ if !scms.has_key? project.scm.repository_type.text
14
+ %>
15
+ <p>
16
+ <%= project['name'] %> is hosted on an unknown repository type.
17
+ </p>
18
+ <% else %>
19
+ <p>
20
+ <%= project['name'] %> is hosted on a <a href="<%= scms[project.scm.repository_type.text][1] %>" target="_blank" class="externalLink" title="External Link"><%= scms[project.scm.repository_type.text][0] %></a> repository.
21
+ </p>
22
+ <% end %>
23
+ <p>
24
+ The project URL is:<br></br>
25
+ <code><%= project.scm.url.text %></code>
26
+ </p>
27
+ <p>
28
+ The best way to view the repository is via the
29
+ <a href="<%= project.scm.view.text %>" class="externalLink" target="_blank" title="External Link"><%= scms[project.scm.repository_type.text][0] %> viewer</a>.
30
+ </p>
31
+ <p>
32
+ The alternative is to use the
33
+ <a href="<%= project.scm.url.text %>" class="externalLink" target="_blank" title="External Link">native <%= scms[project.scm.repository_type.text][0] %></a> display.
34
+ </p>
35
+ </div>
36
+ </div>
37
+ </div>
@@ -0,0 +1,8 @@
1
+ <div id="bodyColumn">
2
+ <div class="contentBox">
3
+ <div class="section"><a name="heckle"></a>
4
+ <h2>Rails Statistics Report</h2>
5
+ <%= File.read("stats.html") %>
6
+ </div>
7
+ </div>
8
+ </div>