Skip to content

Merge pull request #3 from 7SOATSquad30/feat/tests #59

Merge pull request #3 from 7SOATSquad30/feat/tests

Merge pull request #3 from 7SOATSquad30/feat/tests #59

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
- name: Grant execute permission for Gradlew
run: chmod +x ./gradlew
- name: Install xmllint
run: |
sudo apt-get update
sudo apt-get install -y libxml2-utils
- name: Run Spotless Apply
run: ./gradlew spotlessApply
- name: Run Spotless Check
run: ./gradlew spotlessCheck
- name: Run tests and generate JaCoCo report
run: |
./gradlew clean test jacocoTestReport
echo "Generated JaCoCo reports:"
ls -R build/reports/jacoco || echo "No JaCoCo reports found."
- name: Upload JaCoCo Coverage Report
uses: actions/upload-artifact@v3
with:
name: jacoco-coverage-report
path: build/reports/jacoco/test/html
- name: Extract and display coverage percentage
run: |
# Caminho fixo do relatório XML
REPORT_PATH=build/reports/jacoco/test/jacocoTestReport.xml
if [ ! -f "$REPORT_PATH" ]; then
echo "JaCoCo XML coverage report not found!"
exit 1
fi
echo "Found JaCoCo XML report at: $REPORT_PATH"
# Extração dos dados de cobertura
COVERED=$(xmllint --xpath 'string(sum(//counter[@type="LINE"]/@covered))' "$REPORT_PATH")
MISSED=$(xmllint --xpath 'string(sum(//counter[@type="LINE"]/@missed))' "$REPORT_PATH")
if [ -z "$COVERED" ] || [ -z "$MISSED" ]; then
echo "Error: Unable to extract coverage data from the XML report."
exit 1
fi
# Converte valores para inteiros para evitar problemas de cálculo
COVERED=$(printf "%.0f" "$COVERED")
MISSED=$(printf "%.0f" "$MISSED")
TOTAL=$((COVERED + MISSED))
if [ "$TOTAL" -eq 0 ]; then
echo "Error: Total lines is zero, coverage cannot be calculated."
exit 1
fi
# Cálculo do percentual de cobertura
PERCENTAGE=$(echo "scale=2; ($COVERED / $TOTAL) * 100" | bc)
echo "Lines Covered: $COVERED"
echo "Lines Missed: $MISSED"
echo "Total Lines: $TOTAL"
echo "Coverage Percentage: $PERCENTAGE%"
# Validação da cobertura mínima (80%)
MINIMUM=80.0
if (( $(echo "$PERCENTAGE < $MINIMUM" | bc -l) )); then
echo "Coverage is below the minimum required: $MINIMUM%!"
exit 1
fi
echo "Coverage validation passed with $PERCENTAGE%."