Files
drharness/tests/test_tool_grep.sh
2026-05-09 12:26:08 -05:00

62 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# test_tool_grep_search.sh - Fully validates the grep_search tool
# Create test files for grep
echo "Hello World" > grep_test.txt
echo "Hello drharness" >> grep_test.txt
echo "Goodbye World" >> grep_test.txt
# Mock response: ask for grep_search
tool_call grep_search '{"path":"grep_test.txt","pattern":"Hello","context":1,"max_matches":10}' >> mock_responses.txt
be_done 'Grep complete' >> mock_responses.txt
OUTPUT=$("${DRHARNESS}" -F chat.json -n -m "Search file" -t grep_search -d < "mock_responses.txt" 2>/dev/null)
if [ "${OUTPUT}" != "Grep complete" ]; then
echo "FAIL: grep_search tool - expected 'Grep complete', got '${OUTPUT}'"
exit 1
fi
result=$(dr_result chat.json 2)
if ! echo "$result" | grep -q "Hello World"; then
echo "FAIL: grep_search tool - expected 'Hello World' in output"
echo "Got: $result"
exit 1
fi
if ! echo "$result" | grep -q "Hello drharness"; then
echo "FAIL: grep_search tool - expected 'Hello drharness' in output"
echo "Got: $result"
exit 1
fi
# Test case-insensitive
rm -f chat.json
tool_call grep_search '{"path":"grep_test.txt","pattern":"goodbye","case_insensitive":true,"max_matches":10}' >> mock_responses2.txt
be_done 'Case insensitive done' >> mock_responses2.txt
"${DRHARNESS}" -F chat.json -n -m "Search case insensitive" -t grep_search -d < "mock_responses2.txt" >/dev/null 2>&1
result=$(dr_result chat.json 2)
if ! echo "$result" | grep -q "Goodbye World"; then
echo "FAIL: grep_search tool - expected case insensitive match 'Goodbye World'"
echo "Got: $result"
exit 1
fi
# Test invalid regex
rm -f chat.json
tool_call grep_search '{"path":"grep_test.txt","pattern":"[invalid"}' >> mock_responses3.txt
be_done 'Regex error done' >> mock_responses3.txt
"${DRHARNESS}" -F chat.json -n -m "Invalid regex" -t grep_search -d < "mock_responses3.txt" >/dev/null 2>&1
result=$(dr_result chat.json 2)
if ! echo "$result" | grep -q "Error: invalid regex pattern"; then
echo "FAIL: grep_search tool - expected regex error"
echo "Got: $result"
exit 1
fi
echo "PASS: tool_grep_search"