diff --git a/lib/bucky/core/test_core/test_class_generator.rb b/lib/bucky/core/test_core/test_class_generator.rb index d8c4ceed..58e06de9 100644 --- a/lib/bucky/core/test_core/test_class_generator.rb +++ b/lib/bucky/core/test_core/test_class_generator.rb @@ -73,6 +73,11 @@ def generate_test_class(data: [], linkstatus_url_log: {}, w_pipe: {}) description( t_case[:case_name], define_method(method_name) do + # Check if test should be skipped + if t_case[:skip] + skip_reason = t_case[:skip_reason] || "Test skipped" + omit(skip_reason) + end puts "\n#{simple_test_class_name(name)}" t_case[:urls].each do |url| linkstatus_check_args = { url:, device: data[:suite][:device], exclude_urls: data[:suite][:exclude_urls], link_check_max_times: test_cond[:link_check_max_times], url_log: linkstatus_url_log } @@ -104,6 +109,11 @@ def teardown # e.g.) test_sample_app_pc_e2e_1_2 method_name = make_test_method_name(data, t_case, i) method_obj = proc do + # Check if test should be skipped + if t_case[:skip] + skip_reason = t_case[:skip_reason] || "Test skipped" + omit(skip_reason) + end puts "\n#{simple_test_class_name(name)}\n #{t_case[:desc]} ...." add_test_procedure(t_case[:procs]) end diff --git a/lib/bucky/core/test_core/test_manager.rb b/lib/bucky/core/test_core/test_manager.rb index 5d7f48ce..9e74f4bd 100644 --- a/lib/bucky/core/test_core/test_manager.rb +++ b/lib/bucky/core/test_core/test_manager.rb @@ -99,6 +99,7 @@ def initialize(test_cond) cases_count: 0, success_count: 0, failure_count: 0, + skip_count: 0, job_id: $job_id, test_category: test_cond[:test_category], device: test_cond[:device], @@ -169,7 +170,8 @@ def execute_test @json_report[:summary][:cases_count] = all_round_results[0].sum { |_case, res| res['cases_count'] } @json_report[:summary][:failure_count] = all_round_results[-1].sum { |_case, res| res['failure_count'] } - @json_report[:summary][:success_count] = @json_report[:summary][:cases_count] - @json_report[:summary][:failure_count] + @json_report[:summary][:skip_count] = all_round_results[-1].sum { |_case, res| res['skip_count'] || 0 } + @json_report[:summary][:success_count] = @json_report[:summary][:cases_count] - @json_report[:summary][:failure_count] - @json_report[:summary][:skip_count] File.open(@test_cond[:out], 'w') do |f| f.puts(@json_report.to_json) diff --git a/lib/bucky/core/test_core/test_result.rb b/lib/bucky/core/test_core/test_result.rb index c84856c7..9c7da16b 100644 --- a/lib/bucky/core/test_core/test_result.rb +++ b/lib/bucky/core/test_core/test_result.rb @@ -53,14 +53,39 @@ def format_result_summary(added_result_info) elapsed_time = added_result_info[case_name.to_sym][:elapsed_time], is_error = 1, job_id = $job_id, - round = $round + round = $round, + skip_flag = false, + skip_reason = nil + ] + end + + ############################################## + # Store skipped cases in data set. # + ############################################## + skip_test_case_name = [] + @result.omissions.each do |omission| + case_name = omission.method_name + case_id = @tdo.get_test_case_id(added_result_info[case_name.to_sym][:test_suite_id], added_result_info[case_name.to_sym][:case_name]) + skip_test_case_name.push(case_name.to_sym) + data_set[case_name] = + [ + id = nil, + test_case_id = case_id, + error_title = "SKIPPED: #{omission.message}", + error_message = omission.location.join("\n"), + elapsed_time = added_result_info[case_name.to_sym][:elapsed_time], + is_error = 1, + job_id = $job_id, + round = $round, + skip_flag = true, + skip_reason = omission.message ] end ############################################ # Store passed cases in data set. # ############################################ - added_result_info.delete_if { |k, _v| error_test_case_name.include?(k) } + added_result_info.delete_if { |k, _v| error_test_case_name.include?(k) || skip_test_case_name.include?(k) } added_result_info.each do |case_name, added_info| case_id = @tdo.get_test_case_id(added_info[:test_suite_id], added_info[:case_name]) data_set[case_name] = @@ -72,7 +97,9 @@ def format_result_summary(added_result_info) elapsed_time = added_info[:elapsed_time], is_error = 0, job_id = $job_id, - round = $round + round = $round, + skip_flag = false, + skip_reason = nil ] end @@ -80,7 +107,7 @@ def format_result_summary(added_result_info) data_set_ary = data_set.map { |_, v| v } # Table colomn - column_name_ary = %i[id test_case_id error_title error_message elapsed_time is_error job_id round] + column_name_ary = %i[id test_case_id error_title error_message elapsed_time is_error job_id round skip_flag skip_reason] { column: column_name_ary, data_set: data_set_ary diff --git a/lib/bucky/test_equipment/test_case/abst_test_case.rb b/lib/bucky/test_equipment/test_case/abst_test_case.rb index ecb9daa0..c3ad1da4 100644 --- a/lib/bucky/test_equipment/test_case/abst_test_case.rb +++ b/lib/bucky/test_equipment/test_case/abst_test_case.rb @@ -30,7 +30,8 @@ def run(result) test_class_name: self.class.name, cases_count: result.run_count, success_count: result.pass_count, - failure_count: result.run_count - result.pass_count + failure_count: result.run_count - result.pass_count - result.omission_count, + skip_count: result.omission_count }.to_json) end