|
name: Unit Tests |
|
|
|
on: |
|
pull_request_target: |
|
push: |
|
branches: |
|
- 'main' |
|
- 'dev' |
|
- '*-release' |
|
|
|
jobs: |
|
build: |
|
runs-on: ubuntu-latest |
|
strategy: |
|
matrix: |
|
|
|
python-version: ['3.9'] |
|
|
|
steps: |
|
- uses: actions/checkout@v4 |
|
with: |
|
ref: ${{ github.event.pull_request.head.sha }} |
|
- name: Set up Python ${{ matrix.python-version }} |
|
uses: actions/setup-python@v4 |
|
with: |
|
python-version: ${{ matrix.python-version }} |
|
cache: 'pip' |
|
- name: Install dependencies |
|
run: | |
|
python -m pip install --upgrade pip |
|
pip install -e .[test] |
|
npm install -g @mermaid-js/mermaid-cli |
|
playwright install --with-deps |
|
- name: Test with pytest |
|
run: | |
|
export ALLOW_OPENAI_API_CALL=0 |
|
mkdir -p ~/.metagpt && cp tests/config2.yaml ~/.metagpt/config2.yaml |
|
pytest | tee unittest.txt |
|
- name: Show coverage report |
|
run: | |
|
coverage report -m |
|
- name: Show failed tests and overall summary |
|
run: | |
|
grep -E "FAILED tests|ERROR tests|[0-9]+ passed," unittest.txt |
|
failed_count=$(grep -E "FAILED tests|ERROR tests" unittest.txt | wc -l | tr -d '[:space:]') |
|
if [[ $failed_count -gt 0 ]]; then |
|
echo "$failed_count failed lines found! Task failed." |
|
exit 1 |
|
fi |
|
- name: Upload pytest test results |
|
uses: actions/upload-artifact@v3 |
|
with: |
|
name: pytest-results-${{ matrix.python-version }} |
|
path: | |
|
./unittest.txt |
|
./htmlcov/ |
|
./tests/data/rsp_cache_new.json |
|
retention-days: 3 |
|
if: ${{ always() }} |
|
|