claw-code/.guardrails/ide/test-vim.sh

81 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
# Test gate for Vim plugin
# Validates VimScript syntax and plugin structure
set -e
cd "$(dirname "$0")/vim-plugin"
echo "=== Vim Plugin Test Gate ==="
echo
# Check required files
echo "[1/5] Checking required files..."
required_files=(
"plugin/guardrail.vim"
"autoload/guardrail.vim"
)
for file in "${required_files[@]}"; do
if [ ! -f "$file" ]; then
echo "ERROR: Required file missing: $file"
exit 1
fi
done
echo "✓ All required files present"
# Check README
echo "[2/5] Checking documentation..."
if [ ! -f "README.md" ] && [ ! -f "INSTALL.md" ]; then
echo "WARNING: No README.md or INSTALL.md found"
fi
echo "✓ Documentation check complete"
# VimScript syntax validation
echo "[3/5] Checking VimScript syntax..."
# Check for proper function definitions
if ! grep -q "^function!" "autoload/guardrail.vim"; then
echo "ERROR: autoload/guardrail.vim missing function definitions"
exit 1
fi
# Check for proper script guard in plugin/guardrail.vim
if ! grep -q "if exists('g:loaded_guardrail')" "plugin/guardrail.vim"; then
echo "WARNING: plugin/guardrail.vim should have load guard"
fi
echo "✓ VimScript structure valid"
# Security checks
echo "[4/5] Running security checks..."
# Check for shellescape usage (security fix applied)
if ! grep -q "shellescape" "autoload/guardrail.vim"; then
echo "ERROR: autoload/guardrail.vim missing shellescape (shell injection risk)"
exit 1
fi
echo "✓ shellescape properly used"
# Check for curl usage
if ! grep -q "curl" "autoload/guardrail.vim"; then
echo "WARNING: No curl found - may be using different HTTP client"
fi
# Check for configurable variables
echo "[5/5] Checking configuration variables..."
config_vars=(
"g:guardrail_server_url"
"g:guardrail_api_key"
"g:guardrail_project_slug"
"g:guardrail_enabled"
)
for var in "${config_vars[@]}"; do
if ! grep -q "$var" "autoload/guardrail.vim"; then
echo "WARNING: Configuration variable $var not found"
fi
done
echo "✓ Configuration variables check complete"
echo
echo "=== All Vim Plugin Tests Passed ==="