81 lines
2.1 KiB
Bash
Executable File
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 ==="
|