-
Notifications
You must be signed in to change notification settings - Fork 100
163 lines (136 loc) · 5.88 KB
/
test_code_agent.yml
File metadata and controls
163 lines (136 loc) · 5.88 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
# Copyright(C) 2025-2026 Advanced Micro Devices, Inc. All rights reserved.
# SPDX-License-Identifier: MIT
# This workflow tests the GAIA Code Agent functionality
# Tests include: Code generation, parsing, linting, formatting, and integration tests
name: Code Agent Tests
on:
workflow_call:
push:
branches: [ main ]
pull_request:
branches: [ main ]
types: [opened, synchronize, reopened, ready_for_review]
merge_group:
workflow_dispatch:
permissions:
contents: read
jobs:
test-code-agent:
name: Test Code Agent
runs-on: ubuntu-latest
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false || contains(github.event.pull_request.labels.*.name, 'ready_for_ci')
steps:
- uses: actions/checkout@v6
- name: Free disk space
uses: ./.github/actions/free-disk-space
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Install uv
run: curl -LsSf https://astral.sh/uv/install.sh | sh
- name: Install dependencies
run: |
uv pip install --system -e .[dev]
# Install optional dependencies for code agent
uv pip install --system black pylint
- name: Run Code Agent Mixin Architecture Tests
run: |
echo "================================================================"
echo " CODE AGENT MIXIN ARCHITECTURE TESTS"
echo "================================================================"
echo "Testing refactored mixin architecture and tool registration..."
echo ""
# Run mixin tests
python -m pytest tests/test_code_agent_mixins.py -v --tb=short
# Store the result
MIXIN_TEST_EXIT=$?
if [ $MIXIN_TEST_EXIT -eq 0 ]; then
echo "[SUCCESS] All 38 mixin tests passed"
else
echo "[FAILURE] Mixin architecture tests failed"
exit 1
fi
- name: Run Code Agent Unit Tests
run: |
echo ""
echo "================================================================"
echo " CODE AGENT UNIT TESTS"
echo "================================================================"
echo "Testing core functionality: parsing, generation, tools..."
echo ""
# Run with pytest for better output formatting
python -m pytest tests/test_code_agent.py::TestCodeAgent -v --tb=short \
-k "not workflow and not integration and not process_query" \
|| true
# Store the result
UNIT_TEST_EXIT=$?
if [ $UNIT_TEST_EXIT -eq 0 ]; then
echo "[SUCCESS] Unit tests passed"
else
echo "[WARNING] Some unit tests failed (non-blocking for now)"
fi
- name: Run Code Agent Integration Tests
run: |
echo ""
echo "================================================================"
echo " CODE AGENT INTEGRATION TESTS"
echo "================================================================"
echo "Testing workflows and complex scenarios..."
echo ""
# Run integration tests
python -m pytest tests/test_code_agent.py::TestCodeAgentIntegration -v --tb=short \
|| true
# Store the result
INTEGRATION_TEST_EXIT=$?
if [ $INTEGRATION_TEST_EXIT -eq 0 ]; then
echo "[SUCCESS] Integration tests passed"
else
echo "[WARNING] Some integration tests failed (non-blocking for now)"
fi
- name: Run Code Agent Workflow Tests
run: |
echo ""
echo "================================================================"
echo " CODE AGENT WORKFLOW TESTS"
echo "================================================================"
echo "Testing complete code generation workflows..."
echo ""
# Run workflow tests with timeout
timeout 300 python -m pytest tests/test_code_agent.py -v --tb=short \
-k "workflow or process_query or complete_workflow" \
|| true
# Store the result
WORKFLOW_TEST_EXIT=$?
if [ $WORKFLOW_TEST_EXIT -eq 0 ]; then
echo "[SUCCESS] Workflow tests passed"
elif [ $WORKFLOW_TEST_EXIT -eq 124 ]; then
echo "[WARNING] Workflow tests timed out (5 min limit)"
else
echo "[WARNING] Some workflow tests failed (non-blocking for now)"
fi
- name: Test Summary
if: always()
run: |
echo ""
echo "================================================================"
echo " CODE AGENT TEST SUMMARY"
echo "================================================================"
echo "Test Categories:"
echo " ✅ Mixin Architecture Tests: 38 tests validating refactored structure"
echo " ✅ Unit Tests: Tool functionality, parsing, generation"
echo " ✅ Integration Tests: Multi-step operations"
echo " ✅ Workflow Tests: Complete code generation pipelines"
echo ""
echo "Test Coverage:"
echo " - Mixin architecture and tool registration (NEW)"
echo " - Code parsing and validation"
echo " - Function/class/test generation"
echo " - File I/O operations"
echo " - Pylint and Black integration"
echo " - Error recovery mechanisms"
echo " - Complete workflow simulations"
echo "================================================================"
echo ""
echo "Note: Tests are currently non-blocking to allow for gradual fixes"
echo "================================================================"