name: Dart CI
on:
  workflow_dispatch:
  push:
    branches:
      - "master"
      - "test_consume_**"
  pull_request:
    branches:
      - "**"
concurrency:
  group: opentelemetry-coverage-${{ github.ref }}-1
  cancel-in-progress: true
permissions:
  contents: read
  issues: write
  pull-requests: write

jobs:
  test-dartv2:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: true
      - uses: dart-lang/setup-dart@v1
        with:
          sdk: 2.19.6
      - run: sudo apt install -y protobuf-compiler
      - run: make init format analyze test
      - name: Generate Coverage
        run: dart test --coverage=./coverage
      - name: Activate Coverage Package
        run: dart pub global activate coverage
      - name: Format Coverage
        run: dart pub global run coverage:format_coverage --packages=.dart_tool/package_config.json --report-on=lib --lcov -o ./coverage/lcov.info -i ./coverage
      - name: Activate RemoveFromCoverage Package
        run: dart pub global activate remove_from_coverage
      - name: Ignore Files For Coverage
        run: dart pub global run remove_from_coverage:remove_from_coverage -f coverage/lcov.info -r 'lib\/src\/sdk\/proto\/opentelemetry\/proto\/.+'
      - name: Package Artifacts
        run: ./package.sh

  test-dartv3:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: true
      - uses: dart-lang/setup-dart@v1
        with:
          sdk: 3.2.0
      - run: sudo apt install -y protobuf-compiler
      - run: make init format analyze test