testability-driver 0.9.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.
Files changed (214) hide show
  1. data/README +1 -0
  2. data/bin/start_app_perf +199 -0
  3. data/bin/tdriver-devtools +3 -0
  4. data/config/sut_parameters.rb +39 -0
  5. data/ext/extconf.rb +67 -0
  6. data/ext/native_extensions.c +70 -0
  7. data/lib/matti.rb +30 -0
  8. data/lib/tdriver-devtools/behaviour/old/xml/example/flick-example.rb +223 -0
  9. data/lib/tdriver-devtools/behaviour/old/xml/example/impl.rb_invalid +194 -0
  10. data/lib/tdriver-devtools/behaviour/old/xml/generate_behaviour_xml.rb +95 -0
  11. data/lib/tdriver-devtools/behaviour/old/xml/lib/tdriver_generator.rb +722 -0
  12. data/lib/tdriver-devtools/behaviour/old/xml/qdoc_generator.rb +321 -0
  13. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.method.template +43 -0
  14. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.module.template +54 -0
  15. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument.template +7 -0
  16. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument_type.template +7 -0
  17. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.exception.template +5 -0
  18. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.line.template +2 -0
  19. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.template +5 -0
  20. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.method.template +23 -0
  21. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.template +14 -0
  22. data/lib/tdriver-devtools/behaviour/old/xml/update +3 -0
  23. data/lib/tdriver-devtools/behaviour/xml/generate.rb +88 -0
  24. data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +1924 -0
  25. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.default.template +1 -0
  26. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.template +3 -0
  27. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument_type.template +4 -0
  28. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.exception.template +4 -0
  29. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.arguments.template +4 -0
  30. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.deprecated.template +3 -0
  31. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.exceptions.template +3 -0
  32. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.info.template +1 -0
  33. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.returns.template +3 -0
  34. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.tables.template +3 -0
  35. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.template +12 -0
  36. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.returns.template +5 -0
  37. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.item.template +1 -0
  38. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.row.template +2 -0
  39. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.template +8 -0
  40. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.template +14 -0
  41. data/lib/tdriver-devtools/behaviour/xml_generator/example/flick-example.rb +245 -0
  42. data/lib/tdriver-devtools/behaviour/xml_generator/example/sut.rb +964 -0
  43. data/lib/tdriver-devtools/behaviour/xml_generator/generate.rb +68 -0
  44. data/lib/tdriver-devtools/behaviour/xml_generator/lib/custom_rdoc_generator.rb +1865 -0
  45. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.default.template +1 -0
  46. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.template +3 -0
  47. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument_type.template +4 -0
  48. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.exception.template +4 -0
  49. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.arguments.template +4 -0
  50. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.deprecated.template +3 -0
  51. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.exceptions.template +3 -0
  52. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.info.template +1 -0
  53. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.returns.template +3 -0
  54. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.tables.template +3 -0
  55. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.template +12 -0
  56. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.returns.template +5 -0
  57. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.item.template +1 -0
  58. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.row.template +2 -0
  59. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.template +7 -0
  60. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.template +14 -0
  61. data/lib/tdriver-devtools/behaviour/xml_generator/update +3 -0
  62. data/lib/tdriver-devtools/doc/behaviour_xml/QtExampleGestureBehaviour.xml +138 -0
  63. data/lib/tdriver-devtools/doc/behaviour_xml/created.rid +1 -0
  64. data/lib/tdriver-devtools/doc/behaviour_xml/tdriver.hash +1 -0
  65. data/lib/tdriver-devtools/doc/feature_xml/qt_widget_hold.feature.xml +9 -0
  66. data/lib/tdriver-devtools/doc/feature_xml/qt_widget_tap.feature.xml +9 -0
  67. data/lib/tdriver-devtools/doc/generate.rb +892 -0
  68. data/lib/tdriver-devtools/doc/update +1 -0
  69. data/lib/tdriver-devtools/doc/xslt/html.rb +7 -0
  70. data/lib/tdriver-devtools/doc/xslt/template.xsl +1861 -0
  71. data/lib/tdriver-devtools/doc/xslt/update +3 -0
  72. data/lib/tdriver-devtools/plugin/placeholder.txt +1 -0
  73. data/lib/tdriver-devtools/tdriver-devtools.rb +404 -0
  74. data/lib/tdriver-devtools/tests/feature_tests/example/flick-example.rb +233 -0
  75. data/lib/tdriver-devtools/tests/feature_tests/example/impl.rb +194 -0
  76. data/lib/tdriver-devtools/tests/feature_tests/generate.rb +82 -0
  77. data/lib/tdriver-devtools/tests/feature_tests/lib/custom_rdoc_generator.rb +468 -0
  78. data/lib/tdriver-devtools/tests/feature_tests/templates/feature_attribute.template +5 -0
  79. data/lib/tdriver-devtools/tests/feature_tests/templates/feature_method.template +5 -0
  80. data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_attribute.template +5 -0
  81. data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_method.template +5 -0
  82. data/lib/tdriver-devtools/tests/feature_tests/update +3 -0
  83. data/lib/tdriver.rb +26 -0
  84. data/lib/tdriver/base/behaviour/behaviour.rb +32 -0
  85. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +94 -0
  86. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +262 -0
  87. data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +111 -0
  88. data/lib/tdriver/base/behaviour/factory.rb +380 -0
  89. data/lib/tdriver/base/behaviour/loader.rb +28 -0
  90. data/lib/tdriver/base/command_data/command_data.rb +51 -0
  91. data/lib/tdriver/base/command_data/loader.rb +25 -0
  92. data/lib/tdriver/base/errors.rb +131 -0
  93. data/lib/tdriver/base/loader.rb +38 -0
  94. data/lib/tdriver/base/state_object.rb +270 -0
  95. data/lib/tdriver/base/sut/adapter.rb +28 -0
  96. data/lib/tdriver/base/sut/controller.rb +119 -0
  97. data/lib/tdriver/base/sut/factory.rb +287 -0
  98. data/lib/tdriver/base/sut/generic/behaviours/application.rb +243 -0
  99. data/lib/tdriver/base/sut/generic/behaviours/controller.rb +67 -0
  100. data/lib/tdriver/base/sut/generic/behaviours/find.rb +96 -0
  101. data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +346 -0
  102. data/lib/tdriver/base/sut/generic/behaviours/sut.rb +1268 -0
  103. data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +182 -0
  104. data/lib/tdriver/base/sut/generic/behaviours/verification.rb +119 -0
  105. data/lib/tdriver/base/sut/generic/commands/application.rb +219 -0
  106. data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +82 -0
  107. data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +58 -0
  108. data/lib/tdriver/base/sut/generic/plugin.rb +96 -0
  109. data/lib/tdriver/base/sut/loader.rb +35 -0
  110. data/lib/tdriver/base/sut/sut.rb +67 -0
  111. data/lib/tdriver/base/test_object/abstract.rb +179 -0
  112. data/lib/tdriver/base/test_object/behaviours/syncronization.rb +94 -0
  113. data/lib/tdriver/base/test_object/behaviours/test_object.rb +787 -0
  114. data/lib/tdriver/base/test_object/factory.rb +618 -0
  115. data/lib/tdriver/base/test_object/identificator.rb +511 -0
  116. data/lib/tdriver/base/test_object/loader.rb +37 -0
  117. data/lib/tdriver/env.rb +21 -0
  118. data/lib/tdriver/loader.rb +36 -0
  119. data/lib/tdriver/matti.rb +35 -0
  120. data/lib/tdriver/report/error_recovery/tdriver_custom_error_recovery.rb +83 -0
  121. data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +158 -0
  122. data/lib/tdriver/report/error_recovery/tdriver_error_recovery_settings.rb +98 -0
  123. data/lib/tdriver/report/report.rb +47 -0
  124. data/lib/tdriver/report/report_api.rb +207 -0
  125. data/lib/tdriver/report/report_combine.rb +86 -0
  126. data/lib/tdriver/report/report_crash_file_capture.rb +167 -0
  127. data/lib/tdriver/report/report_creator.rb +571 -0
  128. data/lib/tdriver/report/report_cucumber.rb +158 -0
  129. data/lib/tdriver/report/report_cucumber_listener.rb +337 -0
  130. data/lib/tdriver/report/report_cucumber_reporter.rb +335 -0
  131. data/lib/tdriver/report/report_data_presentation.rb +152 -0
  132. data/lib/tdriver/report/report_data_table.rb +64 -0
  133. data/lib/tdriver/report/report_execution_statistics.rb +284 -0
  134. data/lib/tdriver/report/report_file_capture.rb +159 -0
  135. data/lib/tdriver/report/report_grouping.rb +539 -0
  136. data/lib/tdriver/report/report_junit_xml.rb +147 -0
  137. data/lib/tdriver/report/report_rspec.rb +108 -0
  138. data/lib/tdriver/report/report_test_case_run.rb +621 -0
  139. data/lib/tdriver/report/report_test_run.rb +1286 -0
  140. data/lib/tdriver/report/report_test_unit.rb +175 -0
  141. data/lib/tdriver/report/report_writer.rb +1405 -0
  142. data/lib/tdriver/tdriver.rb +158 -0
  143. data/lib/tdriver/util/common.rb +24 -0
  144. data/lib/tdriver/util/common/array.rb +39 -0
  145. data/lib/tdriver/util/common/crc16.rb +100 -0
  146. data/lib/tdriver/util/common/environment.rb +153 -0
  147. data/lib/tdriver/util/common/error.rb +39 -0
  148. data/lib/tdriver/util/common/file.rb +315 -0
  149. data/lib/tdriver/util/common/gem.rb +108 -0
  150. data/lib/tdriver/util/common/kernel.rb +189 -0
  151. data/lib/tdriver/util/common/loader.rb +39 -0
  152. data/lib/tdriver/util/common/retryable.rb +98 -0
  153. data/lib/tdriver/util/common/string.rb +77 -0
  154. data/lib/tdriver/util/dbaccess/dbaccess.rb +188 -0
  155. data/lib/tdriver/util/dbaccess/dbconnection.rb +41 -0
  156. data/lib/tdriver/util/dbaccess/error.rb +35 -0
  157. data/lib/tdriver/util/dbaccess/loader.rb +29 -0
  158. data/lib/tdriver/util/dynamic_attribute_filter.rb +182 -0
  159. data/lib/tdriver/util/hooking.rb +434 -0
  160. data/lib/tdriver/util/loader.rb +65 -0
  161. data/lib/tdriver/util/localisation.rb +24 -0
  162. data/lib/tdriver/util/localisation/error.rb +32 -0
  163. data/lib/tdriver/util/localisation/loader.rb +28 -0
  164. data/lib/tdriver/util/localisation/localisation.rb +479 -0
  165. data/lib/tdriver/util/logger.rb +377 -0
  166. data/lib/tdriver/util/operator_data/error.rb +29 -0
  167. data/lib/tdriver/util/operator_data/loader.rb +26 -0
  168. data/lib/tdriver/util/operator_data/operator_data.rb +93 -0
  169. data/lib/tdriver/util/other/config.rb +221 -0
  170. data/lib/tdriver/util/parameter.rb +24 -0
  171. data/lib/tdriver/util/parameter/error.rb +45 -0
  172. data/lib/tdriver/util/parameter/loader.rb +37 -0
  173. data/lib/tdriver/util/parameter/parameter.rb +285 -0
  174. data/lib/tdriver/util/parameter/parameter_hash.rb +101 -0
  175. data/lib/tdriver/util/parameter/parameter_template.rb +120 -0
  176. data/lib/tdriver/util/parameter/parameter_user_api.rb +84 -0
  177. data/lib/tdriver/util/parameter/parameter_xml.rb +247 -0
  178. data/lib/tdriver/util/plugin/abstract.rb +60 -0
  179. data/lib/tdriver/util/plugin/error.rb +25 -0
  180. data/lib/tdriver/util/plugin/loader.rb +28 -0
  181. data/lib/tdriver/util/plugin/service.rb +200 -0
  182. data/lib/tdriver/util/recorder.rb +292 -0
  183. data/lib/tdriver/util/stats.rb +90 -0
  184. data/lib/tdriver/util/user_data/error.rb +29 -0
  185. data/lib/tdriver/util/user_data/loader.rb +26 -0
  186. data/lib/tdriver/util/user_data/user_data.rb +103 -0
  187. data/lib/tdriver/util/video_rec.rb +264 -0
  188. data/lib/tdriver/util/xml/abstraction.rb +47 -0
  189. data/lib/tdriver/util/xml/builder.rb +54 -0
  190. data/lib/tdriver/util/xml/document.rb +32 -0
  191. data/lib/tdriver/util/xml/element.rb +32 -0
  192. data/lib/tdriver/util/xml/error.rb +46 -0
  193. data/lib/tdriver/util/xml/loader.rb +46 -0
  194. data/lib/tdriver/util/xml/nil_element.rb +89 -0
  195. data/lib/tdriver/util/xml/nodeset.rb +32 -0
  196. data/lib/tdriver/util/xml/parsers/libxml/libxml.rb +140 -0
  197. data/lib/tdriver/util/xml/parsers/loader.rb +22 -0
  198. data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +111 -0
  199. data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +54 -0
  200. data/lib/tdriver/util/xml/parsers/nokogiri/builder.rb +58 -0
  201. data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +58 -0
  202. data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +147 -0
  203. data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +42 -0
  204. data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +187 -0
  205. data/lib/tdriver/util/xml/xml.rb +170 -0
  206. data/lib/tdriver/verify/verify.rb +687 -0
  207. data/lib/tdriver/verify/verify.rb_org +630 -0
  208. data/lib/tdriver/version.rb +21 -0
  209. data/xml/behaviours/generic.xml +495 -0
  210. data/xml/defaults/generic.xml +97 -0
  211. data/xml/defaults/sut_generic.xml +36 -0
  212. data/xml/parameters/tdriver_parameters.xml +23 -0
  213. data/xml/templates/generic.xml +227 -0
  214. metadata +327 -0
@@ -0,0 +1,539 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of Testability Driver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+
21
+ class ReportingGroups
22
+ def initialize(tdriver_groups,test_cases_array,grouping=true)
23
+ #@reporting_groups='Common:Application:Close:Open|Common:Connect to|Common:Disconnect|Qt:Tap|Qt:Drag:Drag to|Qt:Type Text'
24
+ if tdriver_groups != nil
25
+ @reporting_groups=clean_reporting_groups(tdriver_groups)
26
+ else
27
+ @reporting_groups=nil
28
+ end
29
+ @main_groups=Array.new
30
+ @main_groups_sub_level_one=Array.new
31
+ @main_groups_sub_level_two=Array.new
32
+ @main_groups_sub_level_three=Array.new
33
+ @main_groups_sub_level_four=Array.new
34
+ @main_groups_sub_level_five=Array.new
35
+ #Group statistics
36
+ @main_total=0
37
+ @main_passed=0
38
+ @main_failed=0
39
+ @main_not_run=0
40
+ @group_test_case_arr=Array.new(test_cases_array)
41
+ @grouping=grouping
42
+ @pass_statuses=MobyUtil::Parameter[ :report_passed_statuses, "passed" ].split('|')
43
+ @fail_statuses=MobyUtil::Parameter[ :report_failed_statuses, "failed" ].split('|')
44
+ @not_run_statuses=MobyUtil::Parameter[ :report_not_run_statuses, "not run" ].split('|')
45
+ end
46
+ def clean_reporting_groups(report_group_string)
47
+ cleaned_group_string=''
48
+ reporting_groups_arr=report_group_string.split('|')
49
+ reporting_groups_arr.each do |main|
50
+ groups_arr=main.split(':')
51
+ first=true
52
+ groups_arr.each do |sub|
53
+ if first==true
54
+ cleaned_group_string+=sub.strip
55
+ first=false
56
+ else
57
+ cleaned_group_string+=':'+sub.strip
58
+ end
59
+ end
60
+ cleaned_group_string+='|'
61
+ end
62
+ cleaned_group_string
63
+ end
64
+ def tog_list_statistics(tc_arr,group,status)
65
+ status_row=''
66
+ if status=='all'
67
+ cases_in_group=0
68
+ passed=0
69
+ failed=0
70
+ not_run=0
71
+ tc_arr.each do |x|
72
+ if x[1]==group
73
+ cases_in_group+=1
74
+ tc_status=x[7]
75
+ passed+=1 if tc_status=='passed' || @pass_statuses.include?(tc_status)
76
+ failed+=1 if tc_status=='failed' || @fail_statuses.include?(tc_status)
77
+ not_run+=1 if tc_status=='not run' || @not_run_statuses.include?(tc_status)
78
+ end
79
+ end
80
+ if cases_in_group > 0
81
+ status_row = '<b style="color: #00FF00">Passed:</b>'+passed.to_s+' <b style="color: #FF0000">Failed:</b>'+failed.to_s+' <b style="color: #808080">Not run:</b>'+not_run.to_s+' <b>Total:</b>'+cases_in_group.to_s
82
+ else
83
+ status_row=0
84
+ end
85
+ else
86
+ cases_in_group=0
87
+ tc_arr.each do |x|
88
+ if x[1]==group
89
+ cases_in_group+=1
90
+ end
91
+ end
92
+ if cases_in_group > 0
93
+ status_row = '<b>Total:</b>'+cases_in_group.to_s
94
+ else
95
+ status_row=0
96
+ end
97
+ end
98
+ status_row
99
+ end
100
+ def tog_list_begin(name,tc_arr,status,main=nil)
101
+ if main==nil
102
+ test_statistics=tog_list_statistics(tc_arr,name,status)
103
+ if test_statistics != 0
104
+ html_body='<dl class="togList">'<<
105
+ '<dt onclick="tog(this)" style="background-color: #CCCCCC;"><b><span><input id="Button1" type="button" value="Open" class="btn" /></span> '<<
106
+ name.to_s<<
107
+ '</b> '<<
108
+ '</dt>'<<
109
+ '<dt>'<<
110
+ test_statistics<<
111
+ '</dt>'<<
112
+ '<dd>'
113
+ else
114
+ html_body=0
115
+ end
116
+ else
117
+ html_body='<dl class="togList">'<<
118
+ '<dt onclick="tog(this)" style="background-color: #CCCCCC;"><b><span><input id="Button1" type="button" value="Open" class="btn" /></span> '<<
119
+ name.to_s<<
120
+ '</b> '<<
121
+ '</dt>'<<
122
+ '<dd>'
123
+ end
124
+ html_body
125
+ end
126
+ def tog_list_end(summary=nil)
127
+ if summary == 'main'
128
+ html_body='</dd>'<<
129
+ '<dt>'<<
130
+ '<b style="color: #00FF00"> Passed:</b>'<<
131
+ @main_passed.to_s<<
132
+ '<b style="color: #FF0000"> Failed:</b>'<<
133
+ @main_failed.to_s<<
134
+ '<b style="color: #808080"> Not run:</b>'<<
135
+ @main_not_run.to_s<<
136
+ '<b> Total:</b> '<<
137
+ @main_total.to_s<<
138
+ '</dt>'<<
139
+ '</dl>'<<
140
+ '<hr />'
141
+ else
142
+ html_body='</dd>'<<
143
+ '</dl>'<<
144
+ '<hr />'
145
+ end
146
+
147
+ html_body
148
+ end
149
+ def check_duplicate_groups(group_arr,group)
150
+ b_group_exists=false
151
+ group_arr.each do |existing_group|
152
+ if existing_group[0] == group
153
+ b_group_exists=true
154
+ break
155
+ end
156
+ end
157
+ b_group_exists
158
+ end
159
+ def check_duplicate_sub_groups(group_arr,main_group,sub_group)
160
+ b_group_exists=false
161
+ group_arr.each do |existing_group|
162
+ if existing_group[0].to_s == main_group.to_s && existing_group[1].to_s == sub_group.to_s
163
+ b_group_exists=true
164
+ break
165
+ end
166
+ end
167
+ b_group_exists
168
+ end
169
+ def parse_groups()
170
+ if @reporting_groups != nil
171
+ reporting_groups_arr=@reporting_groups.split('|')
172
+ reporting_groups_arr.each do |groups|
173
+ groups_arr=groups.split(':')
174
+ if check_duplicate_groups(@main_groups,groups_arr[0])==false
175
+ @main_groups << [groups_arr[0]]
176
+ end
177
+ current_level=0
178
+ groups_arr.each do |group|
179
+ if current_level==1
180
+ if check_duplicate_sub_groups(@main_groups_sub_level_one,groups_arr[0],group)==false
181
+ @main_groups_sub_level_one << [[groups_arr[0]],[group]]
182
+ end
183
+ end
184
+ if current_level==2
185
+ if check_duplicate_sub_groups(@main_groups_sub_level_two,groups_arr[0],group)==false
186
+ @main_groups_sub_level_two << [[groups_arr[0]],[group]]
187
+ end
188
+ end
189
+ if current_level==3
190
+ if check_duplicate_sub_groups(@main_groups_sub_level_three,groups_arr[0],group)==false
191
+ @main_groups_sub_level_three << [[groups_arr[0]],[group]]
192
+ end
193
+ end
194
+ if current_level==4
195
+ if check_duplicate_sub_groups(@main_groups_sub_level_four,groups_arr[0],group)==false
196
+ @main_groups_sub_level_four << [[groups_arr[0]],[group]]
197
+ end
198
+ end
199
+ if current_level==5
200
+ if check_duplicate_sub_groups(@main_groups_sub_level_five,groups_arr[0],group)==false
201
+ @main_groups_sub_level_five << [[groups_arr[0]],[group]]
202
+ end
203
+ end
204
+ current_level+=1
205
+ end
206
+ end
207
+ end
208
+ end
209
+ def status_select(selection_index, selected_status)
210
+
211
+ status_selection = "<select name=\"#{selection_index}_status_select\">"
212
+ selection_data=''
213
+ @pass_statuses.each do |status|
214
+ if status==selected_status
215
+ selection_data << "<option selected>#{status}</option>"
216
+ else
217
+ selection_data << "<option>#{status}</option>"
218
+ end
219
+ end
220
+ @fail_statuses.each do |status|
221
+ if status==selected_status
222
+ selection_data << "<option selected>#{status}</option>"
223
+ else
224
+ selection_data << "<option>#{status}</option>"
225
+ end
226
+ end
227
+ @not_run_statuses.each do |status|
228
+ if status==selected_status
229
+ selection_data << "<option selected>#{status}</option>"
230
+ else
231
+ selection_data << "<option>#{status}</option>"
232
+ end
233
+ end
234
+
235
+ status_selection << selection_data << "</select>"
236
+ status_selection
237
+ end
238
+
239
+ def get_user_cols(status,tc_arr)
240
+ cols=nil
241
+ if status=='all' && tc_arr!= nil
242
+ cols = Array.new
243
+ tc_arr.each do |x|
244
+ data_hash=x[12]
245
+ cols << data_hash.keys
246
+ end
247
+ cols=cols.flatten.uniq
248
+ end
249
+ cols
250
+ end
251
+
252
+ def pad_user_data(status,data_hash,all_cols)
253
+ if (status=='all' && all_cols!=nil && !all_cols.empty?)
254
+ keys_need_adding = all_cols - data_hash.keys
255
+ keys_need_adding.each do |new_key|
256
+ data_hash[new_key] = "-"
257
+ end
258
+ end
259
+ end
260
+
261
+ def generate_test_results_table(status,tc_arr,item)
262
+ table_body=Array.new
263
+ if item==nil
264
+ cases_in_group=0
265
+ element=0
266
+ table_body='<table align="center" style="width:100%;">'<<
267
+ '<tr>'<<
268
+ '<td>'<<
269
+ '<b>Execution</b></td>'<<
270
+ '<td>'<<
271
+ '<b>Start Time</b></td>'<<
272
+ '<td>'<<
273
+ '<b>Name</b></td>'<<
274
+ '<td>'<<
275
+ '<b>Duration</b></td>'<<
276
+ '<td>'<<
277
+ '<b>Memory</b></td>'<<
278
+ '<td>'<<
279
+ '<b>Result</b></td>'<<
280
+ '<td>'<<
281
+ '<b>Comment</b></td>'
282
+
283
+ user_cols=get_user_cols(status,tc_arr)
284
+ if (user_cols!=nil && !user_cols.empty?)
285
+ user_cols.sort.each do |col|
286
+ table_body<<'<td>'<<'<b>'<<col.to_s<<'</b></td>'
287
+ end
288
+ end
289
+
290
+ table_body<<'</tr>'
291
+
292
+ tc_arr.each do |x|
293
+ cases_in_group+=1
294
+ @main_total+=1
295
+ tc_status=x[7].to_s
296
+ tc_style_tag=' id=""'
297
+ tc_style_tag=' id="passed_case"' if tc_status=='passed' || @pass_statuses.include?(tc_status)
298
+ tc_style_tag=' id="failed_case"' if tc_status=='failed' || @fail_statuses.include?(tc_status)
299
+ tc_style_tag=' id="not_run_case"' if tc_status=='not run' || @not_run_statuses.include?(tc_status)
300
+ @main_passed+=1 if tc_status=='passed' || @pass_statuses.include?(tc_status)
301
+ @main_failed+=1 if tc_status=='failed' || @fail_statuses.include?(tc_status)
302
+ @main_not_run+=1 if tc_status=='not run' || @not_run_statuses.include?(tc_status)
303
+ tc_name=x[0].to_s.gsub('_',' ')
304
+
305
+ table_body << '<tr' <<
306
+ tc_style_tag <<
307
+ '>'<<
308
+ '<td>'<<
309
+ x[8]<< #testcase execution number
310
+ '</td>'<<
311
+ '<td>'<<
312
+ x[4]<< #testcase start time
313
+ '</td>'<<
314
+ '<td><a name="'+tc_name.gsub(' ','_')+'_'+tc_status.to_s.gsub(' ','_')+'"></a>'<<
315
+ '<a href="'<<
316
+ x[11]<<
317
+ '">'<<
318
+ tc_name<<
319
+ '</a></td>'<<
320
+ '<td>'<<
321
+ x[5]<< #testcase duration
322
+ '</td>'<<
323
+ '<td>'<<
324
+ x[6]<< #testcase memory usage
325
+ '</td>'<<
326
+ '<td>'<<
327
+ status_select(x[8],tc_status) <<
328
+ '</td>'<<
329
+ '<td>'<<
330
+ "<textarea name=\"#{x[8]}_text_area\" cols=\"23\" rows=\"2\">#{x[10]}</textarea>" <<
331
+ '</td>'
332
+
333
+ data_hash=x[12]
334
+ if (data_hash!=nil && !data_hash.empty?)
335
+ #display user data
336
+ pad_user_data(status,data_hash,user_cols)
337
+ user_cols.sort.each do |col|
338
+ row = '<td>'+data_hash[col].to_s+'</td>'
339
+ table_body<<row
340
+ end
341
+ end
342
+ table_body<<'</tr>'
343
+ end
344
+ if cases_in_group>0
345
+ table_body << '</table>'
346
+ else
347
+ table_body='<br/>'
348
+ end
349
+ else
350
+ if status=='all'
351
+ cases_in_group=0
352
+ element=0
353
+ table_body='<table align="center" style="width:100%;">'<<
354
+ '<tr>'<<
355
+ '<td>'<<
356
+ '<b>Name</b></td>'<<
357
+ '<td>'<<
358
+ '<b>Result</b></td>'<<
359
+ '<td>'<<
360
+ '<b>Comment</b></td>'<<
361
+ '</tr>'
362
+ tc_arr.each do |x|
363
+ if x[1]==item.at(1).to_s
364
+ cases_in_group+=1
365
+ @main_total+=1
366
+ tc_status=x[7].to_s
367
+ tc_style_tag=' id=""'
368
+ tc_style_tag=' id="passed_case"' if tc_status=='passed' || @pass_statuses.include?(tc_status)
369
+ tc_style_tag=' id="failed_case"' if tc_status=='failed' || @fail_statuses.include?(tc_status)
370
+ tc_style_tag=' id="not_run_case"' if tc_status=='not run' || @not_run_statuses.include?(tc_status)
371
+ @main_passed+=1 if tc_status=='passed' || @pass_statuses.include?(tc_status)
372
+ @main_failed+=1 if tc_status=='failed' || @fail_statuses.include?(tc_status)
373
+ @main_not_run+=1 if tc_status=='not run' || @not_run_statuses.include?(tc_status)
374
+ tc_name=x[0].to_s.gsub('_',' ')
375
+ table_body << '<tr' <<
376
+ tc_style_tag<<
377
+ '>'<<
378
+ '<td>'<<
379
+ '<a href="'<<
380
+ x[11]<<
381
+ '">'<<
382
+ tc_name<<
383
+ '</a></td>'<<
384
+ '<td>'<<
385
+ status_select(x[8],tc_status) <<
386
+ '</td>'<<
387
+ '<td>'<<
388
+ "<textarea name=\"#{x[8]}_text_area\" cols=\"23\" rows=\"2\">#{x[10]}</textarea>" <<
389
+ '</td>'<<
390
+ '</tr>'
391
+ @group_test_case_arr[element]=['--','--']
392
+ end
393
+ element+=1
394
+ end
395
+ if cases_in_group>0
396
+ table_body << '</table>'
397
+ else
398
+ table_body='<br/>'
399
+
400
+ end
401
+ else
402
+ tc_style_tag=' id=""'
403
+ tc_style_tag=' id="passed_case"' if status=='passed' || @pass_statuses.include?(status)
404
+ tc_style_tag=' id="failed_case"' if status=='failed' || @fail_statuses.include?(status)
405
+ tc_style_tag=' id="not_run_case"' if status=='not run' || @not_run_statuses.include?(status)
406
+ cases_in_group=0
407
+ element=0
408
+ table_body='<table align="center" style="width:100%;">'<<
409
+ '<tr>'<<
410
+ '<td>'<<
411
+ '<b>Name</b></td>'<<
412
+ '<td>'<<
413
+ '<b>Result</b></td>'<<
414
+ '<td>'<<
415
+ '<b>Comment</b></td>'<<
416
+ '</tr>'
417
+ tc_arr.each do |x|
418
+ if x[1]==item.at(1).to_s
419
+ @main_total+=1
420
+ @main_passed+=1 if status=='passed' || @pass_statuses.include?(status)
421
+ @main_failed+=1 if status=='failed' || @fail_statuses.include?(status)
422
+ @main_not_run+=1 if status=='not run' || @not_run_statuses.include?(status)
423
+ cases_in_group+=1
424
+ tc_status=x[7]
425
+ tc_name=x[0].to_s.gsub('_',' ')
426
+ table_body << '<tr' <<
427
+ tc_style_tag<<
428
+ '>'<<
429
+ '<td>'<<
430
+ '<a href="'<<
431
+ x[11]<<
432
+ '">'<<
433
+ tc_name<<
434
+ '</a></td>'<<
435
+ '<td>'<<
436
+ status_select(x[8],tc_status) <<
437
+ '</td>'<<
438
+ '<td>'<<
439
+ "<textarea name=\"#{x[8]}_text_area\" cols=\"23\" rows=\"2\">#{x[10]}</textarea>" <<
440
+ '</td>'<<
441
+ '</tr>'
442
+ @group_test_case_arr[element]=['--','--']
443
+ end
444
+ element+=1
445
+ end
446
+ if cases_in_group > 0
447
+ table_body << '</table>'
448
+ else
449
+ table_body='<br/>'
450
+ end
451
+ end
452
+ end
453
+ table_body
454
+ end
455
+ def generate_report(status)
456
+ html_body=Array.new
457
+ if @grouping==true
458
+ @main_groups.each do |group|
459
+ @main_total=0
460
+ @main_passed=0
461
+ @main_failed=0
462
+ @main_not_run=0
463
+ html_body << tog_list_begin(group,@group_test_case_arr,status,'main')
464
+ html_body << generate_test_results_table(status,@group_test_case_arr,[group,group])
465
+ tog_list1=0
466
+ tog_list2=0
467
+ tog_list3=0
468
+ tog_list4=0
469
+ tog_list5=0
470
+ @main_groups_sub_level_one.each do |item1|
471
+
472
+ if group.to_s == item1.at(0).to_s && @reporting_groups.include?(group.to_s+':'+item1.at(1).to_s)
473
+ tog_list1=tog_list_begin(item1.at(1).to_s,@group_test_case_arr,status)
474
+ if tog_list1 != 0
475
+ html_body << tog_list1
476
+ html_body << generate_test_results_table(status,@group_test_case_arr,item1)
477
+ end
478
+ @main_groups_sub_level_two.each do |item2|
479
+ if group.to_s == item2.at(0).to_s && @reporting_groups.include?(item1.at(1).to_s+':'+item2.at(1).to_s)
480
+ tog_list2=tog_list_begin(item2.at(1).to_s,@group_test_case_arr,status)
481
+ if tog_list2 != 0
482
+ html_body << tog_list2
483
+ html_body << generate_test_results_table(status,@group_test_case_arr,item2)
484
+ end
485
+ @main_groups_sub_level_three.each do |item3|
486
+ if group.to_s == item3.at(0).to_s && @reporting_groups.include?(item2.at(1).to_s+':'+item3.at(1).to_s)
487
+ tog_list3=tog_list_begin(item3.at(1).to_s,@group_test_case_arr,status)
488
+ if tog_list3 != 0
489
+ html_body << tog_list3
490
+ html_body << generate_test_results_table(status,@group_test_case_arr,item3)
491
+ end
492
+ @main_groups_sub_level_four.each do |item4|
493
+ if group.to_s == item4.at(0).to_s && @reporting_groups.include?(item3.at(1).to_s+':'+item4.at(1).to_s)
494
+ tog_list4=tog_list_begin(item4.at(1).to_s,@group_test_case_arr,status)
495
+ if tog_list4 != 0
496
+ html_body << tog_list4
497
+ html_body << generate_test_results_table(status,@group_test_case_arr,item4)
498
+ end
499
+ @main_groups_sub_level_five.each do |item5|
500
+ if group.to_s == item5.at(0).to_s && @reporting_groups.include?(item4.at(1).to_s+':'+item5.at(1).to_s)
501
+ tog_list5=tog_list_begin(item5.at(1).to_s,@group_test_case_arr,status)
502
+ if tog_list5 != 0
503
+ html_body << tog_list5
504
+ html_body << generate_test_results_table(status,@group_test_case_arr,item5)
505
+ html_body << tog_list_end()
506
+ end
507
+ end
508
+ end
509
+ if tog_list4 != 0
510
+ html_body << tog_list_end()
511
+ end
512
+ end
513
+ end
514
+ if tog_list3 != 0
515
+ html_body << tog_list_end()
516
+ end
517
+ end
518
+ end
519
+ if tog_list2 != 0
520
+ html_body << tog_list_end()
521
+ end
522
+ end
523
+ end
524
+ if tog_list1 != 0
525
+ html_body << tog_list_end()
526
+ end
527
+ end
528
+ end
529
+ html_body << tog_list_end('main')
530
+ end
531
+ html_body << generate_test_results_table(status,@group_test_case_arr,['not_in_any_user_defined_group','not_in_any_user_defined_group'])
532
+ else
533
+ #html_body << tog_list_begin('Total run',@group_test_case_arr,status,'main')
534
+ html_body << generate_test_results_table(status,@group_test_case_arr,nil)
535
+ html_body << tog_list_end('main')
536
+ end
537
+ html_body
538
+ end
539
+ end