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,158 @@
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
+
22
+
23
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'report' ) )
24
+ #Report module which contains the Cucumber, Test::Unit and RSpec report formatters
25
+ begin
26
+ require 'cucumber/ast/visitor'
27
+ module TDriverReport
28
+ #Class for formatting cucumber report
29
+ class CucumberFormatter < Cucumber::Ast::Visitor
30
+ include TDriverReportCreator
31
+ #This method initializes new test run
32
+ #
33
+ # === params
34
+ # === returns
35
+ # === raises
36
+ def initialize(step_mother, io, options)
37
+ file, line = caller.first.split(":")
38
+ $stderr.puts "Please note that CucumberListener may soon be deprecated. Use TDriverReport::CucumberReporter instead." % [ file, line]
39
+ super(step_mother)
40
+ start_run()
41
+ @options = options
42
+ @current_feature_element = nil
43
+ @current_feature = nil
44
+ @tc_status=nil
45
+ @current_feature_group=nil
46
+ at_exit do
47
+ end_test_case(@current_feature_element,@tc_status)
48
+ end
49
+ end
50
+ #This method visits the executed cucumber step and updates the results in to TDriver report
51
+ #
52
+ # === params
53
+ # === returns
54
+ # === raises
55
+ def visit_step_name(keyword, step_match, status, source_indent, background)
56
+ if status == :passed
57
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
58
+ update_test_case("#{step_name} PASSED")
59
+ @tc_status='passed'
60
+ end
61
+ if status == :failed
62
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
63
+ update_test_case("#{step_name} FAILED")
64
+ @tc_status='failed'
65
+ end
66
+ if status == :skipped
67
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
68
+ update_test_case("#{step_name} SKIPPED")
69
+ end
70
+ if status == :undefined
71
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
72
+ update_test_case("#{step_name} NOT RUN")
73
+ @tc_status='not run'
74
+ end
75
+ end
76
+ #This method visits the exception caused by a failed step
77
+ #and updates the result in to TDriver report
78
+ #
79
+ # === params
80
+ # === returns
81
+ # === raises
82
+ def visit_exception(exception, status)
83
+ if status == :failed
84
+ capture_screen_test_case()
85
+ update_test_case(exception.message)
86
+ end
87
+ update_test_case('-') if status == :passed
88
+ end
89
+ #This method visits cucumber scenario name and starts a new test case when
90
+ #new scenario is executed
91
+ #and updates the result in to TDriver report
92
+ #
93
+ # === params
94
+ # === returns
95
+ # === raises
96
+ def visit_scenario_name(keyword, name, file_colon_line, source_indent)
97
+ visit_feature_element_name(keyword, name, file_colon_line, source_indent)
98
+ end
99
+ def visit_feature_name(name)
100
+ @current_feature_group=name.gsub(/[:]/,'')
101
+ add_report_group('Features:'+@current_feature_group+'|')
102
+ end
103
+ #This method determines when new test case needs to be started
104
+ #based on the scenario name info if scenario name is different then a new test case
105
+ #is started
106
+ #
107
+ # === params
108
+ # === returns
109
+ # === raises
110
+ def visit_feature_element_name(keyword, name, file_colon_line, source_indent)
111
+ line = %Q("#{name}")
112
+ @current_feature_element=line if @current_feature_element.nil?
113
+ unless line == @current_feature_element
114
+ end_test_case(@current_feature_element,@tc_status)
115
+ @current_feature_element=line
116
+ end
117
+ start_test_case(@current_feature_element)
118
+ add_test_case_group(@current_feature_group)
119
+ @tc_status=nil
120
+ end
121
+ #This method records the cucumber outline table results in to one test case
122
+ #
123
+ # === params
124
+ # === returns
125
+ # === raises
126
+ def visit_outline_table(outline_table)
127
+ update_test_case("running outline: ")
128
+ super
129
+ end
130
+ #This method records the cucumber outline table results in to one test case
131
+ #
132
+ # === params
133
+ # === returns
134
+ # === raises
135
+ def visit_table_row(table_row)
136
+ super
137
+ if table_row.exception
138
+ @tc_status='failed'
139
+ capture_screen_test_case()
140
+ update_test_case("#{format_table_row(table_row)} FAILED")
141
+ update_test_case(table_row.exception)
142
+ else
143
+ @tc_status='passed' if @tc_status==nil
144
+ update_test_case("#{format_table_row(table_row)} PASSED")
145
+ end
146
+ end
147
+ def format_table_row(row)
148
+ begin
149
+ [row.name, row.line]
150
+ rescue Exception => e
151
+ row
152
+ end
153
+ end
154
+ end
155
+ end
156
+ rescue LoadError
157
+
158
+ end
@@ -0,0 +1,337 @@
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
+ require File.expand_path( File.join( File.dirname( __FILE__ ), 'report' ) )
22
+ #Report module which contains the Cucumber, Test::Unit and RSpec report formatters
23
+ begin
24
+ module TDriverReport
25
+ #Class for formatting cucumber report
26
+ class CucumberListener
27
+ include TDriverReportCreator
28
+ #This method initializes new test run
29
+ #
30
+ # === params
31
+ # === returns
32
+ # === raises
33
+ def initialize(step_mother, io, options)
34
+ file, line = caller.first.split(":")
35
+ $stderr.puts "Please note that CucumberListener may soon be deprecated. Use TDriverReport::CucumberReporter instead." % [ file, line]
36
+ #super(step_mother, io, options)
37
+ start_run()
38
+ @options = options
39
+ @current_feature_element = nil
40
+ @current_feature = nil
41
+ @tc_status=nil
42
+ @current_feature_group=nil
43
+ end
44
+ def after_features(features)
45
+ end_test_case(@current_feature_element,@tc_status)
46
+ end
47
+ #This method visits the executed cucumber step and updates the results in to TDriver report
48
+ #
49
+ # === params
50
+ # === returns
51
+ # === raises
52
+ def step_name(keyword, step_match, status, source_indent, background)
53
+ if status == :passed
54
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
55
+ update_test_case("#{step_name} PASSED")
56
+ @tc_status='passed'
57
+ end
58
+ if status == :failed
59
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
60
+ update_test_case("#{step_name} FAILED")
61
+ @tc_status='failed'
62
+ end
63
+ if status == :skipped
64
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
65
+ update_test_case("#{step_name} SKIPPED")
66
+ end
67
+ if status == :undefined
68
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
69
+ update_test_case("#{step_name} NOT RUN")
70
+ @tc_status='not run'
71
+ end
72
+ end
73
+ #This method visits the exception caused by a failed step
74
+ #and updates the result in to TDriver report
75
+ #
76
+ # === params
77
+ # === returns
78
+ # === raises
79
+ def exception(exception, status)
80
+ if status == :failed
81
+ capture_screen_test_case()
82
+ update_test_case(exception.message)
83
+ update_test_case(exception.backtrace)
84
+ end
85
+ update_test_case('-') if status == :passed
86
+ end
87
+ #This method visits cucumber scenario name and starts a new test case when
88
+ #new scenario is executed
89
+ #and updates the result in to TDriver report
90
+ #
91
+ # === params
92
+ # === returns
93
+ # === raises
94
+ def scenario_name(keyword, name, file_colon_line, source_indent)
95
+ visit_feature_element_name(keyword, name, file_colon_line, source_indent)
96
+ end
97
+ def feature_name(name)
98
+ @current_feature_group=name.gsub(/[:]/,'')
99
+ add_report_group('Features:'+@current_feature_group+'|')
100
+ end
101
+ #This method determines when new test case needs to be started
102
+ #based on the scenario name info if scenario name is different then a new test case
103
+ #is started
104
+ #
105
+ # === params
106
+ # === returns
107
+ # === raises
108
+ def visit_feature_element_name(keyword, name, file_colon_line, source_indent)
109
+ line = %Q("#{name}")
110
+ @current_feature_element=line if @current_feature_element.nil?
111
+ unless line == @current_feature_element
112
+ end_test_case(@current_feature_element,@tc_status)
113
+ @current_feature_element=line
114
+ end
115
+ start_test_case(@current_feature_element)
116
+ add_test_case_group(@current_feature_group)
117
+ @tc_status=nil
118
+ end
119
+ #This method records the cucumber outline table results in to one test case
120
+ #
121
+ # === params
122
+ # === returns
123
+ # === raises
124
+ def before_outline_table(outline_table)
125
+ update_test_case("running outline: ")
126
+ end
127
+ #This method records the cucumber outline table results in to one test case
128
+ #
129
+ # === params
130
+ # === returns
131
+ # === raises
132
+ def after_table_row(table_row)
133
+ if table_row.exception
134
+ @tc_status='failed'
135
+ capture_screen_test_case()
136
+ update_test_case("#{format_table_row(table_row)} FAILED")
137
+ update_test_case(table_row.exception)
138
+ else
139
+ @tc_status='passed' if @tc_status==nil
140
+ update_test_case("#{format_table_row(table_row)} PASSED")
141
+ end
142
+ end
143
+ def format_table_row(row)
144
+ begin
145
+ [row.name, row.line]
146
+ rescue Exception => e
147
+ row
148
+ end
149
+ end
150
+ def tag_name(tag_name)
151
+ end
152
+ def comment_line(comment_line)
153
+ end
154
+ def after_tags(tags)
155
+ end
156
+ def after_feature_element(feature_element)
157
+ end
158
+ def after_background(background)
159
+ end
160
+ def before_examples_array(examples_array)
161
+ end
162
+ def examples_name(keyword, name)
163
+ end
164
+ def py_string(string)
165
+ end
166
+ def print_feature_element_name(keyword, name, file_colon_line, source_indent)
167
+ end
168
+ def before_table_row(table_row)
169
+ return unless @table
170
+ @col_index = 0
171
+ end
172
+ def table_cell_value(value, status)
173
+ return unless @table
174
+ status ||= @status || :passed
175
+ end
176
+ end
177
+ end
178
+
179
+ module MattiReport
180
+ #Class for formatting cucumber report
181
+ class CucumberListener
182
+ include TDriverReportCreator
183
+ #This method initializes new test run
184
+ #
185
+ # === params
186
+ # === returns
187
+ # === raises
188
+ def initialize(step_mother, io, options)
189
+ file, line = caller.first.split(":")
190
+ $stderr.puts "%s:%s warning: MattiReport deprecated, use TDriverReport instead" % [ file, line]
191
+ #super(step_mother, io, options)
192
+ start_run()
193
+ @options = options
194
+ @current_feature_element = nil
195
+ @current_feature = nil
196
+ @tc_status=nil
197
+ @current_feature_group=nil
198
+ end
199
+ def after_features(features)
200
+ end_test_case(@current_feature_element,@tc_status)
201
+ end
202
+ #This method visits the executed cucumber step and updates the results in to TDriver report
203
+ #
204
+ # === params
205
+ # === returns
206
+ # === raises
207
+ def step_name(keyword, step_match, status, source_indent, background)
208
+ if status == :passed
209
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
210
+ update_test_case("#{step_name} PASSED")
211
+ @tc_status='passed'
212
+ end
213
+ if status == :failed
214
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
215
+ update_test_case("#{step_name} FAILED")
216
+ @tc_status='failed'
217
+ end
218
+ if status == :skipped
219
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
220
+ update_test_case("#{step_name} SKIPPED")
221
+ end
222
+ if status == :undefined
223
+ step_name = step_match.format_args(lambda{|param| "*#{param}*"})
224
+ update_test_case("#{step_name} NOT RUN")
225
+ @tc_status='not run'
226
+ end
227
+ end
228
+ #This method visits the exception caused by a failed step
229
+ #and updates the result in to TDriver report
230
+ #
231
+ # === params
232
+ # === returns
233
+ # === raises
234
+ def exception(exception, status)
235
+ if status == :failed
236
+ capture_screen_test_case()
237
+ update_test_case(exception.message)
238
+ update_test_case(exception.backtrace)
239
+ end
240
+ update_test_case('-') if status == :passed
241
+ end
242
+ #This method visits cucumber scenario name and starts a new test case when
243
+ #new scenario is executed
244
+ #and updates the result in to TDriver report
245
+ #
246
+ # === params
247
+ # === returns
248
+ # === raises
249
+ def scenario_name(keyword, name, file_colon_line, source_indent)
250
+ visit_feature_element_name(keyword, name, file_colon_line, source_indent)
251
+ end
252
+ def feature_name(name)
253
+ @current_feature_group=name.gsub(/[:]/,'')
254
+ add_report_group('Features:'+@current_feature_group+'|')
255
+ end
256
+ #This method determines when new test case needs to be started
257
+ #based on the scenario name info if scenario name is different then a new test case
258
+ #is started
259
+ #
260
+ # === params
261
+ # === returns
262
+ # === raises
263
+ def visit_feature_element_name(keyword, name, file_colon_line, source_indent)
264
+ line = %Q("#{name}")
265
+ @current_feature_element=line if @current_feature_element.nil?
266
+ unless line == @current_feature_element
267
+ end_test_case(@current_feature_element,@tc_status)
268
+ @current_feature_element=line
269
+ end
270
+ start_test_case(@current_feature_element)
271
+ add_test_case_group(@current_feature_group)
272
+ @tc_status=nil
273
+ end
274
+ #This method records the cucumber outline table results in to one test case
275
+ #
276
+ # === params
277
+ # === returns
278
+ # === raises
279
+ def before_outline_table(outline_table)
280
+ update_test_case("running outline: ")
281
+ end
282
+ #This method records the cucumber outline table results in to one test case
283
+ #
284
+ # === params
285
+ # === returns
286
+ # === raises
287
+ def after_table_row(table_row)
288
+ if table_row.exception
289
+ @tc_status='failed'
290
+ capture_screen_test_case()
291
+ update_test_case("#{format_table_row(table_row)} FAILED")
292
+ update_test_case(table_row.exception)
293
+ else
294
+ @tc_status='passed' if @tc_status==nil
295
+ update_test_case("#{format_table_row(table_row)} PASSED")
296
+ end
297
+ end
298
+ def format_table_row(row)
299
+ begin
300
+ [row.name, row.line]
301
+ rescue Exception => e
302
+ row
303
+ end
304
+ end
305
+ def tag_name(tag_name)
306
+ end
307
+ def comment_line(comment_line)
308
+ end
309
+ def after_tags(tags)
310
+ end
311
+ def after_feature_element(feature_element)
312
+ end
313
+ def after_background(background)
314
+ end
315
+ def before_examples_array(examples_array)
316
+ end
317
+ def examples_name(keyword, name)
318
+ end
319
+ def py_string(string)
320
+ end
321
+ def print_feature_element_name(keyword, name, file_colon_line, source_indent)
322
+ end
323
+ def before_table_row(table_row)
324
+ return unless @table
325
+ @col_index = 0
326
+ end
327
+ def table_cell_value(value, status)
328
+ return unless @table
329
+ status ||= @status || :passed
330
+ end
331
+ end
332
+ end
333
+
334
+
335
+ rescue LoadError
336
+
337
+ end