2025-10-18 17:35:29 -04:00
#!/bin/bash
if [ -f .env ] ; then
export $( grep -v '^#' .env | xargs)
fi
2025-10-21 16:39:58 +11:00
if [ -z " $SKIP_BUILD " ] ; then
echo "Building goose..."
cargo build --release --bin goose
echo ""
else
echo "Skipping build (SKIP_BUILD is set)..."
echo ""
fi
2025-10-18 17:35:29 -04:00
SCRIPT_DIR = $( pwd )
PROVIDERS = (
2025-10-21 16:39:58 +11:00
"openrouter:anthropic/claude-sonnet-4.5:qwen/qwen3-coder"
2025-10-18 17:35:29 -04:00
"openai:gpt-4o:gpt-4o-mini:gpt-3.5-turbo"
2025-10-21 16:39:58 +11:00
"anthropic:claude-sonnet-4-5-20250929:claude-opus-4-1-20250805"
2025-10-18 17:35:29 -04:00
"google:gemini-2.5-pro:gemini-2.5-pro:gemini-2.5-flash"
)
2025-10-21 16:39:58 +11:00
# In CI, only run Databricks tests if DATABRICKS_HOST and DATABRICKS_TOKEN are set
# Locally, always run Databricks tests
if [ -n " $CI " ] ; then
if [ -n " $DATABRICKS_HOST " ] && [ -n " $DATABRICKS_TOKEN " ] ; then
echo "✓ Including Databricks tests"
PROVIDERS += ( "databricks:databricks-claude-sonnet-4:gemini-2-5-flash:gpt-4o" )
else
echo "⚠️ Skipping Databricks tests (DATABRICKS_HOST and DATABRICKS_TOKEN required in CI)"
fi
else
echo "✓ Including Databricks tests"
PROVIDERS += ( "databricks:databricks-claude-sonnet-4:gemini-2-5-flash:gpt-4o" )
fi
2025-10-18 17:35:29 -04:00
RESULTS = ( )
for provider_config in " ${ PROVIDERS [@] } " ; do
IFS = ':' read -ra PARTS <<< " $provider_config "
PROVIDER = " ${ PARTS [0] } "
for i in $( seq 1 $(( ${# PARTS [@] } - 1 )) ) ; do
MODEL = " ${ PARTS [ $i ] } "
export GOOSE_PROVIDER = " $PROVIDER "
export GOOSE_MODEL = " $MODEL "
TESTDIR = $( mktemp -d)
echo "hello" > " $TESTDIR /hello.txt "
echo " Provider: ${ PROVIDER } "
echo " Model: ${ MODEL } "
echo ""
TMPFILE = $( mktemp)
( cd " $TESTDIR " && " $SCRIPT_DIR /target/release/goose " run --text "please list files in the current directory" --with-builtin developer 2>& 1) | tee " $TMPFILE "
echo ""
if grep -q "shell | developer" " $TMPFILE " ; then
echo "✓ SUCCESS: Test passed - developer tool called"
RESULTS += ( " ✓ ${ PROVIDER } / ${ MODEL } " )
else
echo "✗ FAILED: Test failed - no developer tools called"
RESULTS += ( " ✗ ${ PROVIDER } / ${ MODEL } " )
fi
rm " $TMPFILE "
rm -rf " $TESTDIR "
echo "---"
done
done
echo ""
echo "=== Test Summary ==="
for result in " ${ RESULTS [@] } " ; do
echo " $result "
done
if echo " ${ RESULTS [@] } " | grep -q "✗" ; then
echo ""
echo "Some tests failed!"
exit 1
else
echo ""
echo "All tests passed!"
fi