testability-driver 1.0.4 → 1.1.0

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 (104) hide show
  1. data/bin/tdriver-devtools +0 -0
  2. data/config/sut_setup.rb +32 -0
  3. data/config/sut_teardown.rb +32 -0
  4. data/ext/extconf.rb +3 -1
  5. data/lib/tdriver-devtools/behaviour/old/xml/update +0 -0
  6. data/lib/tdriver-devtools/behaviour/xml/generate.rb +0 -0
  7. data/lib/tdriver-devtools/doc/update +0 -0
  8. data/lib/tdriver-devtools/doc/xslt/update +0 -0
  9. data/lib/tdriver-devtools/tdriver-devtools.rb +0 -0
  10. data/lib/tdriver-devtools/tests/feature_tests/output/application_closable_0x3f.feature +10 -0
  11. data/lib/tdriver-devtools/tests/feature_tests/output/application_close.feature +15 -0
  12. data/lib/tdriver-devtools/tests/feature_tests/output/application_environment.feature +10 -0
  13. data/lib/tdriver-devtools/tests/feature_tests/output/application_executable_name.feature +10 -0
  14. data/lib/tdriver-devtools/tests/feature_tests/output/application_uid.feature +10 -0
  15. data/lib/tdriver-devtools/tests/feature_tests/output/created.rid +1 -0
  16. data/lib/tdriver-devtools/tests/feature_tests/output/find_find.feature +15 -0
  17. data/lib/tdriver-devtools/tests/feature_tests/output/flash_behaviour_flash.feature +10 -0
  18. data/lib/tdriver-devtools/tests/feature_tests/output/flash_behaviour_flash_images.feature +15 -0
  19. data/lib/tdriver-devtools/tests/feature_tests/output/sut_application.feature +15 -0
  20. data/lib/tdriver-devtools/tests/feature_tests/output/sut_capture_screen.feature +10 -0
  21. data/lib/tdriver-devtools/tests/feature_tests/output/sut_child.feature +10 -0
  22. data/lib/tdriver-devtools/tests/feature_tests/output/sut_clear_verify_blocks.feature +10 -0
  23. data/lib/tdriver-devtools/tests/feature_tests/output/sut_connect.feature +10 -0
  24. data/lib/tdriver-devtools/tests/feature_tests/output/sut_controller_execution_order.feature +10 -0
  25. data/lib/tdriver-devtools/tests/feature_tests/output/sut_controller_execution_order_0x3d.feature +10 -0
  26. data/lib/tdriver-devtools/tests/feature_tests/output/sut_current_application_id.feature +15 -0
  27. data/lib/tdriver-devtools/tests/feature_tests/output/sut_disconnect.feature +10 -0
  28. data/lib/tdriver-devtools/tests/feature_tests/output/sut_dump_count.feature +15 -0
  29. data/lib/tdriver-devtools/tests/feature_tests/output/sut_freeze.feature +10 -0
  30. data/lib/tdriver-devtools/tests/feature_tests/output/sut_frozen.feature +10 -0
  31. data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_application_id.feature +10 -0
  32. data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_object.feature +10 -0
  33. data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_operator_data.feature +10 -0
  34. data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_ui_dump.feature +15 -0
  35. data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_user_information.feature +10 -0
  36. data/lib/tdriver-devtools/tests/feature_tests/output/sut_input.feature +15 -0
  37. data/lib/tdriver-devtools/tests/feature_tests/output/sut_parameter.feature +15 -0
  38. data/lib/tdriver-devtools/tests/feature_tests/output/sut_press_key.feature +10 -0
  39. data/lib/tdriver-devtools/tests/feature_tests/output/sut_received_data.feature +10 -0
  40. data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh.feature +20 -0
  41. data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_timeout.feature +15 -0
  42. data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_tries.feature +15 -0
  43. data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_ui_dump.feature +20 -0
  44. data/lib/tdriver-devtools/tests/feature_tests/output/sut_run.feature +10 -0
  45. data/lib/tdriver-devtools/tests/feature_tests/output/sut_sent_data.feature +10 -0
  46. data/lib/tdriver-devtools/tests/feature_tests/output/sut_state.feature +10 -0
  47. data/lib/tdriver-devtools/tests/feature_tests/output/sut_translate.feature +30 -0
  48. data/lib/tdriver-devtools/tests/feature_tests/output/sut_ui_type.feature +10 -0
  49. data/lib/tdriver-devtools/tests/feature_tests/output/sut_ui_version.feature +10 -0
  50. data/lib/tdriver-devtools/tests/feature_tests/output/sut_unfreeze.feature +10 -0
  51. data/lib/tdriver-devtools/tests/feature_tests/output/sut_update.feature +10 -0
  52. data/lib/tdriver-devtools/tests/feature_tests/output/sut_verify_always.feature +20 -0
  53. data/lib/tdriver-devtools/tests/feature_tests/output/sut_verify_blocks.feature +10 -0
  54. data/lib/tdriver-devtools/tests/feature_tests/output/sut_x_path.feature +10 -0
  55. data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data.feature +10 -0
  56. data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data_0x3d.feature +10 -0
  57. data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data_crc.feature +10 -0
  58. data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_down.feature +10 -0
  59. data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_status.feature +10 -0
  60. data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_up.feature +10 -0
  61. data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_reset.feature +10 -0
  62. data/lib/tdriver-devtools/tests/feature_tests/output/verification_test_object_exists_0x3f.feature +15 -0
  63. data/lib/tdriver-devtools/tests/feature_tests/update +0 -0
  64. data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +4 -4
  65. data/lib/tdriver/base/behaviour/factory.rb +8 -0
  66. data/lib/tdriver/base/sut/generic/behaviours/application.rb +24 -3
  67. data/lib/tdriver/base/sut/generic/behaviours/sut.rb +465 -354
  68. data/lib/tdriver/base/test_object/adapter.rb +2 -2
  69. data/lib/tdriver/base/test_object/behaviours/test_object.rb +22 -5
  70. data/lib/tdriver/base/test_object/cache.rb +1 -1
  71. data/lib/tdriver/base/test_object/factory.rb +23 -3
  72. data/lib/tdriver/env.rb +0 -0
  73. data/lib/tdriver/loader.rb +0 -0
  74. data/lib/tdriver/matti.rb +0 -0
  75. data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +22 -24
  76. data/lib/tdriver/report/report.rb +8 -1
  77. data/lib/tdriver/report/report_api.rb +18 -0
  78. data/lib/tdriver/report/report_combine.rb +1 -1
  79. data/lib/tdriver/report/report_creator.rb +5 -1
  80. data/lib/tdriver/report/report_execution_statistics.rb +105 -78
  81. data/lib/tdriver/report/report_test_case_run.rb +2 -1
  82. data/lib/tdriver/report/report_test_run.rb +187 -116
  83. data/lib/tdriver/report/report_writer.rb +49 -29
  84. data/lib/tdriver/tdriver.rb +14 -3
  85. data/lib/tdriver/util/common/exception.rb +53 -0
  86. data/lib/tdriver/util/common/hash.rb +79 -23
  87. data/lib/tdriver/util/common/numeric.rb +26 -5
  88. data/lib/tdriver/util/common/object.rb +44 -15
  89. data/lib/tdriver/util/common/string.rb +4 -1
  90. data/lib/tdriver/util/filters/dynamic_attributes.rb +2 -1
  91. data/lib/tdriver/util/keymap/keymap.rb +81 -0
  92. data/lib/tdriver/util/loader.rb +4 -1
  93. data/lib/tdriver/util/logger/logger.rb +17 -9
  94. data/lib/tdriver/util/other/config.rb +0 -0
  95. data/lib/tdriver/util/parameter/error.rb +3 -0
  96. data/lib/tdriver/util/parameter/loader.rb +6 -1
  97. data/lib/tdriver/util/parameter/parameter.rb +87 -14
  98. data/lib/tdriver/util/parameter/parameter_new.rb +869 -0
  99. data/lib/tdriver/util/parameter/parameter_template.rb +2 -2
  100. data/lib/tdriver/util/parameter/parameter_user_api.rb +27 -3
  101. data/lib/tdriver/util/parameter/parameter_xml.rb +36 -38
  102. data/lib/tdriver/version.rb +1 -1
  103. data/xml/templates/generic.xml +4 -10
  104. metadata +196 -138
@@ -440,7 +440,7 @@ module TDriverReportCreator
440
440
  # === returns
441
441
  # nil
442
442
  # === raises
443
- def update_test_case_page()
443
+ def update_test_case_page(rewrite=false)
444
444
  begin
445
445
  #Calculate run time
446
446
  @test_case_run_time=Time.now-@test_case_start_time
@@ -467,6 +467,7 @@ module TDriverReportCreator
467
467
  @test_case_total_data_received
468
468
  )
469
469
  write_page_end(@test_case_folder+'/index.html')
470
+
470
471
  rescue Exception => e
471
472
  Kernel::raise e
472
473
  end
@@ -88,7 +88,7 @@ module TDriverReportCreator
88
88
  @total_received_data=Hash.new
89
89
  @total_sent_data=Hash.new
90
90
  $result_storage_in_use=false
91
- @pages=MobyUtil::Parameter[ :report_results_per_page, 10]
91
+ @pages=MobyUtil::Parameter[ :report_results_per_page, 50]
92
92
  @duration_graph=MobyUtil::Parameter[ :report_generate_duration_graph, false]
93
93
  @pass_statuses=MobyUtil::Parameter[ :report_passed_statuses, "passed" ].split('|')
94
94
  @fail_statuses=MobyUtil::Parameter[ :report_failed_statuses, "failed" ].split('|')
@@ -335,7 +335,7 @@ module TDriverReportCreator
335
335
  # === raises
336
336
  def get_not_run_cases_arr()
337
337
  #@not_run_cases_arr
338
- read_result_storage('not run')
338
+ read_result_storage('not_run')
339
339
  end
340
340
  #This method gets the passed cases name array
341
341
  #
@@ -478,6 +478,28 @@ module TDriverReportCreator
478
478
  return nil
479
479
  end
480
480
 
481
+ #This method generates the tdriver test run summary page grouped by test case
482
+ #
483
+ # === params
484
+ # nil
485
+ # === returns
486
+ # nil
487
+ # === raises
488
+ def group_results_by_test_case()
489
+ @all_cases_arr=read_result_storage('all')
490
+ created_grouped_test_result=[]
491
+
492
+ @all_cases_arr.each do |test_case|
493
+ #name, status
494
+ tc=[test_case[7],test_case[0]]
495
+ if !created_grouped_test_result.include?(tc)
496
+ update_test_case_summary_page(test_case[7],false,"Test: #{test_case[0]} Result: #{test_case[7]}",test_case[0])
497
+ created_grouped_test_result << tc
498
+ end
499
+ end
500
+
501
+ end
502
+
481
503
  #This method updates the tdriver test run summary page
482
504
  #
483
505
  # === params
@@ -912,7 +934,9 @@ module TDriverReportCreator
912
934
  end
913
935
  end
914
936
 
915
- def read_result_storage(results)
937
+ def parse_results_for_current_test( by_status )
938
+
939
+ ret_xml = nil
916
940
  while $result_storage_in_use==true
917
941
  sleep 1
918
942
  end
@@ -922,12 +946,72 @@ module TDriverReportCreator
922
946
  result_storage=Array.new
923
947
  storage_file='all_cases.xml'
924
948
 
949
+
925
950
  file=@report_folder+'/'+storage_file
926
951
  if File.exist?(file)
927
952
  io = File.open(file, 'r')
953
+ ret_xml = Nokogiri::XML(io){ |config| config.options = Nokogiri::XML::ParseOptions::STRICT }
954
+
955
+ io.close
956
+
957
+ status_search = ""
958
+
959
+ case by_status
960
+ when "all"
961
+ status_search = ""
962
+ when "passed"
963
+ status_search = " and (status='"
964
+ status_search << @pass_statuses.join("' or status='")
965
+ status_search << "')"
966
+ when "failed"
967
+ status_search = " and (status='"
968
+ status_search << @fail_statuses.join("' or status='")
969
+ status_search << "')"
970
+ when "not run"
971
+ status_search = " and (status='"
972
+ status_search << @not_run_statuses.join("' or status='")
973
+ status_search << "')"
974
+ else
975
+ status_search = " and status='" + by_status + "'"
976
+ end
977
+
978
+ ret_xml = ret_xml.root.xpath("//tests/test[name='#{$new_test_case.test_case_name}' and group='#{$new_test_case.test_case_group}'#{status_search}]")
979
+ else
980
+ #puts "No file " << storage_file
981
+ end
982
+ rescue Exception => e
983
+ $result_storage_in_use=false
984
+ raise e
985
+
986
+ end
987
+
988
+ $result_storage_in_use=false
989
+
990
+ ret_xml
991
+
992
+ end
993
+
994
+ def read_result_storage(results,case_name=nil)
995
+ while $result_storage_in_use==true
996
+ sleep 1
997
+ end
998
+ $result_storage_in_use=true
999
+ begin
1000
+ result_storage=nil
1001
+ result_storage=Array.new
1002
+ storage_file='all_cases.xml'
1003
+
1004
+ file=@report_folder+'/'+storage_file
1005
+ if File.exist?(file)
1006
+ io = File.open(file, 'rb')
928
1007
  xml_data = Nokogiri::XML(io){ |config| config.options = Nokogiri::XML::ParseOptions::STRICT }
929
1008
  io.close
930
- xml_data.root.xpath("//tests/test").each do |node|
1009
+ if case_name
1010
+ nodes=xml_data.root.xpath("//tests/test[name='#{case_name}']")
1011
+ else
1012
+ nodes=xml_data.root.xpath("//tests/test")
1013
+ end
1014
+ nodes.each do |node|
931
1015
  value=node.search("name").text #0
932
1016
  group=node.search("group").text #1
933
1017
  reboots=node.search("reboots").text #2
@@ -950,125 +1034,89 @@ module TDriverReportCreator
950
1034
  user_data[value_name] = val
951
1035
  end
952
1036
 
1037
+ current_record=[value,
1038
+ group,
1039
+ reboots,
1040
+ crashes,
1041
+ start_time,
1042
+ duration,
1043
+ memory_usage,
1044
+ status,
1045
+ index,
1046
+ log,
1047
+ comment,
1048
+ link,
1049
+ user_data,
1050
+ dump_count,
1051
+ sent_bytes,
1052
+ received_bytes
1053
+ ]
953
1054
  case results
954
1055
  when 'passed'
955
- if @pass_statuses.include?(status)
956
- result_storage << [value,
957
- group,
958
- reboots,
959
- crashes,
960
- start_time,
961
- duration,
962
- memory_usage,
963
- status,
964
- index,
965
- log,
966
- comment,
967
- link,
968
- user_data,
969
- dump_count,
970
- sent_bytes,
971
- received_bytes
972
- ]
1056
+ if case_name
1057
+ if @pass_statuses.include?(status) && value==case_name
1058
+ result_storage << current_record
1059
+ end
1060
+ else
1061
+ if @pass_statuses.include?(status)
1062
+ result_storage << current_record
1063
+ end
973
1064
  end
1065
+
974
1066
  when 'failed'
975
- if @fail_statuses.include?(status)
976
- result_storage << [value,
977
- group,
978
- reboots,
979
- crashes,
980
- start_time,
981
- duration,
982
- memory_usage,
983
- status,
984
- index,
985
- log,
986
- comment,
987
- link,
988
- user_data,
989
- dump_count,
990
- sent_bytes,
991
- received_bytes
992
- ]
1067
+ if case_name
1068
+ if @fail_statuses.include?(status) && value==case_name
1069
+ result_storage << current_record
1070
+ end
1071
+ else
1072
+ if @fail_statuses.include?(status)
1073
+ result_storage << current_record
1074
+ end
993
1075
  end
1076
+
994
1077
  when 'not_run'
995
- if @not_run_statuses.include?(status)
996
- result_storage << [value,
997
- group,
998
- reboots,
999
- crashes,
1000
- start_time,
1001
- duration,
1002
- memory_usage,
1003
- status,
1004
- index,
1005
- log,
1006
- comment,
1007
- link,
1008
- user_data,
1009
- dump_count,
1010
- sent_bytes,
1011
- received_bytes
1012
- ]
1078
+ if case_name
1079
+ if @not_run_statuses.include?(status) && value==case_name
1080
+ result_storage << current_record
1081
+ end
1082
+ else
1083
+ if @not_run_statuses.include?(status)
1084
+ result_storage << current_record
1085
+ end
1013
1086
  end
1087
+
1014
1088
  when 'crash'
1015
1089
  if crashes.to_i > 0
1016
- result_storage << [value,
1017
- group,
1018
- reboots,
1019
- crashes,
1020
- start_time,
1021
- duration,
1022
- memory_usage,
1023
- status,
1024
- index,
1025
- log,
1026
- comment,
1027
- link,
1028
- user_data,
1029
- dump_count,
1030
- sent_bytes,
1031
- received_bytes
1032
- ]
1090
+ result_storage << current_record
1033
1091
  end
1092
+
1034
1093
  when 'reboot'
1035
1094
  if reboots.to_i > 0
1036
- result_storage << [value,
1037
- group,
1038
- reboots,
1039
- crashes,
1040
- start_time,
1041
- duration,
1042
- memory_usage,
1043
- status,
1044
- index,
1045
- log,
1046
- comment,
1047
- link,
1048
- user_data,
1049
- dump_count,
1050
- sent_bytes,
1051
- received_bytes
1052
- ]
1095
+ result_storage << current_record
1053
1096
  end
1097
+
1054
1098
  when 'all'
1055
- result_storage << [value,
1056
- group,
1057
- reboots,
1058
- crashes,
1059
- start_time,
1060
- duration,
1061
- memory_usage,
1062
- status,
1063
- index,
1064
- log,
1065
- comment,
1066
- link,
1067
- user_data,
1068
- dump_count,
1069
- sent_bytes,
1070
- received_bytes
1071
- ]
1099
+ if case_name
1100
+ if value==case_name
1101
+ result_storage << current_record
1102
+ end
1103
+ else
1104
+ result_storage << current_record
1105
+ end
1106
+ else
1107
+ if @pass_statuses.include?(status)
1108
+ if (( case_name and value==case_name ) or !case_name )
1109
+ result_storage << current_record
1110
+ end
1111
+ elsif @fail_statuses.include?(status)
1112
+ if (( case_name and value==case_name ) or !case_name )
1113
+ result_storage << current_record
1114
+ end
1115
+ elsif @not_run_statuses.include?(status)
1116
+ if (( case_name and value==case_name ) or !case_name )
1117
+ result_storage << current_record
1118
+ end
1119
+ end
1072
1120
  end
1073
1121
  end
1074
1122
  xml_data=nil
@@ -1143,18 +1191,41 @@ module TDriverReportCreator
1143
1191
  # === returns
1144
1192
  # nil
1145
1193
  # === raises
1146
- def update_test_case_summary_page(status,rewrite=false,title="")
1194
+ def update_test_case_summary_page(status,rewrite=false,title="",test_case_name=nil,tc_result_arr=nil)
1147
1195
  @cases_arr=Array.new
1148
-
1149
- @cases_arr=read_result_storage(status)
1196
+ search_case = nil
1197
+ if @pass_statuses.include?(status)
1198
+ search_case = "passed"
1199
+ elsif @fail_statuses.include?(status)
1200
+ search_case = "failed"
1201
+ elsif @not_run_statuses.include?(status)
1202
+ search_case = "not_run"
1203
+ else
1204
+ search_case = status
1205
+ end
1206
+ status=status.gsub(' ','_')
1207
+ if test_case_name
1208
+ @cases_arr=read_result_storage(search_case,test_case_name)
1209
+ else
1210
+ @cases_arr=read_result_storage(search_case)
1211
+ end
1150
1212
  splitted_arr=Array.new
1151
1213
  splitted_arr=split_array(@cases_arr,@pages.to_i)
1152
1214
  page=1
1153
1215
  splitted_arr.each do |case_arr|
1154
- if @report_pages_ready.include?("#{page}_passed")==false || rewrite==true
1155
- write_page_start(@report_folder+"/cases/#{page}_#{status}_index.html",title,page,splitted_arr.length)
1156
- write_test_case_summary_body(@report_folder+"/cases/#{page}_#{status}_index.html",status,case_arr,nil)
1157
- page_ready=write_page_end(@report_folder+"/cases/#{page}_#{status}_index.html",page,splitted_arr.length)
1216
+
1217
+ if test_case_name
1218
+ if @report_pages_ready.include?("#{page}_#{status}_#{test_case_name}")==false || rewrite==true
1219
+ write_page_start(@report_folder+"/cases/#{page}_#{status}_#{test_case_name}_index.html",title,page,splitted_arr.length)
1220
+ write_test_case_summary_body(@report_folder+"/cases/#{page}_#{status}_#{test_case_name}_index.html",status,case_arr,nil)
1221
+ page_ready=write_page_end(@report_folder+"/cases/#{page}_#{status}_#{test_case_name}_index.html",page,splitted_arr.length)
1222
+ end
1223
+ else
1224
+ if @report_pages_ready.include?("#{page}_#{status}")==false || rewrite==true
1225
+ write_page_start(@report_folder+"/cases/#{page}_#{status}_index.html",title,page,splitted_arr.length)
1226
+ write_test_case_summary_body(@report_folder+"/cases/#{page}_#{status}_index.html",status,case_arr,nil)
1227
+ page_ready=write_page_end(@report_folder+"/cases/#{page}_#{status}_index.html",page,splitted_arr.length)
1228
+ end
1158
1229
  end
1159
1230
  if page_ready!=nil
1160
1231
  @report_pages_ready << "#{page_ready}_#{status}"
@@ -438,9 +438,10 @@ display: block;
438
438
  end
439
439
 
440
440
  def format_duration(seconds)
441
- if Gem.available?('chronic_duration')
441
+ begin
442
+ require 'chronic_duration'
442
443
  duration_str=ChronicDuration.output(seconds)
443
- else
444
+ rescue LoadError
444
445
  m, s = seconds.divmod(60)
445
446
  duration_str="#{m}m#{'%.3f' % s}s"
446
447
  end
@@ -467,7 +468,7 @@ display: block;
467
468
  def copy_code_file_to_test_case_report(file,folder,linen)
468
469
  begin
469
470
  FileUtils.mkdir_p(folder.to_s+'/stack_files') if File::directory?(folder.to_s+'/stack_files')==false
470
- if File.directory?("#{Dir.pwd}/#{@report_folder}/#{folder}")
471
+ if File.directory?("#{Dir.pwd}/#{@report_folder}/#{folder}")
471
472
  write_stack_file_to_html(file,"#{Dir.pwd}/#{@report_folder}/#{folder}/stack_files/#{File.basename(file)}.html",linen)
472
473
  FileUtils.copy(file,"#{Dir.pwd}/#{@report_folder}/#{folder}/stack_files/#{File.basename(file)}")
473
474
  else
@@ -483,16 +484,16 @@ display: block;
483
484
 
484
485
  def reporter_link_to_code(log_line,folder=nil)
485
486
  begin
486
- log_line.gsub(/([\w\*\/\w\/\.-]+)\:(\d+)/) do |match|
487
- line=match[/(\d+)/]
488
- f=match[/([\w\*\/\w\/\.-]+)/]
487
+ log_line.gsub(/([\w \*\/\w\/\.-]+)\:(\d+)/) do |match|
488
+ line=match[/\:(\d+)/]
489
+ f=match[/([\w \*\/\w\/\.-]+)/]
489
490
  file="#{File.dirname(f.strip)}/#{File.basename(f.strip)}"
490
491
  file = file if File.exist?(file)
491
492
  file = "#{Dir.pwd}/#{file}" if File.exist?("#{Dir.pwd}/#{file}")
492
493
  if File.exist?(file) && match.include?('testability-driver')==false
493
- copy_code_file_to_test_case_report(file,folder,line.strip)
494
+ copy_code_file_to_test_case_report(file,folder,line.gsub(':','').strip)
494
495
  link_to_stack='<a style="color: #FF0000" href="stack_files/'<<
495
- File.basename(file.to_s)+'.html#'+line.to_s<<
496
+ File.basename(file.to_s)+'.html#'+line.to_s.gsub(':','')<<
496
497
  '">'+match+'</a>'
497
498
  log_line=log_line.gsub(match,link_to_stack)
498
499
  end
@@ -645,7 +646,12 @@ display: block;
645
646
  when "TDriver test environment","Total run","Statistics","Passed","Failed","Not run","Crash","Reboot","TDriver log"
646
647
  stylesheet='<link rel="stylesheet" title="TDriverReportStyle" href="../tdriver_report_style.css"/>'
647
648
  else
648
- stylesheet='<link rel="stylesheet" title="TDriverReportStyle" href="../../tdriver_report_style.css"/>'
649
+ if title.include?("Test:")
650
+ stylesheet='<link rel="stylesheet" title="TDriverReportStyle" href="../tdriver_report_style.css"/>'
651
+ else
652
+ stylesheet='<link rel="stylesheet" title="TDriverReportStyle" href="../../tdriver_report_style.css"/>'
653
+ end
654
+
649
655
  end
650
656
  html_start='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' <<
651
657
  '<html xmlns="http://www.w3.org/1999/xhtml">'<<
@@ -896,12 +902,11 @@ display: block;
896
902
  end
897
903
  tdriver_group = nil
898
904
  html_body=nil
899
- GC.start
905
+
900
906
  end
901
- def write_test_case_summary_body(page,status,tc_arr,chronological_page=nil,report_page=nil)
907
+ def write_test_case_summary_body(page,status,tc_arr,chronological_page=nil,report_page=nil,test_case_name=nil)
902
908
  html_body=Array.new
903
- case status
904
- when 'passed'
909
+ if @pass_statuses.include?(status) || status == "passed"
905
910
  title='<div class="page_title"><center><h1>Passed</h1></center></div>'<<
906
911
  '<div class="summary_passed">' <<
907
912
  '<form action="save_total_run_results" >'
@@ -915,7 +920,7 @@ display: block;
915
920
  html_body << '<form action="save_results_to" ><input type="submit" name="save_results_to" value="Download report" /></form>' if @report_editable=='true'
916
921
  tdriver_group=nil
917
922
  html_result=nil
918
- when 'failed'
923
+ elsif @fail_statuses.include?(status) || status == "failed"
919
924
  title='<div class="page_title"><center><h1>Failed</h1></center></div>'<<
920
925
  '<div class="summary_failed">' <<
921
926
  '<form action="save_total_run_results" >'
@@ -929,7 +934,7 @@ display: block;
929
934
  html_body << '<form action="save_results_to" ><input type="submit" name="save_results_to" value="Download report" /></form>' if @report_editable=='true'
930
935
  tdriver_group=nil
931
936
  html_result=nil
932
- when 'not_run'
937
+ elsif @not_run_statuses.include?(status) || status == "not_run"
933
938
  title='<div class="page_title"><center><h1>Not run</h1></center></div>'<<
934
939
  '<div class="summary_not_run">' <<
935
940
  '<form action="save_total_run_results" >'
@@ -943,6 +948,8 @@ display: block;
943
948
  html_body << '<form action="save_results_to" ><input type="submit" name="save_results_to" value="Download report" /></form>' if @report_editable=='true'
944
949
  tdriver_group=nil
945
950
  html_result=nil
951
+ else
952
+ case status
946
953
  when 'crash'
947
954
  title='<div class="page_title"><center><h1>Crash</h1></center></div>'<<
948
955
  '<div class="summary_crash">' <<
@@ -1017,25 +1024,27 @@ display: block;
1017
1024
  tdriver_group=nil
1018
1025
  chronological_html_result=nil
1019
1026
  chronological_html_body=nil
1020
- end
1027
+ end # case
1028
+ end # if
1029
+
1021
1030
  html_body << '</div>'
1022
1031
  File.open(page, 'a') do |f2|
1023
1032
  f2.puts html_body
1024
1033
  end
1025
1034
  html_body=nil
1026
- GC.start
1035
+
1027
1036
  end
1028
1037
 
1029
1038
  def write_summary_body(page,start_time,end_time,run_time,total_run,total_passed,total_failed,total_not_run,total_crash_files,total_device_resets,summary_arr=nil)
1030
- fail_rate=0
1031
- pass_rate=0
1032
- if total_run.to_i > 0
1039
+ fail_rate="0"
1040
+ pass_rate="0"
1041
+ if total_run.to_i > total_not_run.to_i
1033
1042
  begin
1034
1043
  fail_rate=(total_failed.to_f/(total_run.to_f-total_not_run.to_f))*100
1035
1044
  pass_rate=(total_passed.to_f/(total_run.to_f-total_not_run.to_f))*100
1036
1045
  fail_rate="%0.2f" % fail_rate
1037
1046
  pass_rate="%0.2f" % pass_rate
1038
- rescue
1047
+ rescue # Note that 0.0/0.0 does result in NaN, it does not cause an exception
1039
1048
  fail_rate="0"
1040
1049
  pass_rate="0"
1041
1050
  end
@@ -1310,14 +1319,25 @@ display: block;
1310
1319
  failed_link="#{report_page}_failed_index.html\""
1311
1320
  not_run_link="#{report_page}_not_run_index.html\""
1312
1321
  else
1313
- tdriver_test_results_link='../../index.html"'
1314
- tdriver_test_environment_link='../../environment/index.html"'
1315
- tdriver_log_link='../tdriver_log_index.html"'
1316
- total_run_link="../1_total_run_index.html\""
1317
- statistics_link='../statistics_index.html"'
1318
- passed_link="../1_passed_index.html\""
1319
- failed_link="../1_failed_index.html\""
1320
- not_run_link="../1_not_run_index.html\""
1322
+ if title.include?("Test:")
1323
+ tdriver_test_results_link='../index.html"'
1324
+ tdriver_test_environment_link='../environment/index.html"'
1325
+ tdriver_log_link='tdriver_log_index.html"'
1326
+ total_run_link="1_total_run_index.html\""
1327
+ statistics_link='statistics_index.html"'
1328
+ passed_link="1_passed_index.html\""
1329
+ failed_link="#{report_page}_failed_index.html\" class=\"current\""
1330
+ not_run_link="1_not_run_index.html\""
1331
+ else
1332
+ tdriver_test_results_link='../../index.html"'
1333
+ tdriver_test_environment_link='../../environment/index.html"'
1334
+ tdriver_log_link='../tdriver_log_index.html"'
1335
+ total_run_link="../1_total_run_index.html\""
1336
+ statistics_link='../statistics_index.html"'
1337
+ passed_link="../1_passed_index.html\""
1338
+ failed_link="../1_failed_index.html\""
1339
+ not_run_link="../1_not_run_index.html\""
1340
+ end
1321
1341
  end
1322
1342
  html_body='<div class="navigation_section"><div class="navigation_tabs">'<<
1323
1343
  '<ul id="navigation_tabs_ul">'<<