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

