class Tryouts::TestBatch
def execute_global_setup
def execute_global_setup setup = @testrun.setup if setup && !setup.code.empty? && @options[:shared_context] @output_manager&.setup_start(setup.line_range) # Capture setup output instead of letting it print directly captured_output = capture_output do @container.instance_eval(setup.code, setup.path, setup.line_range.first + 1) end @output_manager&.setup_output(captured_output) if captured_output && !captured_output.empty? end rescue StandardError => ex @setup_failed = true @global_tally[:total_errors] += 1 if @global_tally # Classify error and handle appropriately error_type = Tryouts.classify_error(ex) Tryouts.debug "Setup failed with #{error_type} error: (#{ex.class}): #{ex.message}" Tryouts.trace ex.backtrace # For non-catastrophic errors, we still stop batch execution unless Tryouts.batch_stopping_error?(ex) @output_manager&.error("Global setup failed: #{ex.message}") return end # For catastrophic errors, still raise to stop execution raise "Global setup failed (#{ex.class}): #{ex.message}" end