#!/bin/bash
# Copyright 2018 The Tulsi Authors. All rights reserved.
#
# 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 -eu

readonly WORKSPACE=$(bazel info workspace)
readonly TEST_PATH="src/TulsiGeneratorIntegrationTests"
readonly GOLDENS_DIR="${WORKSPACE}/${TEST_PATH}/Resources/GoldenProjects"
readonly TESTLOGS_DIR=$(bazel info bazel-testlogs)
readonly OUTPUT_DIR="${TESTLOGS_DIR}/${TEST_PATH}"

bazel test //src/TulsiGeneratorIntegrationTests:EndToEndGenerationTests --nocheck_visibility && :

bazel_exit_code=$?

if [[ $bazel_exit_code -eq 3 ]]; then
  TEMP_DIR=$(mktemp -d)
  unzip -qq "${OUTPUT_DIR}/EndToEndGenerationTests/test.outputs/outputs.zip" -d "${TEMP_DIR}"
  rm -rf "${GOLDENS_DIR}"/*
  cp -R "${TEMP_DIR}/tulsi_e2e_output"/* "${GOLDENS_DIR}"
  rm -rf "${TEMP_DIR}"
  echo "Updated goldens for failed tests."
elif [[ $bazel_exit_code -eq 0 ]]; then
  echo "Tests pass, no update necessary."
else
  exit $bazel_exit_code
fi
