| #!/bin/bash | |
| # Copyright (c) The OpenTofu Authors | |
| # SPDX-License-Identifier: MPL-2.0 | |
| # Copyright (c) 2023 HashiCorp, Inc. | |
| # SPDX-License-Identifier: MPL-2.0 | |
| tofu version 2>/dev/null >/dev/null | |
| if [ $? -ne 0 ]; then | |
| set -e | |
| TOFU_VERSION="1.6.0-alpha2" | |
| OS="$(uname | tr '[:upper:]' '[:lower:]')" | |
| ARCH="$(uname -m | sed -e 's/aarch64/arm64/' -e 's/x86_64/amd64/')" | |
| TEMPDIR="$(mktemp -d)" | |
| pushd "${TEMPDIR}" >/dev/null | |
| wget "https://github.com/opentofu/opentofu/releases/download/v${TOFU_VERSION}/tofu_${TOFU_VERSION}_${OS}_${ARCH}.zip" | |
| unzip "tofu_${TOFU_VERSION}_${OS}_${ARCH}.zip" | |
| sudo mv tofu /usr/local/bin/tofu | |
| popd >/dev/null | |
| rm -rf "${TEMPDIR}" | |
| set +e | |
| fi | |
| ERROR=0 | |
| for testcase in $(ls -d */); do | |
| testcase=$(echo -n "${testcase}" | sed -e 's$/$$') | |
| ( | |
| cd $testcase | |
| tofu init | |
| RESULT=$? | |
| if [ "$RESULT" -ne 0 ]; then | |
| exit "$RESULT" | |
| fi | |
| tofu test | |
| exit $? | |
| ) 2>/tmp/${testcase}.log >/tmp/${testcase}.log | |
| RESULT=$? | |
| echo -n "::group::" | |
| if [ "${RESULT}" -ne 0 ]; then | |
| echo -e "\033[0;31m${testcase} (FAIL)\033[0m" | |
| ERROR="${RESULT}" | |
| else | |
| echo -e "\033[0;32m${testcase} (PASS)\033[0m" | |
| fi | |
| cat /tmp/${testcase}.log | |
| echo "::endgroup::" | |
| done | |
| exit "${ERROR}" |