rutema_web 1.0.0 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +6 -0
- data/README.txt +7 -7
- data/Rakefile +3 -6
- data/lib/rutema_web/gems.rb +4 -10
- data/lib/rutema_web/main.rb +1 -1
- data/lib/rutema_web/model.rb +11 -1
- data/lib/rutema_web/public/css/style.css +31 -2
- data/lib/rutema_web/public/js/folding.js +13 -13
- data/lib/rutema_web/sinatra.rb +60 -59
- data/lib/rutema_web/views/layout.erb +1 -1
- metadata +10 -40
data/History.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== 1.0.2 / 2009-09-10
|
2
|
+
* Cleared up the gem dependencies
|
3
|
+
* Upgraded gruff
|
4
|
+
=== 1.0.1 / 2009-07-31
|
5
|
+
* not executed test cases now show up in the statistics graphs in yellow. This gives us the trend in test case numbers
|
1
6
|
=== 1.0.0 / 2009-07-17
|
2
7
|
* updated gem dependencies for active_record (2.3.2)
|
3
8
|
* renamed gem to rutema_web for consistency
|
@@ -6,6 +11,7 @@
|
|
6
11
|
* gem dependencies are enforced in a separate file
|
7
12
|
* fixed the folding javascript - now using jQuery
|
8
13
|
* updated the project infrastructure (hoe etc.)
|
14
|
+
|
9
15
|
=== 0.9.5 / 2008-11-28
|
10
16
|
* Overlooked conditional in Statistics index action fixed
|
11
17
|
=== 0.9.4 / 2008-11-28
|
data/README.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
|
1
|
+
rutema_web http://patir.rubyforge.org/rutema
|
2
2
|
|
3
3
|
== DESCRIPTION:
|
4
|
-
|
4
|
+
rutema_web is the web frontend for rutema.
|
5
5
|
|
6
6
|
It can be used as a viewer for database files created with the rutema ActiveRecord reporter.
|
7
7
|
It also provides you with some basic statistics about the tests in your database in the form of
|
@@ -10,25 +10,25 @@ diagrams of debatable aesthetics but undoubtable value!
|
|
10
10
|
== FEATURES/PROBLEMS:
|
11
11
|
|
12
12
|
== SYNOPSIS:
|
13
|
-
|
13
|
+
rutema_web [results.db] and browse to http://localhost:7000 for the glorious view
|
14
14
|
|
15
15
|
== REQUIREMENTS:
|
16
16
|
* patir (http://patir.rubyforge.org)
|
17
|
+
* rutema (http://patir.rubyforge.org/rutema)
|
17
18
|
* activerecord (http://ar.rubyonrails.com/)
|
18
19
|
* sqlite3 (http://rubyforge.org/projects/sqlite-ruby/)
|
19
|
-
*
|
20
|
+
* sinatra (http://www.sinatrarb.com/)
|
20
21
|
* ruport (http://rubyreports.org/)
|
21
22
|
* acts_as_reportable
|
22
|
-
* erubis
|
23
23
|
* gruff/RMagick (optional, but needed if you want to see the statistics graphs)
|
24
24
|
|
25
25
|
== INSTALL:
|
26
|
-
* sudo gem install
|
26
|
+
* sudo gem install rutema_web
|
27
27
|
|
28
28
|
== LICENSE:
|
29
29
|
(The Ruby License)
|
30
30
|
|
31
|
-
rutema is copyright (c) 2007 Vassilis Rizopoulos
|
31
|
+
rutema is copyright (c) 2007 - 2009 Vassilis Rizopoulos
|
32
32
|
|
33
33
|
You can redistribute it and/or modify it under either the terms of the GPL
|
34
34
|
(see COPYING.txt file), or the conditions below:
|
data/Rakefile
CHANGED
@@ -14,13 +14,10 @@ Hoe.spec('rutema_web') do |p|
|
|
14
14
|
p.description = p.paragraphs_of('README.txt', 1..5).join("\n\n")
|
15
15
|
p.url = p.paragraphs_of('README.txt', 0).first.split(/\n/)[1..-1]
|
16
16
|
p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
17
|
-
p.extra_deps<<['
|
18
|
-
p.extra_deps<<['
|
19
|
-
p.extra_deps<<['activerecord','=2.3.2']
|
20
|
-
p.extra_deps<<['sinatra','=0.9.2']
|
17
|
+
p.extra_deps<<['rutema',"1.0.7"]
|
18
|
+
p.extra_deps<<['sinatra','0.9.2']
|
21
19
|
p.extra_deps<<['ruport','1.6.1']
|
22
|
-
p.extra_deps<<['
|
23
|
-
p.extra_deps<<['gruff','0.3.4']
|
20
|
+
p.extra_deps<<['gruff','0.3.6']
|
24
21
|
p.spec_extras={:executables=>["rutema_web"],
|
25
22
|
:default_executable=>"rutema_web"}
|
26
23
|
end
|
data/lib/rutema_web/gems.rb
CHANGED
@@ -1,10 +1,4 @@
|
|
1
|
-
gem 'sinatra','
|
2
|
-
gem '
|
3
|
-
gem '
|
4
|
-
gem '
|
5
|
-
gem 'ruport','=1.6.1'
|
6
|
-
gem 'acts_as_reportable','=1.1.1'
|
7
|
-
begin
|
8
|
-
gem 'gruff',"=0.3.4"
|
9
|
-
rescue
|
10
|
-
end
|
1
|
+
gem 'sinatra','0.9.2'
|
2
|
+
gem 'rutema',"1.0.7"
|
3
|
+
gem 'ruport','1.6.1'
|
4
|
+
gem 'gruff',"0.3.6"
|
data/lib/rutema_web/main.rb
CHANGED
data/lib/rutema_web/model.rb
CHANGED
@@ -36,7 +36,11 @@ module Rutema
|
|
36
36
|
end
|
37
37
|
#number of unsuccessful scenarios (does not count setup or teardown scripts)
|
38
38
|
def number_of_failed
|
39
|
-
self.scenarios.select{|sc| !sc.success? && sc.is_test? }.size
|
39
|
+
self.scenarios.select{|sc| !sc.success? && !sc.not_executed? && sc.is_test? }.size
|
40
|
+
end
|
41
|
+
#number of scenarios that did not run (does not count setup or teardown scripts)
|
42
|
+
def number_of_not_executed
|
43
|
+
self.scenarios.select{|sc| sc.not_executed? && sc.is_test? }.size
|
40
44
|
end
|
41
45
|
#returns the number of actual tests (so, don't take into account setup or teardown tests)
|
42
46
|
def number_of_tests
|
@@ -69,6 +73,12 @@ module Rutema
|
|
69
73
|
def success?
|
70
74
|
return self.status=="success"
|
71
75
|
end
|
76
|
+
def not_executed?
|
77
|
+
return self.status=="not_executed"
|
78
|
+
end
|
79
|
+
def fail?
|
80
|
+
return self.status=="error"
|
81
|
+
end
|
72
82
|
end
|
73
83
|
end
|
74
84
|
end
|
@@ -10,8 +10,7 @@ body {
|
|
10
10
|
table {
|
11
11
|
font: 0.9em Tahoma, sans-serif;
|
12
12
|
color: #666666;
|
13
|
-
text-align: left;
|
14
|
-
|
13
|
+
text-align: left;
|
15
14
|
}
|
16
15
|
#logo{float:left; background-image:url(/images/tie_logo.gif); width:234px; height:213px;}
|
17
16
|
#topheader{float:right; width:566px; height:97px; background-color:#F0F0F0; position:relative}
|
@@ -102,4 +101,34 @@ table {
|
|
102
101
|
}
|
103
102
|
.vtable tr td {
|
104
103
|
text-align: left;
|
104
|
+
}
|
105
|
+
td.success{
|
106
|
+
background-color:#00FF00;
|
107
|
+
}
|
108
|
+
td.error{
|
109
|
+
background-color:#FF0000;
|
110
|
+
}
|
111
|
+
td.not_executed{
|
112
|
+
background-color:#FFFF00;
|
113
|
+
}
|
114
|
+
table.timeline{
|
115
|
+
font: 0.9em Tahoma, sans-serif;
|
116
|
+
color: #666666;
|
117
|
+
text-align: center;
|
118
|
+
}
|
119
|
+
span.timeline{
|
120
|
+
text-align: center;
|
121
|
+
}
|
122
|
+
a.timeline{
|
123
|
+
font: 0.5em Tahoma, sans-serif;
|
124
|
+
font-size: 10px;
|
125
|
+
font-weight:bold;
|
126
|
+
color:#000000;
|
127
|
+
text-decoration:none;
|
128
|
+
}
|
129
|
+
.timeline {
|
130
|
+
font: 0.5em Tahoma, sans-serif;
|
131
|
+
font-size: 10px;
|
132
|
+
font-weight:bold;
|
133
|
+
color:#999999;
|
105
134
|
}
|
@@ -1,16 +1,16 @@
|
|
1
|
-
function toggleFolding(){
|
2
|
-
$(
|
3
|
-
$(
|
4
|
-
$(
|
5
|
-
|
6
|
-
$("a.output_link").click(function(event){
|
7
|
-
$(this).parents("td").children(".scenario_output").toggle();
|
1
|
+
function toggleFolding(container,container_parent,prepend_txt,link){
|
2
|
+
$(container).hide();
|
3
|
+
$(container).parents(container_parent).prepend(prepend_txt);
|
4
|
+
$(link).click(function(event){
|
5
|
+
$(this).parents(container_parent).children(container).toggle();
|
8
6
|
// Stop the link click from doing its normal thing
|
9
7
|
event.preventDefault();
|
10
8
|
});
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
9
|
+
};
|
10
|
+
|
11
|
+
function setupFolding()
|
12
|
+
{
|
13
|
+
toggleFolding(".scenario_output","td","<a class=\"output_link\" href='' title='read the output log'>output</a>","a.output_link");
|
14
|
+
toggleFolding(".scenario_error","td","<a class=\"error_link\" href='' title='read the error log'>errors</a>","a.error_link");
|
15
|
+
|
16
|
+
};
|
data/lib/rutema_web/sinatra.rb
CHANGED
@@ -60,7 +60,7 @@ module RutemaWeb
|
|
60
60
|
end
|
61
61
|
return msg
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
def run_link r
|
65
65
|
"<a class=\"smallgreytext\" href=\"#{run_url(r)}\">Run #{r.id}</a>"
|
66
66
|
end
|
@@ -147,10 +147,10 @@ module RutemaWeb
|
|
147
147
|
rescue LoadError
|
148
148
|
self.gruff_working=false
|
149
149
|
end
|
150
|
-
|
150
|
+
|
151
151
|
private
|
152
152
|
#returns a jpg blob
|
153
|
-
def runs_graph_jpg successful,failed,labels
|
153
|
+
def runs_graph_jpg successful,failed,not_executed,labels
|
154
154
|
graph=Gruff::StackedBar.new(640)
|
155
155
|
graph.theme = {
|
156
156
|
:colors => %w(green red yellow blue),
|
@@ -160,6 +160,7 @@ module RutemaWeb
|
|
160
160
|
graph.x_axis_label="#{successful.size} runs"
|
161
161
|
graph.data("successful",successful)
|
162
162
|
graph.data("failed",failed)
|
163
|
+
graph.data("not executed",not_executed)
|
163
164
|
graph.labels=labels
|
164
165
|
graph.marker_font_size=12
|
165
166
|
return graph.to_blob("PNG")
|
@@ -178,11 +179,12 @@ module RutemaWeb
|
|
178
179
|
return ret
|
179
180
|
end
|
180
181
|
end
|
181
|
-
|
182
|
+
|
182
183
|
class SinatraApp<Sinatra::Base
|
183
184
|
include ViewUtilities
|
184
185
|
include Settings
|
185
186
|
include Statistics
|
187
|
+
attr_accessor :title,:panel_content,:content_title,:content
|
186
188
|
enable :logging
|
187
189
|
enable :run
|
188
190
|
enable :static
|
@@ -194,28 +196,14 @@ module RutemaWeb
|
|
194
196
|
@@logger = Patir.setup_logger
|
195
197
|
|
196
198
|
get '/' do
|
197
|
-
|
198
|
-
@panel_content=panel_runs
|
199
|
-
@content_title="Welcome to Rutema"
|
200
|
-
@content="<p>This is the rutema web interface.<br/>It allows you to browse the contents of the test results database.</p><p>Currently you can view the results for each separate run, the results for a specific scenario (a complete list of all steps executed in the scenario with standard and error output logs) or the complete execution history of a scenario.</p><p>The panel on the left shows a list of the ten most recent runs.</p>"
|
199
|
+
page_setup "Rutema",panel_runs,"Welcome to Rutema","<p>This is the rutema web interface.<br/>It allows you to browse the contents of the test results database.</p><p>Currently you can view the results for each separate run, the results for a specific scenario (a complete list of all steps executed in the scenario with standard and error output logs) or the complete execution history of a scenario.</p><p>The panel on the left shows a list of the ten most recent runs.</p>"
|
201
200
|
erb :layout
|
202
201
|
end
|
203
|
-
|
204
|
-
get '/runs/:page' do |page|
|
205
|
-
runs(page)
|
206
|
-
erb :layout
|
207
|
-
end
|
208
202
|
#Displays the details of a run
|
209
203
|
#
|
210
204
|
#Routes to /runs if no id is provided
|
211
205
|
get '/run/:run_id' do |run_id|
|
212
|
-
|
213
|
-
if !run_id.empty?
|
214
|
-
@panel_content=panel_runs
|
215
|
-
@title="Run #{run_id}"
|
216
|
-
@content_title="Summary of run #{run_id}"
|
217
|
-
@content=single_run(run_id)
|
218
|
-
end
|
206
|
+
page_setup "Run #{run_id}",panel_runs,"Summary of run #{run_id}",single_run(run_id)
|
219
207
|
erb :layout
|
220
208
|
end
|
221
209
|
|
@@ -228,6 +216,11 @@ module RutemaWeb
|
|
228
216
|
runs(0)
|
229
217
|
erb :layout
|
230
218
|
end
|
219
|
+
|
220
|
+
get '/runs/:page' do |page|
|
221
|
+
runs(page)
|
222
|
+
erb :layout
|
223
|
+
end
|
231
224
|
#Displays a paginated list of scenarios
|
232
225
|
get '/scenarios/:page' do |page|
|
233
226
|
scenarios(page)
|
@@ -235,13 +228,10 @@ module RutemaWeb
|
|
235
228
|
end
|
236
229
|
#Displays the details of a scenario
|
237
230
|
get '/scenario/:scenario_id' do |scenario_id|
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
else
|
243
|
-
@content=scenario_in_a_run(scenario_id.to_i)
|
244
|
-
end
|
231
|
+
if scenario_id.to_i==0
|
232
|
+
@content=scenario_by_name(scenario_id)
|
233
|
+
else
|
234
|
+
@content=scenario_in_a_run(scenario_id.to_i)
|
245
235
|
end
|
246
236
|
erb :layout
|
247
237
|
end
|
@@ -255,20 +245,18 @@ module RutemaWeb
|
|
255
245
|
scenarios(0)
|
256
246
|
erb :layout
|
257
247
|
end
|
258
|
-
|
248
|
+
|
259
249
|
get '/statistics/?' do
|
260
|
-
|
261
|
-
@panel_content=panel_configurations
|
262
|
-
@content_title="Statistics"
|
250
|
+
page_setup "Rutema",panel_configurations,"Statistics"
|
263
251
|
@content="<p>rutema statistics provide reports that present the results on a time axis<br/>At present you can see the ratio of successful vs. failed test cases over time grouped per configuration file.</p>"
|
264
252
|
@content<<"statistics reports require the gruff gem which in turn depends on RMagick. gruff does not appear to be available!<br/>rutemaweb will not be able to produce statistics reports" unless Statistics.gruff_working?
|
265
253
|
erb :layout
|
266
254
|
end
|
267
|
-
|
255
|
+
|
268
256
|
get '/statistics/config_report/:configuration' do |configuration|
|
269
|
-
|
270
|
-
|
271
|
-
|
257
|
+
tt=configuration || "All configurations"
|
258
|
+
page_setup(tt,panel_configurations,tt)
|
259
|
+
|
272
260
|
if Statistics.gruff_working?
|
273
261
|
@content="<img src=\"/statistics/graph/#{configuration}\"/>"
|
274
262
|
else
|
@@ -276,37 +264,56 @@ module RutemaWeb
|
|
276
264
|
end
|
277
265
|
erb :layout
|
278
266
|
end
|
279
|
-
|
267
|
+
|
280
268
|
get '/statistics/graph/:configuration' do |configuration|
|
281
269
|
content_type "image/png"
|
282
270
|
successful=[]
|
283
271
|
failed=[]
|
272
|
+
not_executed=[]
|
284
273
|
labels=Hash.new
|
285
|
-
runs=
|
286
|
-
#find all runs beloging to this configuration
|
287
|
-
runs=runs.select{|r| r.context[:config_file]==configuration if r.context.is_a?(Hash)} if configuration
|
274
|
+
runs=all_runs_in_configuration(configuration)
|
288
275
|
#now extract the data
|
289
276
|
counter=0
|
290
277
|
#the normalizer thins out the labels on the x axis so that they won't overlap
|
291
|
-
normalizer =
|
292
|
-
normalizer=runs.size/11 unless runs.size<=11
|
278
|
+
normalizer = calculate_normalizer(runs.size)
|
293
279
|
runs.each do |r|
|
294
280
|
fails=r.number_of_failed
|
281
|
+
no_exec = r.number_of_not_executed
|
295
282
|
#the scenarios array includes setup and teardown scripts as well - we want only the actual testcases
|
296
283
|
#so we use the added number_of_tests method that filters setup and test scripts
|
297
|
-
successful<<r.number_of_tests-fails
|
284
|
+
successful<<r.number_of_tests-fails-no_exec
|
298
285
|
failed<<fails
|
286
|
+
not_executed<<no_exec
|
299
287
|
#every Nth label
|
300
288
|
labels[counter]="R#{r.id}" if counter%normalizer==0
|
301
289
|
counter+=1
|
302
290
|
end
|
303
|
-
runs_graph_jpg(successful,failed,labels)
|
291
|
+
runs_graph_jpg(successful,failed,not_executed,labels)
|
304
292
|
end
|
293
|
+
|
305
294
|
private
|
295
|
+
#calculates a divider to sparse out the laels in statistics graphs
|
296
|
+
def calculate_normalizer siz
|
297
|
+
#the normalizer thins out the labels on the x axis so that they won't overlap
|
298
|
+
return siz<=11 ? 1 : siz/11
|
299
|
+
end
|
300
|
+
#finds all the runs belonging to a specific configuration
|
301
|
+
def all_runs_in_configuration configuration
|
302
|
+
runs=Rutema::Model::Run.find(:all)
|
303
|
+
#find all runs beloging to this configuration
|
304
|
+
runs.select{|r| r.context[:config_file]==configuration if r.context.is_a?(Hash)} if configuration
|
305
|
+
end
|
306
|
+
#sets the variables used in the layout template
|
307
|
+
def page_setup title,panel_content,content_title,content=""
|
308
|
+
@title=title
|
309
|
+
@panel_content=panel_content
|
310
|
+
@content_title=content_title
|
311
|
+
@content=content
|
312
|
+
end
|
313
|
+
|
306
314
|
def runs page
|
307
|
-
|
308
|
-
|
309
|
-
@content=""
|
315
|
+
page_setup "All runs",nil,"All runs"
|
316
|
+
|
310
317
|
dt=[]
|
311
318
|
total_pages=(Rutema::Model::Run.count/page_size)+1
|
312
319
|
page_number=validated_page_number(page,total_pages)
|
@@ -321,10 +328,7 @@ module RutemaWeb
|
|
321
328
|
end
|
322
329
|
|
323
330
|
def scenarios page
|
324
|
-
|
325
|
-
@content_title="Scenarios"
|
326
|
-
@content=""
|
327
|
-
@panel_content=panel_runs
|
331
|
+
page_setup "All scenarios",panel_runs,"All scenarios"
|
328
332
|
runs=Hash.new
|
329
333
|
#find which runs contain each scenario with the same name
|
330
334
|
#Ramaze::Log.debug("Getting the runs for each scenario")
|
@@ -366,8 +370,7 @@ module RutemaWeb
|
|
366
370
|
#Renders the summary of all runs for a single scenario
|
367
371
|
def scenario_by_name scenario_id
|
368
372
|
ret=""
|
369
|
-
|
370
|
-
@content_title="Scenario #{scenario_id} runs"
|
373
|
+
page_setup "Runs for #{scenario_id}",nil,"Scenario #{scenario_id} runs"
|
371
374
|
begin
|
372
375
|
table=Rutema::Model::Scenario.report_table(:all,:conditions=>["name = :spec_name",{:spec_name=>scenario_id}],
|
373
376
|
:order=>"run_id DESC")
|
@@ -384,8 +387,8 @@ module RutemaWeb
|
|
384
387
|
ret<<table.to_html
|
385
388
|
end
|
386
389
|
rescue
|
387
|
-
|
388
|
-
|
390
|
+
content_title="Error"
|
391
|
+
title=content_title
|
389
392
|
#Ramaze::Log.error("Could not retrieve data for the scenario name '#{scenario_id}'")
|
390
393
|
#Ramaze::Log.debug("#{$!.message}:\n#{$!.backtrace}")
|
391
394
|
ret="<p>could not retrieve data for the given scenario name</p>"
|
@@ -395,11 +398,9 @@ module RutemaWeb
|
|
395
398
|
#Renders the information for a specific executed scenario
|
396
399
|
#giving a detailed list of the steps, with status and output
|
397
400
|
def scenario_in_a_run scenario_id
|
398
|
-
@panel_content=panel_runs
|
399
401
|
begin
|
400
402
|
scenario=Rutema::Model::Scenario.find(scenario_id)
|
401
|
-
|
402
|
-
@title=@content_title
|
403
|
+
page_setup "Summary for #{scenario.name} in run #{scenario.run_id}",panel_runs,"Summary for #{scenario.name} in run #{scenario.run_id}"
|
403
404
|
table=Rutema::Model::Step.report_table(:all,
|
404
405
|
:conditions=>["scenario_id = :scenario_id",{:scenario_id=>scenario_id}],
|
405
406
|
:order=>"number ASC")
|
@@ -410,8 +411,8 @@ module RutemaWeb
|
|
410
411
|
ret=table.to_vhtml
|
411
412
|
end
|
412
413
|
rescue
|
413
|
-
|
414
|
-
|
414
|
+
content_title="Error"
|
415
|
+
title=content_title
|
415
416
|
#Ramaze::Log.error("Could not find scenario with the id '#{scenario_id}'")
|
416
417
|
@@logger.warn("#{$!.message}:\n#{$!.backtrace}")
|
417
418
|
ret="<p>Could not find scenario with the given id.</p>"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rutema_web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vassilis Rizopoulos
|
@@ -9,19 +9,9 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-09-11 00:00:00 +02:00
|
13
13
|
default_executable: rutema_web
|
14
14
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: patir
|
17
|
-
type: :runtime
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.6.0
|
24
|
-
version:
|
25
15
|
- !ruby/object:Gem::Dependency
|
26
16
|
name: rutema
|
27
17
|
type: :runtime
|
@@ -30,17 +20,7 @@ dependencies:
|
|
30
20
|
requirements:
|
31
21
|
- - "="
|
32
22
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.0.
|
34
|
-
version:
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: activerecord
|
37
|
-
type: :runtime
|
38
|
-
version_requirement:
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - "="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 2.3.2
|
23
|
+
version: 1.0.7
|
44
24
|
version:
|
45
25
|
- !ruby/object:Gem::Dependency
|
46
26
|
name: sinatra
|
@@ -62,16 +42,6 @@ dependencies:
|
|
62
42
|
- !ruby/object:Gem::Version
|
63
43
|
version: 1.6.1
|
64
44
|
version:
|
65
|
-
- !ruby/object:Gem::Dependency
|
66
|
-
name: acts_as_reportable
|
67
|
-
type: :runtime
|
68
|
-
version_requirement:
|
69
|
-
version_requirements: !ruby/object:Gem::Requirement
|
70
|
-
requirements:
|
71
|
-
- - "="
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: 1.1.1
|
74
|
-
version:
|
75
45
|
- !ruby/object:Gem::Dependency
|
76
46
|
name: gruff
|
77
47
|
type: :runtime
|
@@ -80,7 +50,7 @@ dependencies:
|
|
80
50
|
requirements:
|
81
51
|
- - "="
|
82
52
|
- !ruby/object:Gem::Version
|
83
|
-
version: 0.3.
|
53
|
+
version: 0.3.6
|
84
54
|
version:
|
85
55
|
- !ruby/object:Gem::Dependency
|
86
56
|
name: hoe
|
@@ -90,11 +60,11 @@ dependencies:
|
|
90
60
|
requirements:
|
91
61
|
- - ">="
|
92
62
|
- !ruby/object:Gem::Version
|
93
|
-
version: 2.3.
|
63
|
+
version: 2.3.3
|
94
64
|
version:
|
95
65
|
description: |-
|
96
66
|
== DESCRIPTION:
|
97
|
-
|
67
|
+
rutema_web is the web frontend for rutema.
|
98
68
|
|
99
69
|
It can be used as a viewer for database files created with the rutema ActiveRecord reporter.
|
100
70
|
It also provides you with some basic statistics about the tests in your database in the form of
|
@@ -103,16 +73,16 @@ description: |-
|
|
103
73
|
== FEATURES/PROBLEMS:
|
104
74
|
|
105
75
|
== SYNOPSIS:
|
106
|
-
|
76
|
+
rutema_web [results.db] and browse to http://localhost:7000 for the glorious view
|
107
77
|
|
108
78
|
== REQUIREMENTS:
|
109
79
|
* patir (http://patir.rubyforge.org)
|
80
|
+
* rutema (http://patir.rubyforge.org/rutema)
|
110
81
|
* activerecord (http://ar.rubyonrails.com/)
|
111
82
|
* sqlite3 (http://rubyforge.org/projects/sqlite-ruby/)
|
112
|
-
*
|
83
|
+
* sinatra (http://www.sinatrarb.com/)
|
113
84
|
* ruport (http://rubyreports.org/)
|
114
85
|
* acts_as_reportable
|
115
|
-
* erubis
|
116
86
|
* gruff/RMagick (optional, but needed if you want to see the statistics graphs)
|
117
87
|
email: riva@braveworld.net
|
118
88
|
executables:
|
@@ -176,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
176
146
|
requirements: []
|
177
147
|
|
178
148
|
rubyforge_project: patir
|
179
|
-
rubygems_version: 1.3.
|
149
|
+
rubygems_version: 1.3.5
|
180
150
|
signing_key:
|
181
151
|
specification_version: 3
|
182
152
|
summary: rutema_web is the web frontend for rutema
|