testability-driver 1.4.0 → 1.4.1
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/lib/tdriver/base/sut/generic/behaviours/sut.rb +7 -3
- data/lib/tdriver/base/sut/generic/behaviours/verification.rb +1 -0
- data/lib/tdriver/base/test_object/behaviours/test_object.rb +8 -1
- data/lib/tdriver/base/test_object/xml/adapter.rb +1 -0
- data/lib/tdriver/util/database/access.rb +24 -6
- data/lib/tdriver/util/localisation/localisation.rb +40 -29
- data/lib/tdriver/version.rb +1 -1
- metadata +4 -4
@@ -290,12 +290,15 @@ module MobyBehaviour
|
|
290
290
|
# TODO: merge TestObject#child and SUT#child
|
291
291
|
# == description
|
292
292
|
# Creates a child test object from this SUT. SUT object will be associated as child test objects parent.\n
|
293
|
-
#
|
293
|
+
# \n
|
294
294
|
# [b]NOTE:[/b] Subsequent calls to TestObject#child( rule ) always returns reference to same Testobject:\n
|
295
295
|
# [code]a = sut.child( :type => 'Button', :text => '1' )
|
296
296
|
# b = sut.child( :type => 'Button', :text => '1' )
|
297
297
|
# a.eql?( b ) # => true[/code]
|
298
|
-
#
|
298
|
+
# \n
|
299
|
+
# [b]NOTE:[/b] If the parameter 'use_find_object' in tdriver_parameters.xml is true (default), objects with visibleOnScreen value 'false' might be
|
300
|
+
# optimized out and not appear in the results.
|
301
|
+
# \n
|
299
302
|
# == arguments
|
300
303
|
# attributes
|
301
304
|
# Hash
|
@@ -1603,7 +1606,8 @@ module MobyBehaviour
|
|
1603
1606
|
:application_uid => refresh_args[ :id ],
|
1604
1607
|
:sut => self,
|
1605
1608
|
:refresh_arguments => refresh_args,
|
1606
|
-
:checksum => xml_data_checksum
|
1609
|
+
:checksum => xml_data_checksum,
|
1610
|
+
:flags => {:useViewCrop=>sut_parameters[ :use_view_crop, 'false' ]}
|
1607
1611
|
}
|
1608
1612
|
)
|
1609
1613
|
|
@@ -46,6 +46,7 @@ module MobyBehaviour
|
|
46
46
|
|
47
47
|
# == description
|
48
48
|
# Checks if a child test object matching the given criteria can be found, under this application object or test object.
|
49
|
+
# NOTE: This won't work with the visibleOnScreen attribute unless you disable the sut parameter use_find_object.
|
49
50
|
#
|
50
51
|
# == arguments
|
51
52
|
# *attributes
|
@@ -452,6 +452,10 @@ module MobyBehaviour
|
|
452
452
|
# [code]a = to.child( :type => 'Button', :text => '1' )
|
453
453
|
# b = to.child( :type => 'Button', :text => '1' )
|
454
454
|
# a.eql?( b ) # => true[/code]
|
455
|
+
# \n
|
456
|
+
# [b]NOTE:[/b] If the parameter 'use_find_object' in tdriver_parameters.xml is true (default), objects with visibleOnScreen value 'false' might be
|
457
|
+
# optimized out and not appear in the results.
|
458
|
+
# \n
|
455
459
|
# == arguments
|
456
460
|
# attributes
|
457
461
|
# Hash
|
@@ -501,7 +505,10 @@ module MobyBehaviour
|
|
501
505
|
end
|
502
506
|
|
503
507
|
# == description
|
504
|
-
# Function similar to child, but returns an array of children test objects that meet the given criteria
|
508
|
+
# Function similar to child, but returns an array of children test objects that meet the given criteria.
|
509
|
+
# \n\n
|
510
|
+
# [b]NOTE:[/b] If the parameter 'use_find_object' in tdriver_parameters.xml is true (default), objects with visibleOnScreen value 'false' might be
|
511
|
+
# optimized out and not appear in the results.
|
505
512
|
#
|
506
513
|
# == arguments
|
507
514
|
# attributes
|
@@ -111,7 +111,11 @@ module MobyUtil
|
|
111
111
|
|
112
112
|
begin
|
113
113
|
query_result = @@_connections[ host + db_type + database_name ].dbh.query( query_string ) # identical?
|
114
|
-
rescue
|
114
|
+
rescue
|
115
|
+
if @@_mysql
|
116
|
+
@@_mysql.close
|
117
|
+
@@_mysql=nil
|
118
|
+
end
|
115
119
|
#Possible timeout in query attempt to recreate the connection and redo the query
|
116
120
|
dbc.dbh = connect_db( db_type, host, username, password, database_name )
|
117
121
|
@@_connections[ host + db_type + database_name ] = dbc
|
@@ -187,13 +191,25 @@ module MobyUtil
|
|
187
191
|
return result
|
188
192
|
end
|
189
193
|
|
194
|
+
# == description
|
195
|
+
# Function closes MySQL connection
|
196
|
+
#
|
197
|
+
def close_db()
|
198
|
+
|
199
|
+
if @@_mysql
|
200
|
+
@@_mysql.close
|
201
|
+
@@_mysql=nil
|
202
|
+
end
|
203
|
+
|
204
|
+
end
|
205
|
+
|
190
206
|
private
|
191
207
|
|
192
208
|
# == description
|
193
209
|
# Function establishes a new connection to as sql server and returns it's handle
|
194
210
|
#
|
195
|
-
|
196
|
-
|
211
|
+
def self.connect_db( db_type, host, username, password, database_name )
|
212
|
+
|
197
213
|
# if mysql API and connection are not initialized, then initialize the mysql API
|
198
214
|
if ( db_type == DB_TYPE_MYSQL ) && ( @@_mysql.nil? )
|
199
215
|
require 'mysql'
|
@@ -201,7 +217,7 @@ module MobyUtil
|
|
201
217
|
elsif db_type == DB_TYPE_SQLITE
|
202
218
|
require 'sqlite3'
|
203
219
|
end
|
204
|
-
|
220
|
+
|
205
221
|
begin
|
206
222
|
dbh = @@_mysql.connect( host, username, password, database_name) if db_type == DB_TYPE_MYSQL
|
207
223
|
dbh.query 'SET NAMES utf8' if db_type == DB_TYPE_MYSQL # set the utf8 encoding
|
@@ -211,8 +227,8 @@ module MobyUtil
|
|
211
227
|
end
|
212
228
|
|
213
229
|
return dbh
|
214
|
-
|
215
|
-
end
|
230
|
+
|
231
|
+
end
|
216
232
|
|
217
233
|
# enable hoo./base/test_object/factory.rb:king for performance measurement & debug logging
|
218
234
|
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
@@ -220,3 +236,5 @@ module MobyUtil
|
|
220
236
|
end # DBAccess
|
221
237
|
|
222
238
|
end # MobyUtil
|
239
|
+
|
240
|
+
at_exit{MobyUtil::DBAccess.instance.close_db}
|
@@ -479,7 +479,8 @@ module MobyUtil
|
|
479
479
|
#
|
480
480
|
# == throws
|
481
481
|
#
|
482
|
-
|
482
|
+
|
483
|
+
def self.parse_ts_file(file, column_names_map = {} )
|
483
484
|
# Read TS file
|
484
485
|
open_file = File.new( file )
|
485
486
|
doc = Nokogiri.XML( open_file )
|
@@ -500,7 +501,7 @@ module MobyUtil
|
|
500
501
|
begin
|
501
502
|
nodeId = ""
|
502
503
|
nodeTranslation = ""
|
503
|
-
nodePlurality = ""
|
504
|
+
nodePlurality = "NULL"
|
504
505
|
nodeLengthVar = ""
|
505
506
|
# set nodeId
|
506
507
|
#raise Exception if node.xpath('@id').inner_text() == ""
|
@@ -512,7 +513,8 @@ module MobyUtil
|
|
512
513
|
# Parse Numerus(LengthVar), or Numerus or LengthVar or translation direclty
|
513
514
|
if ! node.xpath('.//translation/numerusform').empty?
|
514
515
|
# puts ">>> Numerusform"
|
515
|
-
|
516
|
+
priority = 1
|
517
|
+
plurality = 'NULL'
|
516
518
|
node.xpath('.//translation/numerusform').each do |numerus|
|
517
519
|
nodePlurality = numerus.xpath('@plurality').inner_text()
|
518
520
|
nodePlurality = plurality.to_s if nodePlurality.empty?
|
@@ -521,15 +523,15 @@ module MobyUtil
|
|
521
523
|
priority = 1
|
522
524
|
numerus.xpath('.//lengthvariant').each do |lenghtvar|
|
523
525
|
nodeLengthVar = lenghtvar.xpath('@priority').inner_text()
|
524
|
-
nodeLengthVar = priority.to_s if nodeLengthVar.empty?
|
526
|
+
nodeLengthVar = priority.to_s if nodeLengthVar.empty?
|
525
527
|
nodeTranslation = lenghtvar.inner_text()
|
526
528
|
data << [ fname, nodeId, nodeTranslation, nodePlurality, nodeLengthVar ]
|
527
529
|
priority += 1
|
528
530
|
end
|
529
531
|
else
|
530
532
|
nodeTranslation = numerus.inner_text()
|
531
|
-
data << [ fname, nodeId, nodeTranslation, nodePlurality, nodeLengthVar ]
|
532
|
-
|
533
|
+
data << [ fname, nodeId, nodeTranslation, nodePlurality, nodeLengthVar = '1' ]
|
534
|
+
priority += 1
|
533
535
|
end
|
534
536
|
end
|
535
537
|
elsif ! node.xpath('.//translation/lengthvariant').empty?
|
@@ -537,7 +539,7 @@ module MobyUtil
|
|
537
539
|
priority = 1
|
538
540
|
node.xpath('.//translation/lengthvariant').each do |lenghtvar|
|
539
541
|
nodeLengthVar = lenghtvar.xpath('@priority').inner_text()
|
540
|
-
nodeLengthVar = priority.to_s if nodeLengthVar.empty?
|
542
|
+
nodeLengthVar = priority.to_s if nodeLengthVar.empty?
|
541
543
|
nodeTranslation = lenghtvar.inner_text()
|
542
544
|
data << [ fname, nodeId, nodeTranslation, nodePlurality, nodeLengthVar ]
|
543
545
|
priority += 1
|
@@ -554,7 +556,7 @@ module MobyUtil
|
|
554
556
|
open_file.close
|
555
557
|
return language, data
|
556
558
|
end
|
557
|
-
|
559
|
+
|
558
560
|
#
|
559
561
|
# Note: for .loc files the colum mapping is done with the Language code number on the filenames
|
560
562
|
#
|
@@ -661,26 +663,35 @@ module MobyUtil
|
|
661
663
|
end
|
662
664
|
# INSERT new data
|
663
665
|
case db_connection.db_type
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
666
|
+
when "mysql"
|
667
|
+
insert_values = ""
|
668
|
+
|
669
|
+
begin
|
670
|
+
# Formatting (seems like there is no length limit for the insert string)
|
671
|
+
data.each do |fname, source, translation, plurality, lengthvar|
|
672
|
+
# Escape ` and ' and " and other restricted characters in SQL (prevent SQL injections
|
673
|
+
source = source.gsub(/([\'\"\`\;\&])/){|s| "\\" + s}
|
674
|
+
translation = (translation != nil) ? translation.gsub(/([\'\"\`\;\&])/){|s| "\\" + s} : ""
|
675
|
+
if plurality=='NULL'
|
676
|
+
insert_values += "('" + fname + "', '" + source + "', '" + translation + "', NULL, '" + lengthvar + "'), "
|
677
|
+
else
|
678
|
+
insert_values += "('" + fname + "', '" + source + "', '" + translation + "', '" + plurality + "', '" + lengthvar + "'), "
|
679
|
+
end
|
680
|
+
end
|
681
|
+
insert_values[-2] = ' ' unless insert_values == "" # replace last ',' with ';'
|
682
|
+
# INSERT Query
|
683
|
+
query_string = "INSERT INTO `" + table_name + "` (FNAME, LNAME, `" + language + "`, `PLURALITY`, `LENGTHVAR`) VALUES " + insert_values +
|
684
|
+
"ON DUPLICATE KEY UPDATE fname = VALUES(fname), lname = VALUES(lname), `" + language + "` = VALUES(`" + language + "`) ;"
|
685
|
+
MobyUtil::DBAccess.query( db_connection, query_string )
|
686
|
+
sql_file.write( query_string + "\n" ) if record_sql
|
687
|
+
|
688
|
+
rescue Exception => e
|
689
|
+
puts e.message
|
690
|
+
puts e.backtrace
|
691
|
+
puts ''
|
692
|
+
sql_file.write( "Error: #{e.message}: #{query_string}" + "\n" ) if record_sql
|
693
|
+
end
|
694
|
+
|
684
695
|
when "sqlite"
|
685
696
|
begin
|
686
697
|
# Formatting (limit on the length of the Insert String! So multiple Insets
|
@@ -724,7 +735,7 @@ module MobyUtil
|
|
724
735
|
# Used only on .ts files
|
725
736
|
def self.parseFName(file)
|
726
737
|
#(wordlist matching)
|
727
|
-
words = ["ar", "bg", "ca", "cs", "da", "de", "el", "en", "english-gb", "(apac)", "(apaccn)", "(apachk)", "(apactw)", "japanese", "thai", "us", "es", "419", "et", "eu", "fa", "fi", "fr", "gl", "he", "hi", "hr", "hu", "id", "is", "it", "ja", "ko", "lt", "lv", "mr", "ms", "nb", "nl", "pl", "pt", "br", "ro", "ru", "sk", "sl", "sr", "sv", "th", "tl", "tr", "uk", "ur", "us", "vi", "zh", "hk", "tw", "no", "gb", "cn"]
|
738
|
+
words = ["ar", "bg", "ca", "cs", "da", "de", "el", "en", "english-gb", "(apac)", "(apaccn)", "(apachk)", "(apactw)", "japanese", "thai", "us", "es", "419", "et", "eu", "fa", "fi", "fr", "gl", "he", "hi", "hr", "hu", "id", "is", "it", "ja", "ko", "lt", "lv", "mr", "ms", "nb", "nl", "pl", "pt", "br", "ro", "ru", "sk", "sl", "sr", "sv", "th", "tl", "tr", "uk", "ur", "us", "vi", "zh", "hk", "tw", "no", "gb", "cn", "kk"]
|
728
739
|
|
729
740
|
fname = file.split('/').last
|
730
741
|
fname.gsub!(".ts"){|s| ""}
|
data/lib/tdriver/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testability-driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 1.4.
|
9
|
+
- 1
|
10
|
+
version: 1.4.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Testability Driver team
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin/
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-12-02 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|