62 lines
2.0 KiB
Bash
Executable File
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"
|