Module: Ace::TestSupport::CliHelpers
- Defined in:
- lib/ace/test_support/cli_helpers.rb
Overview
CLI test helpers for ace-support-cli based CLIs
This module provides reusable patterns for testing CLI commands during the Thor to ace-support-cli migration (Task 179).
Instance Method Summary collapse
-
#assert_cli_output_matches(cli_class, args, pattern, message = nil) ⇒ Object
Assert CLI output matches pattern.
-
#assert_cli_success(cli_class, args, message = nil) ⇒ Object
Assert CLI returns success (exit code 0).
-
#invoke_cli(cli_class, args) ⇒ Hash
Invoke a ace-support-cli CLI and capture output.
-
#invoke_cli_stdout(cli_class, args) ⇒ String
Invoke CLI and return only stdout (convenience method).
Instance Method Details
#assert_cli_output_matches(cli_class, args, pattern, message = nil) ⇒ Object
Assert CLI output matches pattern
96 97 98 99 100 |
# File 'lib/ace/test_support/cli_helpers.rb', line 96 def assert_cli_output_matches(cli_class, args, pattern, = nil) result = invoke_cli(cli_class, args) assert_match pattern, result[:stdout], || "Expected stdout to match #{pattern.inspect}" end |
#assert_cli_success(cli_class, args, message = nil) ⇒ Object
Assert CLI returns success (exit code 0)
81 82 83 84 85 |
# File 'lib/ace/test_support/cli_helpers.rb', line 81 def assert_cli_success(cli_class, args, = nil) result = invoke_cli(cli_class, args) assert_equal 0, result[:result], || "Expected CLI to return 0, got #{result[:result]}. stderr: #{result[:stderr]}" end |
#invoke_cli(cli_class, args) ⇒ Hash
ace-support-cli calls exit(0) for –help, so we catch SystemExit. Commands raise Ace::Support::Cli::Error for controlled failures (exception-based exit code pattern per ADR-023).
Invoke a ace-support-cli CLI and capture output
This helper provides a consistent pattern for testing CLI routing and command execution. It wraps CLI.start with capture_io to capture stdout/stderr.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ace/test_support/cli_helpers.rb', line 43 def invoke_cli(cli_class, args) stdout, stderr = capture_io do @_cli_result = cli_class.start(args) rescue SystemExit => e @_cli_result = e.status rescue Ace::Support::Cli::Error => e warn e. @_cli_result = e.exit_code end { stdout: stdout, stderr: stderr, result: @_cli_result } end |
#invoke_cli_stdout(cli_class, args) ⇒ String
Invoke CLI and return only stdout (convenience method)
69 70 71 |
# File 'lib/ace/test_support/cli_helpers.rb', line 69 def invoke_cli_stdout(cli_class, args) invoke_cli(cli_class, args)[:stdout] end |