name: CEL-Java CI
run-name: Workflow started by ${{ github.actor }}.
on:
  push:
    branches:
      - 'main'
  pull_request:
    branches:
      - 'main'

# Cancel previous workflows on the PR when there are multiple fast commits.
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency
concurrency:
    group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
    cancel-in-progress: true

jobs:
  Bazel-Tests:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    steps:
      - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
      - run: echo "🐧 Job is running on a ${{ runner.os }} server!"
      - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
      - name: Check out repository code
        uses: actions/checkout@v4
      - name: Setup Bazel
        uses: bazel-contrib/setup-bazel@0.9.1
        with:
            # Avoid downloading Bazel every time.
            bazelisk-cache: true
            # Store build cache per workflow.
            disk-cache: ${{ github.workflow }}
            # Share repository cache between workflows.
            repository-cache: true
      - name: Bazel Output Version
        run: bazelisk --version
      - name: Bazel Test
        # Exclude codelab exercises as they are intentionally made to fail
        # Exclude conformance tests for time being until TextFormat.Parser fix is in upstream
        run: bazelisk test ... --deleted_packages=//codelab/src/test/codelab,//conformance/src/test/java/dev/cel/conformance --test_output=errors
      - name: Unwanted Dependencies
        run: .github/workflows/unwanted_deps.sh
      - run: echo "🍏 This job's status is ${{ job.status }}."