Skip to main content
Glama
by 8b-is
test_v3.3.1_features.sh4.93 kB
#!/bin/bash # Focused test suite for v3.3.5 specific features # Tests: hidden directory handling, entry-type filtering, time-aware tools set -e GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[0;33m' BLUE='\033[0;34m' NC='\033[0m' ST_BIN="${ST_BIN:-./target/release/st}" echo -e "${BLUE}=== Smart Tree v3.3.5 Feature Tests ===${NC}" echo "" # Test 1: Hidden Directory Traversal Fix echo -e "${YELLOW}Test 1: Hidden Directory Traversal${NC}" echo "Creating test structure with hidden directories..." TEST_DIR=$(mktemp -d) mkdir -p "$TEST_DIR/.hidden/level1/level2" echo "visible" > "$TEST_DIR/visible.txt" echo "hidden" > "$TEST_DIR/.hidden/secret.txt" echo "nested" > "$TEST_DIR/.hidden/level1/level2/deep.txt" echo -n "Testing: Hidden directories are not traversed without -a flag... " OUTPUT=$("$ST_BIN" "$TEST_DIR" --mode ai 2>&1) if echo "$OUTPUT" | grep -q "deep.txt"; then echo -e "${RED}FAILED${NC} - Found deep.txt when it should be hidden" echo "$OUTPUT" else echo -e "${GREEN}PASSED${NC}" fi echo -n "Testing: Hidden directories ARE traversed with --everything flag... " OUTPUT=$("$ST_BIN" "$TEST_DIR" --mode ai --everything 2>&1) if echo "$OUTPUT" | grep -q "deep.txt"; then echo -e "${GREEN}PASSED${NC}" else echo -e "${RED}FAILED${NC} - deep.txt not found with --everything flag" fi # Test 2: Entry Type Filtering echo -e "\n${YELLOW}Test 2: Entry Type Filtering${NC}" mkdir -p "$TEST_DIR/mixed" touch "$TEST_DIR/mixed/file1.txt" "$TEST_DIR/mixed/file2.txt" mkdir -p "$TEST_DIR/mixed/dir1" "$TEST_DIR/mixed/dir2" echo -n "Testing: --entry-type d shows only directories... " OUTPUT=$("$ST_BIN" "$TEST_DIR/mixed" --find ".*" --entry-type d --mode ai 2>&1) FILE_COUNT=$(echo "$OUTPUT" | grep -c "file[0-9].txt" || true) DIR_COUNT=$(echo "$OUTPUT" | grep -c "dir[0-9]" || true) if [ "$FILE_COUNT" -eq 0 ] && [ "$DIR_COUNT" -gt 0 ]; then echo -e "${GREEN}PASSED${NC}" else echo -e "${RED}FAILED${NC} - Found $FILE_COUNT files, $DIR_COUNT dirs" fi echo -n "Testing: --entry-type f shows only files... " OUTPUT=$("$ST_BIN" "$TEST_DIR/mixed" --find ".*" --entry-type f --mode ai 2>&1) FILE_COUNT=$(echo "$OUTPUT" | grep -c "file[0-9].txt" || true) DIR_COUNT=$(echo "$OUTPUT" | grep -c " dir[0-9]" || true) if [ "$FILE_COUNT" -gt 0 ] && [ "$DIR_COUNT" -eq 0 ]; then echo -e "${GREEN}PASSED${NC}" else echo -e "${RED}FAILED${NC} - Found $FILE_COUNT files, $DIR_COUNT dirs" fi # Test 3: MCP Time Awareness echo -e "\n${YELLOW}Test 3: MCP Time Awareness${NC}" echo -n "Testing: server_info includes current_time... " MCP_OUTPUT=$(echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"server_info","arguments":{}},"id":1}' | timeout 5s "$ST_BIN" --mcp 2>&1 || true) if echo "$MCP_OUTPUT" | grep -q "current_time"; then echo -e "${GREEN}PASSED${NC}" # Extract and show the time TIME_INFO=$(echo "$MCP_OUTPUT" | grep -o '"current_time":[^}]*}' | head -1) echo " Found time info in response" else echo -e "${RED}FAILED${NC}" echo " No current_time found in server_info" fi echo -n "Testing: find_in_timespan tool exists... " MCP_OUTPUT=$(echo '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":2}' | timeout 5s "$ST_BIN" --mcp 2>&1 || true) if echo "$MCP_OUTPUT" | grep -q "find_in_timespan"; then echo -e "${GREEN}PASSED${NC}" else echo -e "${RED}FAILED${NC}" echo " find_in_timespan not found in tools list" fi # Test 4: LS Mode with Filtered Results echo -e "\n${YELLOW}Test 4: LS Mode Path Display${NC}" echo -n "Testing: LS mode shows directories containing matches... " OUTPUT=$("$ST_BIN" "$TEST_DIR" --find "secret" --mode ls --everything 2>&1) if echo "$OUTPUT" | grep -q ".hidden"; then echo -e "${GREEN}PASSED${NC}" else echo -e "${RED}FAILED${NC}" echo " Expected .hidden directory in ls output" echo " Got: $OUTPUT" fi # Test 5: Date Range Search via MCP echo -e "\n${YELLOW}Test 5: Date Range Search${NC}" # Create files with specific dates touch "$TEST_DIR/today.txt" touch -d "2025-07-01" "$TEST_DIR/july1.txt" touch -d "2025-06-01" "$TEST_DIR/june1.txt" echo -n "Testing: find_in_timespan with date range... " MCP_CMD=$(cat <<EOF {"jsonrpc":"2.0","method":"tools/call","params":{"name":"find_in_timespan","arguments":{"path":"$TEST_DIR","start_date":"2025-06-30","end_date":"2025-07-02"}},"id":3} EOF ) MCP_OUTPUT=$(echo "$MCP_CMD" | timeout 5s "$ST_BIN" --mcp 2>&1 || true) if echo "$MCP_OUTPUT" | grep -q '"found": 1' || echo "$MCP_OUTPUT" | grep -q "july1.txt"; then echo -e "${GREEN}PASSED${NC}" else echo -e "${RED}FAILED${NC}" echo " Expected to find july1.txt in date range" # Debug output echo "$MCP_OUTPUT" | grep -o '{"jsonrpc".*}' | jq -r '.result.content[0].text' 2>/dev/null | head -20 || echo " Could not parse output" fi # Cleanup rm -rf "$TEST_DIR" echo -e "\n${BLUE}=== Test Complete ===${NC}" echo "All v3.3.5 specific features have been tested!"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/8b-is/smart-tree'

If you have feedback or need assistance with the MCP directory API, please join our Discord server