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.
- data/README +1 -0
- data/bin/start_app_perf +199 -0
- data/bin/tdriver-devtools +3 -0
- data/config/sut_parameters.rb +39 -0
- data/ext/extconf.rb +67 -0
- data/ext/native_extensions.c +70 -0
- data/lib/matti.rb +30 -0
- data/lib/tdriver-devtools/behaviour/old/xml/example/flick-example.rb +223 -0
- data/lib/tdriver-devtools/behaviour/old/xml/example/impl.rb_invalid +194 -0
- data/lib/tdriver-devtools/behaviour/old/xml/generate_behaviour_xml.rb +95 -0
- data/lib/tdriver-devtools/behaviour/old/xml/lib/tdriver_generator.rb +722 -0
- data/lib/tdriver-devtools/behaviour/old/xml/qdoc_generator.rb +321 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.method.template +43 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.module.template +54 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument.template +7 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument_type.template +7 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.exception.template +5 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.line.template +2 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.template +5 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.method.template +23 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.template +14 -0
- data/lib/tdriver-devtools/behaviour/old/xml/update +3 -0
- data/lib/tdriver-devtools/behaviour/xml/generate.rb +88 -0
- data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +1924 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.default.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument_type.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.exception.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.arguments.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.deprecated.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.exceptions.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.info.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.returns.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.tables.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.template +12 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.returns.template +5 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.item.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.row.template +2 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.template +8 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.template +14 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/example/flick-example.rb +245 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/example/sut.rb +964 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/generate.rb +68 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/lib/custom_rdoc_generator.rb +1865 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.default.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument_type.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.exception.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.arguments.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.deprecated.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.exceptions.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.info.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.returns.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.tables.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.template +12 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.returns.template +5 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.item.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.row.template +2 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.template +7 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.template +14 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/update +3 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/QtExampleGestureBehaviour.xml +138 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/created.rid +1 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/tdriver.hash +1 -0
- data/lib/tdriver-devtools/doc/feature_xml/qt_widget_hold.feature.xml +9 -0
- data/lib/tdriver-devtools/doc/feature_xml/qt_widget_tap.feature.xml +9 -0
- data/lib/tdriver-devtools/doc/generate.rb +892 -0
- data/lib/tdriver-devtools/doc/update +1 -0
- data/lib/tdriver-devtools/doc/xslt/html.rb +7 -0
- data/lib/tdriver-devtools/doc/xslt/template.xsl +1861 -0
- data/lib/tdriver-devtools/doc/xslt/update +3 -0
- data/lib/tdriver-devtools/plugin/placeholder.txt +1 -0
- data/lib/tdriver-devtools/tdriver-devtools.rb +404 -0
- data/lib/tdriver-devtools/tests/feature_tests/example/flick-example.rb +233 -0
- data/lib/tdriver-devtools/tests/feature_tests/example/impl.rb +194 -0
- data/lib/tdriver-devtools/tests/feature_tests/generate.rb +82 -0
- data/lib/tdriver-devtools/tests/feature_tests/lib/custom_rdoc_generator.rb +468 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/feature_attribute.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/feature_method.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_attribute.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_method.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/update +3 -0
- data/lib/tdriver.rb +26 -0
- data/lib/tdriver/base/behaviour/behaviour.rb +32 -0
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +94 -0
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +262 -0
- data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +111 -0
- data/lib/tdriver/base/behaviour/factory.rb +380 -0
- data/lib/tdriver/base/behaviour/loader.rb +28 -0
- data/lib/tdriver/base/command_data/command_data.rb +51 -0
- data/lib/tdriver/base/command_data/loader.rb +25 -0
- data/lib/tdriver/base/errors.rb +131 -0
- data/lib/tdriver/base/loader.rb +38 -0
- data/lib/tdriver/base/state_object.rb +270 -0
- data/lib/tdriver/base/sut/adapter.rb +28 -0
- data/lib/tdriver/base/sut/controller.rb +119 -0
- data/lib/tdriver/base/sut/factory.rb +287 -0
- data/lib/tdriver/base/sut/generic/behaviours/application.rb +243 -0
- data/lib/tdriver/base/sut/generic/behaviours/controller.rb +67 -0
- data/lib/tdriver/base/sut/generic/behaviours/find.rb +96 -0
- data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +346 -0
- data/lib/tdriver/base/sut/generic/behaviours/sut.rb +1268 -0
- data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +182 -0
- data/lib/tdriver/base/sut/generic/behaviours/verification.rb +119 -0
- data/lib/tdriver/base/sut/generic/commands/application.rb +219 -0
- data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +82 -0
- data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +58 -0
- data/lib/tdriver/base/sut/generic/plugin.rb +96 -0
- data/lib/tdriver/base/sut/loader.rb +35 -0
- data/lib/tdriver/base/sut/sut.rb +67 -0
- data/lib/tdriver/base/test_object/abstract.rb +179 -0
- data/lib/tdriver/base/test_object/behaviours/syncronization.rb +94 -0
- data/lib/tdriver/base/test_object/behaviours/test_object.rb +787 -0
- data/lib/tdriver/base/test_object/factory.rb +618 -0
- data/lib/tdriver/base/test_object/identificator.rb +511 -0
- data/lib/tdriver/base/test_object/loader.rb +37 -0
- data/lib/tdriver/env.rb +21 -0
- data/lib/tdriver/loader.rb +36 -0
- data/lib/tdriver/matti.rb +35 -0
- data/lib/tdriver/report/error_recovery/tdriver_custom_error_recovery.rb +83 -0
- data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +158 -0
- data/lib/tdriver/report/error_recovery/tdriver_error_recovery_settings.rb +98 -0
- data/lib/tdriver/report/report.rb +47 -0
- data/lib/tdriver/report/report_api.rb +207 -0
- data/lib/tdriver/report/report_combine.rb +86 -0
- data/lib/tdriver/report/report_crash_file_capture.rb +167 -0
- data/lib/tdriver/report/report_creator.rb +571 -0
- data/lib/tdriver/report/report_cucumber.rb +158 -0
- data/lib/tdriver/report/report_cucumber_listener.rb +337 -0
- data/lib/tdriver/report/report_cucumber_reporter.rb +335 -0
- data/lib/tdriver/report/report_data_presentation.rb +152 -0
- data/lib/tdriver/report/report_data_table.rb +64 -0
- data/lib/tdriver/report/report_execution_statistics.rb +284 -0
- data/lib/tdriver/report/report_file_capture.rb +159 -0
- data/lib/tdriver/report/report_grouping.rb +539 -0
- data/lib/tdriver/report/report_junit_xml.rb +147 -0
- data/lib/tdriver/report/report_rspec.rb +108 -0
- data/lib/tdriver/report/report_test_case_run.rb +621 -0
- data/lib/tdriver/report/report_test_run.rb +1286 -0
- data/lib/tdriver/report/report_test_unit.rb +175 -0
- data/lib/tdriver/report/report_writer.rb +1405 -0
- data/lib/tdriver/tdriver.rb +158 -0
- data/lib/tdriver/util/common.rb +24 -0
- data/lib/tdriver/util/common/array.rb +39 -0
- data/lib/tdriver/util/common/crc16.rb +100 -0
- data/lib/tdriver/util/common/environment.rb +153 -0
- data/lib/tdriver/util/common/error.rb +39 -0
- data/lib/tdriver/util/common/file.rb +315 -0
- data/lib/tdriver/util/common/gem.rb +108 -0
- data/lib/tdriver/util/common/kernel.rb +189 -0
- data/lib/tdriver/util/common/loader.rb +39 -0
- data/lib/tdriver/util/common/retryable.rb +98 -0
- data/lib/tdriver/util/common/string.rb +77 -0
- data/lib/tdriver/util/dbaccess/dbaccess.rb +188 -0
- data/lib/tdriver/util/dbaccess/dbconnection.rb +41 -0
- data/lib/tdriver/util/dbaccess/error.rb +35 -0
- data/lib/tdriver/util/dbaccess/loader.rb +29 -0
- data/lib/tdriver/util/dynamic_attribute_filter.rb +182 -0
- data/lib/tdriver/util/hooking.rb +434 -0
- data/lib/tdriver/util/loader.rb +65 -0
- data/lib/tdriver/util/localisation.rb +24 -0
- data/lib/tdriver/util/localisation/error.rb +32 -0
- data/lib/tdriver/util/localisation/loader.rb +28 -0
- data/lib/tdriver/util/localisation/localisation.rb +479 -0
- data/lib/tdriver/util/logger.rb +377 -0
- data/lib/tdriver/util/operator_data/error.rb +29 -0
- data/lib/tdriver/util/operator_data/loader.rb +26 -0
- data/lib/tdriver/util/operator_data/operator_data.rb +93 -0
- data/lib/tdriver/util/other/config.rb +221 -0
- data/lib/tdriver/util/parameter.rb +24 -0
- data/lib/tdriver/util/parameter/error.rb +45 -0
- data/lib/tdriver/util/parameter/loader.rb +37 -0
- data/lib/tdriver/util/parameter/parameter.rb +285 -0
- data/lib/tdriver/util/parameter/parameter_hash.rb +101 -0
- data/lib/tdriver/util/parameter/parameter_template.rb +120 -0
- data/lib/tdriver/util/parameter/parameter_user_api.rb +84 -0
- data/lib/tdriver/util/parameter/parameter_xml.rb +247 -0
- data/lib/tdriver/util/plugin/abstract.rb +60 -0
- data/lib/tdriver/util/plugin/error.rb +25 -0
- data/lib/tdriver/util/plugin/loader.rb +28 -0
- data/lib/tdriver/util/plugin/service.rb +200 -0
- data/lib/tdriver/util/recorder.rb +292 -0
- data/lib/tdriver/util/stats.rb +90 -0
- data/lib/tdriver/util/user_data/error.rb +29 -0
- data/lib/tdriver/util/user_data/loader.rb +26 -0
- data/lib/tdriver/util/user_data/user_data.rb +103 -0
- data/lib/tdriver/util/video_rec.rb +264 -0
- data/lib/tdriver/util/xml/abstraction.rb +47 -0
- data/lib/tdriver/util/xml/builder.rb +54 -0
- data/lib/tdriver/util/xml/document.rb +32 -0
- data/lib/tdriver/util/xml/element.rb +32 -0
- data/lib/tdriver/util/xml/error.rb +46 -0
- data/lib/tdriver/util/xml/loader.rb +46 -0
- data/lib/tdriver/util/xml/nil_element.rb +89 -0
- data/lib/tdriver/util/xml/nodeset.rb +32 -0
- data/lib/tdriver/util/xml/parsers/libxml/libxml.rb +140 -0
- data/lib/tdriver/util/xml/parsers/loader.rb +22 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +111 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +54 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/builder.rb +58 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +58 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +147 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +42 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +187 -0
- data/lib/tdriver/util/xml/xml.rb +170 -0
- data/lib/tdriver/verify/verify.rb +687 -0
- data/lib/tdriver/verify/verify.rb_org +630 -0
- data/lib/tdriver/version.rb +21 -0
- data/xml/behaviours/generic.xml +495 -0
- data/xml/defaults/generic.xml +97 -0
- data/xml/defaults/sut_generic.xml +36 -0
- data/xml/parameters/tdriver_parameters.xml +23 -0
- data/xml/templates/generic.xml +227 -0
- metadata +327 -0
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
# behaviour abstract class
|
|
24
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'behaviour' ) )
|
|
25
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'factory' ) )
|
|
26
|
+
|
|
27
|
+
# load generic behaviours
|
|
28
|
+
MobyUtil::FileHelper.load_modules( File.expand_path( File.join( File.dirname( __FILE__ ), 'behaviours' ) ) )
|
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
module MobyCommand
|
|
24
|
+
|
|
25
|
+
# Class to represent Controller interface
|
|
26
|
+
|
|
27
|
+
class CommandData
|
|
28
|
+
|
|
29
|
+
def initialize
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def set_application_uid( id )
|
|
33
|
+
@_application_id = id
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def get_application_id
|
|
37
|
+
@_application_id = "" unless @_application_id
|
|
38
|
+
@_application_id
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def set_sut( sut )
|
|
42
|
+
@_sut = sut
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def get_sut( sut )
|
|
46
|
+
@_sut
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end # module
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
+
# command_data abstract class
|
|
24
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'command_data' ) )
|
|
25
|
+
|
|
@@ -0,0 +1,131 @@
|
|
|
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
|
+
module MobyBase
|
|
22
|
+
|
|
23
|
+
class Error
|
|
24
|
+
|
|
25
|
+
@@errors = {
|
|
26
|
+
:WrongArgumentType => {:type => "ArgumentError", :text => "Wrong argument type %s (Expected %s)"},
|
|
27
|
+
:WrongArgumentTypeFor => {:type => "ArgumentError", :text => "Wrong argument type %s for %s (Expected %s)"},
|
|
28
|
+
:ArgumentSymbolExpected => {:type => "ArgumentError", :text => "Symbol %s expected in argument(s)"},
|
|
29
|
+
:InvalidStringLengthFor => {:type => "ArgumentError", :text => "Invalid string length (%i) for %s (Expected %s)"},
|
|
30
|
+
:BehaviourErrorOccured => {:type => "RuntimeError", :text => "%s method failed with message: %s. Debug info: %s"}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
def self.raise( error_id, *params )
|
|
34
|
+
|
|
35
|
+
if @@errors.has_key?( error_id )
|
|
36
|
+
|
|
37
|
+
error_type = eval(@@errors[ error_id ][ :type ])
|
|
38
|
+
error_text = @@errors[ error_id ][ :text ]
|
|
39
|
+
|
|
40
|
+
# Replace %s to given parameters
|
|
41
|
+
message = error_text.gsub( /\%[-]*\d*[disxX]/ ) { | match | ( params.size > 0 ) ? "#{ match }" % params.shift : match }
|
|
42
|
+
|
|
43
|
+
else
|
|
44
|
+
|
|
45
|
+
# Raise ArgumentError if given id is not defined in @@error_base hash table
|
|
46
|
+
error_type = ArgumentError
|
|
47
|
+
message = "No error found for ID '%s' (Parameters: %s)" % [ error_id, params.join( ", " ) ]
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
error = error_type.new( message )
|
|
52
|
+
Kernel::raise error
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# enable hooking for performance measurement & debug logging
|
|
56
|
+
MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# TODO: document
|
|
61
|
+
class MobyStandardError < StandardError
|
|
62
|
+
# Construct a new error, optionally passing in a message
|
|
63
|
+
def initialize ( message = nil ); super( message ); end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# TODO: document
|
|
67
|
+
class TestObjectNotVisibleError < MobyStandardError; end;
|
|
68
|
+
|
|
69
|
+
# TODO: document
|
|
70
|
+
class TestObjectNotFoundError < MobyStandardError; end;
|
|
71
|
+
|
|
72
|
+
# TODO: document
|
|
73
|
+
class MultipleTestObjectsIdentifiedError < MobyStandardError; end;
|
|
74
|
+
|
|
75
|
+
# TODO: document
|
|
76
|
+
class MultipleAttributesFoundError < MobyStandardError; end;
|
|
77
|
+
|
|
78
|
+
# TODO: document
|
|
79
|
+
class AttributeNotFoundError < MobyStandardError; end;
|
|
80
|
+
|
|
81
|
+
# TODO: document
|
|
82
|
+
class TestObjectNotInitializedError < MobyStandardError; end;
|
|
83
|
+
|
|
84
|
+
# TODO: document
|
|
85
|
+
class FileNotFoundError < MobyStandardError; end;
|
|
86
|
+
|
|
87
|
+
# TODO: document
|
|
88
|
+
class TestObjectIdentificatorError < MobyStandardError; end;
|
|
89
|
+
|
|
90
|
+
#Raised when a method is called with an invalid parameter(eg. wrong type, impossible value, nil)
|
|
91
|
+
class InvalidParameterError < MobyStandardError; end;
|
|
92
|
+
|
|
93
|
+
# This error should be raised when verification results were not as expected
|
|
94
|
+
class VerificationError < MobyStandardError; end;
|
|
95
|
+
|
|
96
|
+
# This verification error should overwrite standard verification procedure and
|
|
97
|
+
# fail immediately
|
|
98
|
+
class ContinuousVerificationError < VerificationError; end;
|
|
99
|
+
|
|
100
|
+
# This error should be raised to indicate that a synchronization timeout has elapsed without
|
|
101
|
+
# synchronization conditions having been met.
|
|
102
|
+
class SyncTimeoutError < MobyStandardError; end;
|
|
103
|
+
|
|
104
|
+
class ControllerError < MobyStandardError; end; #def initialize ( msg = nil ); super( msg ); end; end # class
|
|
105
|
+
|
|
106
|
+
class ControllerNotFoundError < MobyStandardError; end;
|
|
107
|
+
|
|
108
|
+
class CommandNotFoundError < MobyStandardError; end
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
# TODO: document
|
|
112
|
+
class MobyCustomError < StandardError
|
|
113
|
+
attr_reader :message
|
|
114
|
+
def initialize( message = "" )
|
|
115
|
+
# get backtrace from error
|
|
116
|
+
tmp_trace = ( ( $!.nil? ) ? [] : $!.backtrace )
|
|
117
|
+
# add caller method to backtrace
|
|
118
|
+
set_backtrace( ( ( caller( 2 ).nil? ) ? tmp_trace : tmp_trace.unshift( caller( 2 ).first[ /(.+):in/, 1 ] ) ) )
|
|
119
|
+
@message = message << ( $!.nil? ? "" : ". Exception: #{ $!.message }" )
|
|
120
|
+
super
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# TODO: document
|
|
125
|
+
class BehaviourError < MobyCustomError
|
|
126
|
+
def initialize ( method_name = nil, description = nil )
|
|
127
|
+
super( "%s failed. %s" % [ method_name, description ] )
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
end # MobyBase
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
# behaviour abstraction class, factory and all other related modules etc
|
|
22
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'behaviour/loader' ) )
|
|
23
|
+
|
|
24
|
+
# command_data abstraction class etc.
|
|
25
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'command_data/loader' ) )
|
|
26
|
+
|
|
27
|
+
# sut abstract class, generic sut etc
|
|
28
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'sut/loader' ) )
|
|
29
|
+
|
|
30
|
+
# error classes
|
|
31
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'errors' ) )
|
|
32
|
+
|
|
33
|
+
# test object abstraction, factory, identificator behaviours and all other related modules
|
|
34
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'test_object/loader' ) )
|
|
35
|
+
|
|
36
|
+
# state object
|
|
37
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'state_object' ) )
|
|
38
|
+
|
|
@@ -0,0 +1,270 @@
|
|
|
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
|
+
module MobyBase
|
|
22
|
+
|
|
23
|
+
# Static representation of the state of a TestObject or SUT.
|
|
24
|
+
# StateObject are not refreshed or synchronize etc.
|
|
25
|
+
class StateObject
|
|
26
|
+
|
|
27
|
+
#include MobyBehaviour::TestObjectComposition
|
|
28
|
+
include MobyBehaviour::ObjectComposition
|
|
29
|
+
|
|
30
|
+
# The test object factory is needed for populating child object accessor methods
|
|
31
|
+
#@test_object_factory
|
|
32
|
+
|
|
33
|
+
# == description
|
|
34
|
+
# attr_accessor
|
|
35
|
+
#
|
|
36
|
+
# == returns
|
|
37
|
+
# Test Object
|
|
38
|
+
# description: test object that was used as parent when this object was created. Can also be of type SUT if sut was the parent (ie. application objects)
|
|
39
|
+
# example: "@sut"
|
|
40
|
+
attr_accessor :parent
|
|
41
|
+
|
|
42
|
+
# Creates a new StateObject from XML source data.
|
|
43
|
+
#
|
|
44
|
+
# === params
|
|
45
|
+
# xml_source:: MobyUtil::XML::Element or String. Contains the root element of this state.
|
|
46
|
+
# parent:: TestObject, SUT or StateObject. Parent of this state object. Must be of type TestObjectComposition.
|
|
47
|
+
# === returns
|
|
48
|
+
# StateObject:: New StateObject
|
|
49
|
+
def initialize( xml_source, parent = nil )
|
|
50
|
+
|
|
51
|
+
xml_element = nil
|
|
52
|
+
|
|
53
|
+
if xml_source.kind_of?( MobyUtil::XML::Element )
|
|
54
|
+
|
|
55
|
+
xml_element = xml_source
|
|
56
|
+
|
|
57
|
+
elsif xml_source.kind_of?( String )
|
|
58
|
+
|
|
59
|
+
xml_element = MobyUtil::XML.parse_string(xml_source).root
|
|
60
|
+
|
|
61
|
+
else
|
|
62
|
+
|
|
63
|
+
Kernel::raise ArgumentError.new("The XML source must be a String or MobyUtil::XML::Element, it was of type '#{ xml_source.class.to_s }'.")
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
@parent = nil
|
|
68
|
+
add_parent( parent ) unless parent.nil?
|
|
69
|
+
|
|
70
|
+
self.xml_data= xml_element
|
|
71
|
+
|
|
72
|
+
@_child_object_cache = {}
|
|
73
|
+
|
|
74
|
+
# Create accessor methods for any child state objects.
|
|
75
|
+
TestObjectFactory.instance.create_child_accessors!( self )
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Tries to use the missing method id as a child object type and find an object based on it
|
|
80
|
+
def method_missing( method_id, *method_arguments )
|
|
81
|
+
|
|
82
|
+
hash_rule = method_arguments.first
|
|
83
|
+
|
|
84
|
+
# method mapping/aliases
|
|
85
|
+
case method_id
|
|
86
|
+
|
|
87
|
+
when :Button;
|
|
88
|
+
method_id = [ :Button, :QToolButton, :DuiButton, :HbPushButton, :softkey ]
|
|
89
|
+
|
|
90
|
+
when :List;
|
|
91
|
+
method_id = [ :QList, :HbListWidgetView, :DuiList ]
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
hash_rule = Hash.new unless hash_rule.kind_of? Hash
|
|
96
|
+
hash_rule[ :type ] = method_id
|
|
97
|
+
|
|
98
|
+
begin
|
|
99
|
+
|
|
100
|
+
return child( hash_rule )
|
|
101
|
+
|
|
102
|
+
rescue MobyBase::TestObjectNotFoundError, MobyBase::TestObjectNotVisibleError
|
|
103
|
+
|
|
104
|
+
hash_rule.delete(:type)
|
|
105
|
+
|
|
106
|
+
raise MobyBase::TestObjectNotFoundError.new(
|
|
107
|
+
"The state object with id: \"#{ self.id.to_s }\", type: \"#{ self.type.to_s }\" and name: \"#{ self.name.to_s }\" has no child object of type \"#{ method_id.inspect.to_s }\"" <<
|
|
108
|
+
( hash_rule.empty? ? "" : " attributes: #{ hash_rule.inspect },"))
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
# Check to StateObject objects for equality (ie. contents, not if they are the same object).
|
|
115
|
+
# === param
|
|
116
|
+
# other_state_object:: StateObject this object is compared to.
|
|
117
|
+
# === returns
|
|
118
|
+
# true:: other_state_object is equal to this StateObject.
|
|
119
|
+
# false:: other_state_object is not equal to this StateObject.
|
|
120
|
+
def eql? (other_state_object)
|
|
121
|
+
self == other_state_object
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
# Verifies that another StateObject contains the same data as this object.
|
|
126
|
+
# type, id and name must match.
|
|
127
|
+
#
|
|
128
|
+
# == param
|
|
129
|
+
# other_state_object:: StateObject that this object is compared to.
|
|
130
|
+
# == returns
|
|
131
|
+
# true:: The other StateObject contains the same data as this one.
|
|
132
|
+
# false:: The other StateObject does notcontain the same data as this one.
|
|
133
|
+
# == raises
|
|
134
|
+
# nothing
|
|
135
|
+
def == (other_state_object)
|
|
136
|
+
return false unless other_state_object.instance_of?( MobyBase::StateObject )
|
|
137
|
+
return false unless self.type == other_state_object.type
|
|
138
|
+
return false unless self.id == other_state_object.id
|
|
139
|
+
return false unless self.name == other_state_object.name
|
|
140
|
+
return true
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
# Function to return type of the state object
|
|
145
|
+
# === returns
|
|
146
|
+
# type:: String value of the type
|
|
147
|
+
def type()
|
|
148
|
+
@type
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Function to return name of the state object
|
|
152
|
+
# === returns
|
|
153
|
+
# name String value of the name
|
|
154
|
+
def name()
|
|
155
|
+
@name
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# Function to return id of the state object
|
|
159
|
+
# === returns
|
|
160
|
+
# id String value of the id
|
|
161
|
+
def id()
|
|
162
|
+
@object_id
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Sets the XML content of this state object. Also sets identification attributes based
|
|
166
|
+
# on the contents of the XML.
|
|
167
|
+
#
|
|
168
|
+
# === params
|
|
169
|
+
# xml_object:: MobyUtil::XML::Element. State as XML.
|
|
170
|
+
def xml_data=( xml_object )
|
|
171
|
+
@_xml_data = xml_object
|
|
172
|
+
@name = xml_object.attribute( 'name' )
|
|
173
|
+
@type = xml_object.attribute( 'type' )
|
|
174
|
+
@object_id = xml_object.attribute( 'id' )
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# Returns a XML element representing this state object.
|
|
178
|
+
#
|
|
179
|
+
# === returns
|
|
180
|
+
# MobyUtil::XML::Element:: XML representation of this state object
|
|
181
|
+
def xml_data()
|
|
182
|
+
|
|
183
|
+
@_xml_data
|
|
184
|
+
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
# Function provides access to parameters of the state object
|
|
188
|
+
# === params
|
|
189
|
+
# name:: String defining the name of the attribute to get
|
|
190
|
+
# === returns
|
|
191
|
+
# String:: Value of the attribute as a string
|
|
192
|
+
# === raises
|
|
193
|
+
# ArgumentError:: name is not a String.
|
|
194
|
+
# AttributeNotFoundError:: if the requested attribute can not be found in the xml data of the object
|
|
195
|
+
def attribute( name )
|
|
196
|
+
|
|
197
|
+
# store xml_data to temp. variable
|
|
198
|
+
_xml_data = @_xml_data
|
|
199
|
+
|
|
200
|
+
Kernel::raise ArgumentError.new( "Wrong argument type %s for attribute argument (expected String)" % name.class ) unless name.class == String
|
|
201
|
+
|
|
202
|
+
Kernel::raise MobyBase::AttributeNotFoundError.new("Could not find attribute '#{ name.to_s }' for state object of type '#{ type.to_s }'.") if (
|
|
203
|
+
elements = _xml_data.xpath(
|
|
204
|
+
"attributes/attribute[translate(@name,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='#{ name.to_s.downcase }']"
|
|
205
|
+
)
|
|
206
|
+
).size == 0
|
|
207
|
+
|
|
208
|
+
elements.first.content.strip
|
|
209
|
+
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def get_cached_test_object!( object )
|
|
213
|
+
|
|
214
|
+
object_hash = object.hash
|
|
215
|
+
|
|
216
|
+
if @_child_object_cache.has_key?( object_hash )
|
|
217
|
+
|
|
218
|
+
object = @_child_object_cache[ object_hash ]
|
|
219
|
+
|
|
220
|
+
true
|
|
221
|
+
|
|
222
|
+
else
|
|
223
|
+
|
|
224
|
+
false
|
|
225
|
+
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
# Creates a state object for a child object of this state object
|
|
231
|
+
# Associates child object as current object's child.
|
|
232
|
+
# and associates self as child object's parent.
|
|
233
|
+
#
|
|
234
|
+
# NOTE:
|
|
235
|
+
# Subsequent calls to #child always returns reference to same child
|
|
236
|
+
# === params
|
|
237
|
+
# attributes:: Hash object holding information for identifying which child to create, eg. :type => :slider
|
|
238
|
+
# === returns
|
|
239
|
+
# StateObject:: new child state object or reference to existing child
|
|
240
|
+
def child( attributes )
|
|
241
|
+
|
|
242
|
+
identified_object_xml = MobyBase::TestObjectIdentificator.new( attributes ).find_object_data( @_xml_data )
|
|
243
|
+
|
|
244
|
+
child_object = StateObject.new( identified_object_xml, self )
|
|
245
|
+
|
|
246
|
+
# use cached test object if once already retrieved
|
|
247
|
+
get_cached_test_object!( child_object ).tap{ | found_in_cache |
|
|
248
|
+
|
|
249
|
+
# add child to objects cache
|
|
250
|
+
add_child( child_object ) unless found_in_cache
|
|
251
|
+
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
child_object
|
|
255
|
+
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
def inspect
|
|
259
|
+
|
|
260
|
+
"#{ self.to_s }\nName: #{ self.name.to_s } Type: #{ self.type.to_s } Id: #{ self.id.to_s }"
|
|
261
|
+
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
# enable hooking for performance measurement & debug logging
|
|
265
|
+
MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
end # StateObject
|
|
269
|
+
|
|
270
|
+
end # MobyBase
|