rutema_web 1.0.0 → 1.0.2
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/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
|