# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you 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: Go Unit Tests

env:
  # alpine:3.13
  ALPINE_VERSION: sha256:08d6ca16c60fe7490c03d10dc339d9fd8ea67c6466dea8d558526b1330a85930

on:
  push:
    paths:
      - .github/actions/go-test/**
      - .github/workflows/go.unit.tests.yaml
      - go.mod
      - go.sum
      - GO_VERSION
      - grove/**.go
      - lib/**.go
      - traffic_monitor/**.go
      - cache-config/t3c-generate/**.go
      - traffic_ops/traffic_ops_golang/**.go
      - traffic_stats/**.go
      - vendor/**.go
      - vendor/modules.txt
  create:
  pull_request:
    paths:
      - .github/actions/go-test/**
      - .github/workflows/go.unit.tests.yaml
      - go.mod
      - go.sum
      - GO_VERSION
      - grove/**.go
      - lib/**.go
      - traffic_monitor/**.go
      - cache-config/t3c-generate/**.go
      - traffic_ops/traffic_ops_golang/**.go
      - traffic_stats/**.go
      - vendor/**.go
      - vendor/modules.txt
    types: [opened, reopened, ready_for_review, synchronize]

jobs:
  test:
    if: github.event.pull_request.draft == false
    runs-on: ubuntu-latest

    steps:
    - name: Checkout
      uses: actions/checkout@master
      with:
        fetch-depth: 1
        path: src/github.com/apache/trafficcontrol
    - name: Cache Alpine Docker image
      uses: actions/cache@v2
      with:
        path: ${{ github.workspace }}/docker-images
        key: docker-images/alpine@${{ env.ALPINE_VERSION }}.tar.gz
    - name: Import cached Alpine Docker image
      run: src/github.com/apache/trafficcontrol/.github/actions/save-alpine-tar/entrypoint.sh load ${{ env.ALPINE_VERSION }}
    - name: Run unit tests
      uses: ./src/github.com/apache/trafficcontrol/.github/actions/go-test
      with:
        dir: ./grove/... ./lib/... ./traffic_monitor/... ./traffic_ops/traffic_ops_golang/... ./cache-config/t3c-generate/... ./traffic_stats/... ./traffic_ops/app/bin/...
      env:
        GOPATH: /github/workspace
    - name: Save Alpine Docker image
      run: src/github.com/apache/trafficcontrol/.github/actions/save-alpine-tar/entrypoint.sh save ${{ env.ALPINE_VERSION }}
