Class: Ace::TestRunner::Molecules::SmartTestExecutor
- Inherits:
-
Object
- Object
- Ace::TestRunner::Molecules::SmartTestExecutor
- Defined in:
- lib/ace/test_runner/molecules/smart_test_executor.rb
Overview
Intelligently chooses between subprocess and in-process execution based on test type
Instance Method Summary collapse
- #execute_command(command) ⇒ Object
- #execute_single_file(file, options = {}) ⇒ Object
- #execute_tests(files, options = {}) ⇒ Object
- #execute_with_progress(files, options = {}) {|{type: :execution_mode, mode: mode}| ... } ⇒ Object
-
#initialize(command_builder: nil, timeout: nil, force_mode: nil) ⇒ SmartTestExecutor
constructor
A new instance of SmartTestExecutor.
Constructor Details
#initialize(command_builder: nil, timeout: nil, force_mode: nil) ⇒ SmartTestExecutor
Returns a new instance of SmartTestExecutor.
12 13 14 15 16 17 |
# File 'lib/ace/test_runner/molecules/smart_test_executor.rb', line 12 def initialize(command_builder: nil, timeout: nil, force_mode: nil) @subprocess_executor = TestExecutor.new(command_builder: command_builder, timeout: timeout) @in_process_runner = InProcessRunner.new(timeout: timeout) @test_type_detector = Atoms::TestTypeDetector.new @force_mode = force_mode # :subprocess, :direct, or nil for auto end |
Instance Method Details
#execute_command(command) ⇒ Object
43 44 45 46 |
# File 'lib/ace/test_runner/molecules/smart_test_executor.rb', line 43 def execute_command(command) # Direct command execution always uses subprocess @subprocess_executor.execute_command(command) end |
#execute_single_file(file, options = {}) ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'lib/ace/test_runner/molecules/smart_test_executor.rb', line 33 def execute_single_file(file, = {}) mode = determine_execution_mode([file], ) if mode == :direct @in_process_runner.execute_single_file(file, ) else @subprocess_executor.execute_single_file(file, ) end end |
#execute_tests(files, options = {}) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/ace/test_runner/molecules/smart_test_executor.rb', line 19 def execute_tests(files, = {}) return empty_result if files.empty? # Determine execution mode mode = determine_execution_mode(files, ) # Execute with appropriate runner if mode == :direct @in_process_runner.execute_tests(files, ) else @subprocess_executor.execute_tests(files, ) end end |
#execute_with_progress(files, options = {}) {|{type: :execution_mode, mode: mode}| ... } ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/ace/test_runner/molecules/smart_test_executor.rb', line 48 def execute_with_progress(files, = {}, &block) mode = determine_execution_mode(files, ) # Add mode information to progress callback yield({type: :execution_mode, mode: mode}) if block_given? if mode == :direct @in_process_runner.execute_with_progress(files, , &block) else @subprocess_executor.execute_with_progress(files, , &block) end end |