-
-
Notifications
You must be signed in to change notification settings - Fork 762
Expand file tree
/
Copy pathvalidate_ruff_migration.sh
More file actions
executable file
·172 lines (155 loc) · 5.22 KB
/
validate_ruff_migration.sh
File metadata and controls
executable file
·172 lines (155 loc) · 5.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#!/bin/bash
# Migration validation script for Ruff integration
# This script verifies that the Ruff migration is properly configured
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Track validation results
ERRORS=0
WARNINGS=0
echo "Validating Ruff migration setup..."
echo ""
# Check 1: Verify Ruff is installed
echo -n "Checking Ruff installation... "
if command -v ruff &> /dev/null; then
RUFF_VERSION=$(ruff --version 2>&1 | head -n1)
echo -e "${GREEN}✓${NC} Found: $RUFF_VERSION"
else
echo -e "${RED}✗${NC} Ruff not found"
echo " Install with: pip install ruff"
ERRORS=$((ERRORS + 1))
fi
# Check 2: Verify ruff_integration.py exists
echo -n "Checking ruff_integration.py... "
if [ -f "$PROJECT_ROOT/pymode/ruff_integration.py" ]; then
echo -e "${GREEN}✓${NC} Found"
else
echo -e "${RED}✗${NC} Not found"
ERRORS=$((ERRORS + 1))
fi
# Check 3: Verify lint.py uses ruff_integration
echo -n "Checking lint.py integration... "
if grep -q "ruff_integration" "$PROJECT_ROOT/pymode/lint.py" 2>/dev/null; then
echo -e "${GREEN}✓${NC} Integrated"
else
echo -e "${YELLOW}⚠${NC} May not be using ruff_integration"
WARNINGS=$((WARNINGS + 1))
fi
# Check 4: Verify submodules are removed
echo -n "Checking removed submodules... "
REMOVED_SUBMODULES=("pyflakes" "pycodestyle" "mccabe" "pylint" "pydocstyle" "pylama" "autopep8" "snowball_py")
MISSING_SUBMODULES=0
for submodule in "${REMOVED_SUBMODULES[@]}"; do
if [ -d "$PROJECT_ROOT/submodules/$submodule" ]; then
echo -e "${YELLOW}⚠${NC} Submodule still exists: $submodule"
MISSING_SUBMODULES=$((MISSING_SUBMODULES + 1))
fi
done
if [ $MISSING_SUBMODULES -eq 0 ]; then
echo -e "${GREEN}✓${NC} All removed submodules cleaned up"
else
WARNINGS=$((WARNINGS + MISSING_SUBMODULES))
fi
# Check 5: Verify required submodules exist
echo -n "Checking required submodules... "
REQUIRED_SUBMODULES=("rope" "tomli" "pytoolconfig")
MISSING_REQUIRED=0
for submodule in "${REQUIRED_SUBMODULES[@]}"; do
if [ ! -d "$PROJECT_ROOT/submodules/$submodule" ]; then
echo -e "${RED}✗${NC} Required submodule missing: $submodule"
MISSING_REQUIRED=$((MISSING_REQUIRED + 1))
fi
done
if [ $MISSING_REQUIRED -eq 0 ]; then
echo -e "${GREEN}✓${NC} All required submodules present"
else
ERRORS=$((ERRORS + MISSING_REQUIRED))
fi
# Check 6: Verify .gitmodules doesn't reference removed submodules
echo -n "Checking .gitmodules... "
if [ -f "$PROJECT_ROOT/.gitmodules" ]; then
REMOVED_IN_GITMODULES=0
for submodule in "${REMOVED_SUBMODULES[@]}"; do
if grep -q "\[submodule.*$submodule" "$PROJECT_ROOT/.gitmodules" 2>/dev/null; then
echo -e "${YELLOW}⚠${NC} Still referenced in .gitmodules: $submodule"
REMOVED_IN_GITMODULES=$((REMOVED_IN_GITMODULES + 1))
fi
done
if [ $REMOVED_IN_GITMODULES -eq 0 ]; then
echo -e "${GREEN}✓${NC} Clean"
else
WARNINGS=$((WARNINGS + REMOVED_IN_GITMODULES))
fi
else
echo -e "${YELLOW}⚠${NC} .gitmodules not found (may not be a git repo)"
fi
# Check 7: Verify Dockerfile includes ruff
echo -n "Checking Dockerfile... "
if [ -f "$PROJECT_ROOT/Dockerfile" ]; then
if grep -q "ruff" "$PROJECT_ROOT/Dockerfile" 2>/dev/null; then
echo -e "${GREEN}✓${NC} Ruff included"
else
echo -e "${YELLOW}⚠${NC} Ruff not found in Dockerfile"
WARNINGS=$((WARNINGS + 1))
fi
else
echo -e "${YELLOW}⚠${NC} Dockerfile not found"
fi
# Check 8: Verify tests exist
echo -n "Checking Ruff tests... "
if [ -f "$PROJECT_ROOT/tests/vader/ruff_integration.vader" ]; then
echo -e "${GREEN}✓${NC} Found"
else
echo -e "${YELLOW}⚠${NC} Not found"
WARNINGS=$((WARNINGS + 1))
fi
# Check 9: Verify documentation exists
echo -n "Checking documentation... "
DOCS_FOUND=0
if [ -f "$PROJECT_ROOT/MIGRATION_GUIDE.md" ]; then
DOCS_FOUND=$((DOCS_FOUND + 1))
fi
if [ -f "$PROJECT_ROOT/RUFF_CONFIGURATION_MAPPING.md" ]; then
DOCS_FOUND=$((DOCS_FOUND + 1))
fi
if [ $DOCS_FOUND -eq 2 ]; then
echo -e "${GREEN}✓${NC} Complete"
elif [ $DOCS_FOUND -eq 1 ]; then
echo -e "${YELLOW}⚠${NC} Partial"
WARNINGS=$((WARNINGS + 1))
else
echo -e "${YELLOW}⚠${NC} Missing"
WARNINGS=$((WARNINGS + 1))
fi
# Check 10: Test Ruff execution (if available)
if command -v ruff &> /dev/null; then
echo -n "Testing Ruff execution... "
TEST_FILE=$(mktemp)
echo "print('test')" > "$TEST_FILE"
if ruff check "$TEST_FILE" &> /dev/null; then
echo -e "${GREEN}✓${NC} Working"
rm -f "$TEST_FILE"
else
echo -e "${YELLOW}⚠${NC} Execution test failed"
WARNINGS=$((WARNINGS + 1))
rm -f "$TEST_FILE"
fi
fi
# Summary
echo ""
echo "=========================================="
if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then
echo -e "${GREEN}✓ Migration validation passed${NC}"
exit 0
elif [ $ERRORS -eq 0 ]; then
echo -e "${YELLOW}⚠ Migration validation passed with warnings ($WARNINGS)${NC}"
exit 0
else
echo -e "${RED}✗ Migration validation failed ($ERRORS errors, $WARNINGS warnings)${NC}"
exit 1
fi