# 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: 30
    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 }} //...
      - 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

