diff --git a/spec/runners/unified/support_operations.rb b/spec/runners/unified/support_operations.rb index 5f718d6809..293f992948 100644 --- a/spec/runners/unified/support_operations.rb +++ b/spec/runners/unified/support_operations.rb @@ -161,13 +161,38 @@ def _loop(op) entities.set(:error_list, store_errors, []) end + if store_failures = args.use('storeFailuresAsEntity') + entities.set(:failure_list, store_failures, []) + end + store_iterations = args.use('storeIterationsAsEntity') iterations = 0 + store_successes = args.use('storeSuccessesAsEntity') + successes = 0 loop do break if stop? begin - execute_operations(ops.map(&:dup)) + ops.map(&:dup).each do |op| + execute_operation(op) + successes += 1 + end + rescue Unified::Error::ResultMismatch => e + if store_failures + STDERR.puts "Failure: #{e.class}: #{e}" + entities.get(:failure_list, store_failures) << { + error: "#{e.class}: #{e}", + time: Time.now.to_f, + } + elsif store_errors + STDERR.puts "Failure: #{e.class}: #{e} (reporting as error)" + entities.get(:error_list, store_errors) << { + error: "#{e.class}: #{e}", + time: Time.now.to_f, + } + else + raise + end rescue => e if store_errors STDERR.puts "Error: #{e.class}: #{e}" @@ -185,6 +210,9 @@ def _loop(op) if store_iterations entities.set(:iteration_count, store_iterations, iterations) end + if store_successes + entities.set(:success_count, store_successes, successes) + end end end