Skip to content

test(geocoding): add mock methods for GeocodingProvider in TestSettin… #40

test(geocoding): add mock methods for GeocodingProvider in TestSettin…

test(geocoding): add mock methods for GeocodingProvider in TestSettin… #40

Workflow file for this run

name: CI
on:
pull_request:
branches:
- main
types:
- opened
- synchronize
- reopened
push:
branches:
- '**'
workflow_dispatch:
inputs:
debug_enabled:
type: boolean
description: Run with debug logging
required: false
default: false
concurrency:
group: ci-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
FLUTTER_CHANNEL: stable
jobs:
format:
name: Format
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: ${{ env.FLUTTER_CHANNEL }}
cache: true
- name: Install dependencies
run: flutter pub get
- name: Check formatting
id: format_check
run: |
echo "## Format" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
if dart format --set-exit-if-changed --output=none . 2>&1 | tee format_output.txt; then
echo "Formatting is valid." >> "$GITHUB_STEP_SUMMARY"
echo "format_status=success" >> "$GITHUB_OUTPUT"
else
echo "Formatting issues were found." >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
dart format --set-exit-if-changed . 2>&1 | grep -E "^Changed|^Would change" >> "$GITHUB_STEP_SUMMARY" || true
echo '```' >> "$GITHUB_STEP_SUMMARY"
echo "format_status=failure" >> "$GITHUB_OUTPUT"
exit 1
fi
analyze:
name: Analyze
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: ${{ env.FLUTTER_CHANNEL }}
cache: true
- name: Install dependencies
run: flutter pub get
- name: Run analyzer
id: analyze
run: |
echo "## Analyze" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
if flutter analyze --no-fatal-infos 2>&1 | tee analyze_output.txt; then
echo "No analysis issues found." >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
cat analyze_output.txt >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
echo "analyze_status=success" >> "$GITHUB_OUTPUT"
else
echo "Analysis issues were found." >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
cat analyze_output.txt >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
echo "analyze_status=failure" >> "$GITHUB_OUTPUT"
exit 1
fi
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: ${{ env.FLUTTER_CHANNEL }}
cache: true
- name: Install dependencies
run: flutter pub get
- name: Create test environment file
run: echo "# Test environment" > .env
- name: Run tests
id: test
run: |
echo "## Test" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
if flutter test --coverage 2>&1 | tee test_output.txt; then
echo "Tests passed." >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
tail -20 test_output.txt >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
echo "test_status=success" >> "$GITHUB_OUTPUT"
else
echo "Tests failed." >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
cat test_output.txt >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
echo "test_status=failure" >> "$GITHUB_OUTPUT"
exit 1
fi
- name: Upload coverage report
if: always()
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage/lcov.info
retention-days: 7
if-no-files-found: ignore
build:
name: Build
runs-on: ubuntu-latest
needs: [format, analyze, test]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
cache: gradle
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: ${{ env.FLUTTER_CHANNEL }}
cache: true
- name: Install dependencies
run: flutter pub get
- name: Create build environment file
run: echo "# Build environment" > .env
- name: Build debug APK
id: build
run: |
echo "## Build" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
if flutter build apk --debug 2>&1 | tee build_output.txt; then
echo "Debug APK build succeeded." >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
APK_PATH="build/app/outputs/flutter-apk/app-debug.apk"
if [ -f "$APK_PATH" ]; then
APK_SIZE=$(du -h "$APK_PATH" | cut -f1)
echo "| Property | Value |" >> "$GITHUB_STEP_SUMMARY"
echo "| --- | --- |" >> "$GITHUB_STEP_SUMMARY"
echo "| APK Size | $APK_SIZE |" >> "$GITHUB_STEP_SUMMARY"
echo "| Build Type | Debug |" >> "$GITHUB_STEP_SUMMARY"
fi
echo "build_status=success" >> "$GITHUB_OUTPUT"
else
echo "Build failed." >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
tail -50 build_output.txt >> "$GITHUB_STEP_SUMMARY"
echo '```' >> "$GITHUB_STEP_SUMMARY"
echo "build_status=failure" >> "$GITHUB_OUTPUT"
exit 1
fi
status:
name: Status
runs-on: ubuntu-latest
needs: [format, analyze, test, build]
if: always()
steps:
- name: Summarize pipeline status
run: |
echo "## CI Summary" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "| Check | Result |" >> "$GITHUB_STEP_SUMMARY"
echo "| --- | --- |" >> "$GITHUB_STEP_SUMMARY"
if [ "${{ needs.format.result }}" = "success" ]; then
echo "| Format | Passed |" >> "$GITHUB_STEP_SUMMARY"
else
echo "| Format | Failed |" >> "$GITHUB_STEP_SUMMARY"
fi
if [ "${{ needs.analyze.result }}" = "success" ]; then
echo "| Analyze | Passed |" >> "$GITHUB_STEP_SUMMARY"
else
echo "| Analyze | Failed |" >> "$GITHUB_STEP_SUMMARY"
fi
if [ "${{ needs.test.result }}" = "success" ]; then
echo "| Test | Passed |" >> "$GITHUB_STEP_SUMMARY"
else
echo "| Test | Failed |" >> "$GITHUB_STEP_SUMMARY"
fi
if [ "${{ needs.build.result }}" = "success" ]; then
echo "| Build | Passed |" >> "$GITHUB_STEP_SUMMARY"
else
echo "| Build | Failed |" >> "$GITHUB_STEP_SUMMARY"
fi
if [ "${{ needs.format.result }}" = "success" ] && \
[ "${{ needs.analyze.result }}" = "success" ] && \
[ "${{ needs.test.result }}" = "success" ] && \
[ "${{ needs.build.result }}" = "success" ]; then
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "All CI checks passed." >> "$GITHUB_STEP_SUMMARY"
else
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "One or more CI checks failed." >> "$GITHUB_STEP_SUMMARY"
exit 1
fi