#!/bin/bash
#
# Copyright 2023 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.

set -o errexit
set -o pipefail

usage() {
  cat <<'EOF'
Usage: ./run_unit_tests.sh
run_unit_tests.sh runs all unit tests under src/pkg and src/cmd in the cos/tools
repository.

EOF
}

setup_test() {
  # build changelogctl binary
  go build -o src/cmd/changelogctl/changelogctl src/cmd/changelogctl/main.go

  apt-get update && apt-get install -y sudo fdisk sysstat mtools dosfstools

  # clean up to save disk space
  rm -rf "$(readlink -f bazel-bin)"
  rm -rf "$(readlink -f bazel-out)"
  rm -rf "$(readlink -f bazel-testlogs)"
  rm -rf "$(readlink -f bazel-tools)"

  rm -rf bazel-*
}

main() {
  cd /workspace
  setup_test

  # Run tests from each directory where go test files are present.
  test_dirs=$(find /workspace/src -name "*_test.go" -printf "%h\n" | sort | uniq)
  local exit_code=0
  for test_dir in ${test_dirs}; do
    cd "${test_dir}"
    # If the directory contains BUILD.bazel, the tests have already
    # run using bazel in the previous step.
    if [ ! -f "BUILD.bazel" ] || [[ ${test_dir} == *"pkg/utils"* ]]; then
      if [[ ${test_dir} != *"profilertest"* ]]; then
        echo "Running tests for ${test_dir}"
        # TestCheckDrivers is outdated, the older COS milestones are not supported
        go test -v -skip "(TestFindCL|TestCheckDrivers)"
        if [ $? -ne 0 ]; then
          exit_code=1
        fi
      fi
    fi
  done
  return "${exit_code}"
}

main
