Class: OllamaChat::Tools::RunTests
- Inherits:
-
Object
- Object
- OllamaChat::Tools::RunTests
- Includes:
- Concern, Utils::PathValidator
- Defined in:
- lib/ollama_chat/tools/run_tests.rb
Overview
Tool for executing RSpec / Test‑Unit test suites.
The tool is registered under the name “run_tests“ and exposes a single function that accepts a “path“ (file or directory) and an optional “coverage“ flag. The implementation simply spawns the configured test runner (RSpec or Minitest) and streams its output back to the caller.
Class Method Summary collapse
-
.register_name ⇒ String
The registered name for this tool.
Instance Method Summary collapse
-
#execute(tool_call, **opts) ⇒ String
Execute the tool with the provided arguments.
-
#tool ⇒ Tool
Build the OpenAI function schema for the tool.
Methods included from Utils::PathValidator
Methods included from Concern
Methods included from Utils::Backup
Methods included from Utils::ValueFormatter
Class Method Details
.register_name ⇒ String
Returns the registered name for this tool.
14 |
# File 'lib/ollama_chat/tools/run_tests.rb', line 14 def self.register_name = 'run_tests' |
Instance Method Details
#execute(tool_call, **opts) ⇒ String
Execute the tool with the provided arguments.
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/ollama_chat/tools/run_tests.rb', line 53 def execute(tool_call, **opts) config = opts[:chat].config path = tool_call.function.arguments.path coverage = tool_call.function.arguments.coverage || false path = check_path(path, config) output, success = run_tests(path, coverage) { success:, path:, output:, status: success ? 'passed' : 'failed' }.to_json rescue => e { error: e.class, message: e. }.to_json end |
#tool ⇒ Tool
Build the OpenAI function schema for the tool.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/ollama_chat/tools/run_tests.rb', line 18 def tool Tool.new( type: 'function', function: Tool::Function.new( name: 'run_tests', description: <<~EOT, Test Runner - Runs all tests/specs under *path* the path were the tests/specs are located. `coverage=false` by default; set to true for a coverage report. Returns JSON with test counts and, if requested, coverage percentage. EOT parameters: Tool::Function::Parameters.new( type: 'object', properties: { path: Tool::Function::Parameters::Property.new( type: 'string', description: 'Path to file or directory to run tests for (path has to be allowed!)' ), coverage: Tool::Function::Parameters::Property.new( type: 'boolean', description: 'True if coverage data should be created, (default: false)' ) }, required: [] ) ) ) end |