# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Bazel Test

on:
  push:
    branches:
    - main
  pull_request:
  schedule:
    # Triggered nightly at 8:00 AM UTC to reset the Bazel cache.
    - cron: '0 8 * * *'
  workflow_dispatch:

jobs:
  run_tests:
    name: Run tests
    runs-on: ubuntu-latest
    timeout-minutes: 60
    strategy:
      matrix:
        config: ['default', 'fuzztest']
        compilation_mode: ['fastbuild', 'opt', 'dbg']
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install dependencies
        run: |
          sudo apt-get update && sudo apt-get install -yq \
            clang
      - name: Setup --config=fuzztest for Bazel
        run: |
          bazel run //bazel:setup_configs > fuzztest.bazelrc
      - name: Delete Bazel cache (nightly)
        if: github.event_name == 'schedule'
        continue-on-error: true
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh api \
            --method DELETE \
            -H "Accept: application/vnd.github+json" \
            /repos/${{ github.repository }}/actions/caches?key=bazel-cache-${{ matrix.config }}-${{ matrix.compilation_mode }}
      - name: Mount Bazel cache
        uses: actions/cache@v3
        with:
          path: "~/.cache/bazel"
          key: bazel-cache-${{ matrix.config }}-${{ matrix.compilation_mode }}
      - name: Run all tests with default --config
        if: matrix.config == 'default'
        run: |
          bazel test --build_tests_only --test_output=errors \
            -c ${{ matrix.compilation_mode }} --//rpc_fuzzing:enable_rpc_fuzzing -- //... -//centipede/...
      - name: Run end-to-end tests with --config=fuzztest
        if: matrix.config == 'fuzztest'
        run: |
          bazel test --build_tests_only --test_output=errors \
            -c ${{ matrix.compilation_mode }} --config=fuzztest //e2e_tests:all --//rpc_fuzzing:enable_rpc_fuzzing

