-
Notifications
You must be signed in to change notification settings - Fork 2
132 lines (110 loc) · 3.96 KB
/
test-claude-skills.yml
File metadata and controls
132 lines (110 loc) · 3.96 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
name: Test Claude
on:
# Run on pull requests to main
pull_request:
branches: [main]
paths:
- 'tools/claude/config/skills/**/*.py'
- 'tools/claude/config/skills/**/pyproject.toml'
- '.github/workflows/test-claude-skills.yml'
# Run on pushes to main branch
push:
branches: [main]
paths:
- 'tools/claude/config/skills/**/*.py'
- 'tools/claude/config/skills/**/pyproject.toml'
- '.github/workflows/test-claude-skills.yml'
# Allow manual triggering for debugging
workflow_dispatch:
jobs:
skills:
name: Skills
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install uv
run: brew install uv
- name: Run ruff checks
run: |
echo "Running ruff checks on all skills..."
cd tools/claude/config/skills
for skill_dir in */; do
if [[ -f "$skill_dir/pyproject.toml" ]]; then
echo ""
echo "Checking $skill_dir with ruff..."
cd "$skill_dir"
uv run --with ruff ruff check . || exit 1
cd ..
echo "✅ Passed"
fi
done
echo ""
echo "✅ All ruff checks passed"
- name: Run mypy checks
run: |
echo "Running mypy checks on all skills..."
cd tools/claude/config/skills
for skill_dir in */; do
if [[ -f "$skill_dir/pyproject.toml" ]]; then
echo ""
echo "Type checking $skill_dir with mypy..."
cd "$skill_dir"
uv run --with mypy --with notion-client --with pydantic --with pytest mypy --python-version 3.11 . || exit 1
cd ..
echo "✅ Passed"
fi
done
echo ""
echo "✅ All mypy checks passed"
- name: Run tests
run: |
echo "Searching for skill tests..."
cd tools/claude/config/skills
FAILED_TESTS=""
PASSED_TESTS=0
# Find all test_*.py files
for test_file in */test_*.py; do
if [[ -f "$test_file" ]]; then
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Running: $test_file"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
if uv run "$test_file"; then
((PASSED_TESTS++))
echo "✅ Passed: $test_file"
else
FAILED_TESTS="$FAILED_TESTS$test_file\n"
echo "❌ Failed: $test_file"
fi
fi
done
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Test Summary"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
if [[ -n "$FAILED_TESTS" ]]; then
echo "❌ Failed tests:"
echo -e "$FAILED_TESTS"
echo ""
echo "Passed: $PASSED_TESTS"
exit 1
fi
if [[ $PASSED_TESTS -eq 0 ]]; then
echo "⚠️ No test files found"
exit 0
fi
echo "✅ All $PASSED_TESTS test file(s) passed"
- name: Summary
if: always()
run: |
echo "=== Test Summary ==="
echo "Repository: ${{ github.repository }}"
echo "Branch: ${{ github.ref_name }}"
echo "Commit: ${{ github.sha }}"
echo "Runner OS: ${{ runner.os }}"
if [[ "${{ job.status }}" == "success" ]]; then
echo "🎉 All Claude skill tests passed!"
else
echo "❌ Some tests failed. Check the logs above for details."
fi