Class: Tryouts
- Inherits:
-
Object
- Object
- Tryouts
- Extended by:
- ClassMethods
- Defined in:
- lib/tryouts/version.rb,
lib/tryouts.rb,
lib/tryouts/cli.rb,
lib/tryouts/console.rb,
lib/tryouts/cli/opts.rb,
lib/tryouts/test_case.rb,
lib/tryouts/test_batch.rb,
lib/tryouts/test_runner.rb,
lib/tryouts/test_executor.rb,
lib/tryouts/file_processor.rb,
lib/tryouts/parser_warning.rb,
lib/tryouts/cli/tty_detector.rb,
lib/tryouts/cli/modes/inspect.rb,
lib/tryouts/failure_collector.rb,
lib/tryouts/cli/modes/generate.rb,
lib/tryouts/cli/formatters/base.rb,
lib/tryouts/parsers/base_parser.rb,
lib/tryouts/cli/formatters/agent.rb,
lib/tryouts/cli/formatters/quiet.rb,
lib/tryouts/cli/line_spec_parser.rb,
lib/tryouts/parsers/legacy_parser.rb,
lib/tryouts/cli/formatters/compact.rb,
lib/tryouts/cli/formatters/factory.rb,
lib/tryouts/cli/formatters/verbose.rb,
lib/tryouts/parsers/shared_methods.rb,
lib/tryouts/test_result_aggregator.rb,
lib/tryouts/parsers/enhanced_parser.rb,
lib/tryouts/cli/formatters/token_budget.rb,
lib/tryouts/expectation_evaluators/base.rb,
lib/tryouts/expectation_evaluators/true.rb,
lib/tryouts/expectation_evaluators/false.rb,
lib/tryouts/translators/rspec_translator.rb,
lib/tryouts/cli/formatters/output_manager.rb,
lib/tryouts/cli/formatters/test_run_state.rb,
lib/tryouts/expectation_evaluators/output.rb,
lib/tryouts/expectation_evaluators/boolean.rb,
lib/tryouts/expectation_evaluators/non_nil.rb,
lib/tryouts/expectation_evaluators/regular.rb,
lib/tryouts/expectation_evaluators/registry.rb,
lib/tryouts/translators/minitest_translator.rb,
lib/tryouts/expectation_evaluators/exception.rb,
lib/tryouts/cli/formatters/tty_status_display.rb,
lib/tryouts/cli/formatters/live_status_manager.rb,
lib/tryouts/expectation_evaluators/regex_match.rb,
lib/tryouts/expectation_evaluators/result_type.rb,
lib/tryouts/expectation_evaluators/performance_time.rb,
lib/tryouts/expectation_evaluators/expectation_result.rb,
lib/tryouts/expectation_evaluators/intentional_failure.rb
Overview
lib/tryouts/expectation_evaluators/expectation_result.rb
Defined Under Namespace
Modules: ClassMethods, Console, ExpectationEvaluators, Parsers, Translators Classes: CLI, EnhancedParser, FailureCollector, FileProcessor, FreshContextFactory, LegacyParser, TestBatch, TestExecutor, TestResultAggregator, TestRunner, TryoutSyntaxError
Constant Summary collapse
- VERSION =
'3.7.1'- TestCase =
Core data structures
Data.define(:description, :code, :expectations, :line_range, :path, :source_lines, :first_expectation_line) do def empty? code.empty? end def expectations? !expectations.empty? end def exception_expectations? expectations.any?(&:exception?) end def regular_expectations expectations.filter(&:regular?) end def exception_expectations expectations.filter(&:exception?) end end
- Expectation =
Data.define(:content, :type) do def regular? = type == :regular def exception? = type == :exception def boolean? = type == :boolean def true? = type == :true def false? = type == :false def result_type? = type == :result_type def regex_match? = type == :regex_match def performance_time? = type == :performance_time def intentional_failure? = type == :intentional_failure def output? = type == :output end
- OutputExpectation =
Special expectation type for output capturing with pipe information
Data.define(:content, :type, :pipe) do def regular? = type == :regular def exception? = type == :exception def boolean? = type == :boolean def true? = type == :true def false? = type == :false def result_type? = type == :result_type def regex_match? = type == :regex_match def performance_time? = type == :performance_time def intentional_failure? = type == :intentional_failure def output? = type == :output def stdout? = pipe == 1 def stderr? = pipe == 2 end
- Setup =
Data.define(:code, :line_range, :path) do def empty? code.empty? end end
- Teardown =
Data.define(:code, :line_range, :path) do def empty? code.empty? end end
- Testrun =
Data.define(:setup, :test_cases, :teardown, :source_file, :metadata, :warnings) do def total_tests test_cases.size end def empty? test_cases.empty? end end
- TestCaseResultPacket =
Test case result packet for formatters Replaces the simple Hash aggregation with a rich, immutable data structure containing all execution context and results needed by formatters
Data.define( :test_case, # TestCase object :status, # :passed, :failed, :error :result_value, # Actual execution result :actual_results, # Array of actual values from expectations :expected_results, # Array of expected values from expectations :error, # Exception object (if any) :captured_output, # Captured stdout/stderr content :elapsed_time, # Execution timing (future use) :metadata, # Hash for future extensibility ) do def passed? status == :passed end def failed? status == :failed end def error? status == :error end def has_output? captured_output && !captured_output.empty? end def has_error? !error.nil? end # Helper for formatter access to first actual/expected values def first_actual actual_results&.first end def first_expected expected_results&.first end # Create a basic result packet for successful tests def self.from_success(test_case, result_value, actual_results, expected_results, captured_output: nil, elapsed_time: nil, metadata: {}) new( test_case: test_case, status: :passed, result_value: result_value, actual_results: actual_results, expected_results: expected_results, error: nil, captured_output: captured_output, elapsed_time: elapsed_time, metadata: , ) end # Create a result packet for failed tests def self.from_failure(test_case, result_value, actual_results, expected_results, captured_output: nil, elapsed_time: nil, metadata: {}) new( test_case: test_case, status: :failed, result_value: result_value, actual_results: actual_results, expected_results: expected_results, error: nil, captured_output: captured_output, elapsed_time: elapsed_time, metadata: , ) end # Create a result packet for error cases def self.from_error(test_case, error, captured_output: nil, elapsed_time: nil, metadata: {}) = error ? error. : '<exception is nil>' # Include backtrace in error message when stack traces are enabled error_display = if error && Tryouts.stack_traces? backtrace_preview = Console.pretty_backtrace(error.backtrace, limit: 3).join("\n ") "(#{error.class}) #{}\n #{backtrace_preview}" else "(#{error.class}) #{}" end new( test_case: test_case, status: :error, result_value: nil, actual_results: [error_display], expected_results: [], error: error, captured_output: captured_output, elapsed_time: elapsed_time, metadata: , ) end end
- ParserWarning =
Data structure for parser warnings
Data.define(:type, :message, :line_number, :context, :suggestion) do def self.unnamed_test(line_number:, context:) new( type: :unnamed_test, message: "Test case without explicit description", line_number: line_number, context: context, suggestion: "Add a test description using '## Description' prefix" ) end def self.ambiguous_test_boundary(line_number:, context:) new( type: :ambiguous_boundary, message: "Ambiguous test case boundary detected", line_number: line_number, context: context, suggestion: "Use explicit '## Description' to clarify test structure" ) end def self.malformed_expectation(line_number:, syntax:, context:) new( type: :malformed_expectation, message: "Malformed expectation syntax '#=#{syntax}>' at line #{line_number}", line_number: line_number, context: context, suggestion: "Use valid expectation syntax like #=>, #==>, #=:>, #=!>, etc." ) end end
Instance Attribute Summary
Attributes included from ClassMethods
#cases, #container, #debug, #fails, #noisy, #quiet, #stack_traces, #testcase_io
Method Summary
Methods included from ClassMethods
batch_stopping_error?, classify_error, debug?, stack_traces?, test_stopping_error?, trace, update_load_path