Class: Makit::Examples::Runner
- Inherits:
-
Object
- Object
- Makit::Examples::Runner
- Defined in:
- lib/makit/examples/runner.rb
Overview
Centralized management of example discovery, execution, and verification
This class provides a clean interface for running all examples in the examples directory, with support for different execution strategies, artifact verification, and comprehensive reporting.
Instance Attribute Summary collapse
-
#cleanup_after ⇒ Object
readonly
Configuration options.
-
#examples ⇒ Object
readonly
Execution results.
-
#examples_dir ⇒ Object
readonly
Configuration options.
-
#execution_strategy ⇒ Object
readonly
Configuration options.
-
#failed_examples ⇒ Object
readonly
Execution results.
-
#filter ⇒ Object
readonly
Configuration options.
-
#passed_examples ⇒ Object
readonly
Execution results.
-
#results ⇒ Object
readonly
Execution results.
-
#timeout ⇒ Object
readonly
Configuration options.
-
#verbose ⇒ Object
readonly
Configuration options.
-
#verify_artifacts ⇒ Object
readonly
Configuration options.
Instance Method Summary collapse
-
#discover_examples ⇒ Object
Discover all examples in the examples directory.
-
#initialize(options = {}) ⇒ Runner
constructor
Initialize the examples runner.
-
#run_all ⇒ Boolean
Run all discovered examples.
-
#run_example(example_path) ⇒ Hash
Run a specific example.
Constructor Details
#initialize(options = {}) ⇒ Runner
Initialize the examples runner
42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/makit/examples/runner.rb', line 42 def initialize( = {}) @examples_dir = [:examples_dir] || "examples" @execution_strategy = [:strategy] || :sequential @verify_artifacts = [:verify_artifacts] || true @cleanup_after = [:cleanup_after] || true @filter = [:filter] @timeout = [:timeout] || 30 @verbose = [:verbose] || false @results = [] @failed_examples = [] @passed_examples = [] @examples = [] end |
Instance Attribute Details
#cleanup_after ⇒ Object (readonly)
Configuration options
27 28 29 |
# File 'lib/makit/examples/runner.rb', line 27 def cleanup_after @cleanup_after end |
#examples ⇒ Object (readonly)
Execution results
30 31 32 |
# File 'lib/makit/examples/runner.rb', line 30 def examples @examples end |
#examples_dir ⇒ Object (readonly)
Configuration options
27 28 29 |
# File 'lib/makit/examples/runner.rb', line 27 def examples_dir @examples_dir end |
#execution_strategy ⇒ Object (readonly)
Configuration options
27 28 29 |
# File 'lib/makit/examples/runner.rb', line 27 def execution_strategy @execution_strategy end |
#failed_examples ⇒ Object (readonly)
Execution results
30 31 32 |
# File 'lib/makit/examples/runner.rb', line 30 def failed_examples @failed_examples end |
#filter ⇒ Object (readonly)
Configuration options
27 28 29 |
# File 'lib/makit/examples/runner.rb', line 27 def filter @filter end |
#passed_examples ⇒ Object (readonly)
Execution results
30 31 32 |
# File 'lib/makit/examples/runner.rb', line 30 def passed_examples @passed_examples end |
#results ⇒ Object (readonly)
Execution results
30 31 32 |
# File 'lib/makit/examples/runner.rb', line 30 def results @results end |
#timeout ⇒ Object (readonly)
Configuration options
27 28 29 |
# File 'lib/makit/examples/runner.rb', line 27 def timeout @timeout end |
#verbose ⇒ Object (readonly)
Configuration options
27 28 29 |
# File 'lib/makit/examples/runner.rb', line 27 def verbose @verbose end |
#verify_artifacts ⇒ Object (readonly)
Configuration options
27 28 29 |
# File 'lib/makit/examples/runner.rb', line 27 def verify_artifacts @verify_artifacts end |
Instance Method Details
#discover_examples ⇒ Object
Discover all examples in the examples directory
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/makit/examples/runner.rb', line 83 def discover_examples @examples = Dir.glob("#{@examples_dir}/**/Rakefile").map do |rakefile| example_dir = File.dirname(rakefile) example_name = example_dir.gsub("#{@examples_dir}/", "") { path: example_dir, name: example_name, rakefile: rakefile, expected_artifacts: determine_expected_artifacts(example_name), } end # Apply filter if specified @examples = @examples.select { |ex| ex[:name].match?(@filter) } if @filter log "Discovered #{@examples.count} examples" if @verbose end |
#run_all ⇒ Boolean
Run all discovered examples
60 61 62 63 64 65 66 67 68 |
# File 'lib/makit/examples/runner.rb', line 60 def run_all discover_examples execute_examples verify_results report_results cleanup_if_needed @failed_examples.empty? end |
#run_example(example_path) ⇒ Hash
Run a specific example
74 75 76 77 78 79 80 |
# File 'lib/makit/examples/runner.rb', line 74 def run_example(example_path) discover_examples if @examples.empty? example = @examples.find { |ex| ex[:name] == example_path } return { success: false, error: "Example not found: #{example_path}" } unless example execute_single_example(example) end |