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