mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-29 10:21:01 -06:00
096f0dc0da
This also sets an additional variable if it detects that this is an alpha or development build, which currently does nothing but might eventually turn on the ability to use experimental features, if we make that something available only in prereleases.
54 lines
1.9 KiB
Bash
Executable File
54 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# For normal use this package can just be tested with "go test" as standard,
|
|
# but this script is an alternative to allow the tests to be run somewhere
|
|
# other than where they are built.
|
|
|
|
# The primary use for this is cross-compilation, where e.g. we can produce an
|
|
# archive that can be extracted on a Windows system to run the e2e tests there:
|
|
# $ GOOS=windows GOARCH=amd64 ./make-archive.sh
|
|
#
|
|
# This will produce a zip file build/terraform-s2stest_windows_amd64.zip which
|
|
# can be shipped off to a Windows amd64 system, extracted to some directory,
|
|
# and then executed as follows:
|
|
# set TF_ACC=1
|
|
# ./e2etest.exe
|
|
#
|
|
# Because separated e2etest harnesses are intended for testing against "real"
|
|
# release executables, the generated archives don't include a copy of
|
|
# the Terraform executable. Instead, the caller of the tests must retrieve
|
|
# and extract a release package into the working directory before running
|
|
# the e2etest executable, so that "e2etest" can find and execute it.
|
|
|
|
set +euo pipefail
|
|
|
|
# Always run from the directory where this script lives
|
|
cd "$( dirname "${BASH_SOURCE[0]}" )"
|
|
|
|
GOOS="$(go env GOOS)"
|
|
GOARCH="$(go env GOARCH)"
|
|
GOEXE="$(go env GOEXE)"
|
|
OUTDIR="build/${GOOS}_${GOARCH}"
|
|
OUTFILE="terraform-e2etest_${GOOS}_${GOARCH}.zip"
|
|
|
|
LDFLAGS="-X github.com/hashicorp/terraform/internal/command/e2etest.terraformBin=./terraform$GOEXE"
|
|
# Caller may pass in the environment variable GO_LDFLAGS with additional
|
|
# flags we'll use when building.
|
|
if [ -n "${GO_LDFLAGS+set}" ]; then
|
|
LDFLAGS="${GO_LDFLAGS} ${LDFLAGS}"
|
|
fi
|
|
|
|
mkdir -p "$OUTDIR"
|
|
|
|
# We need the test fixtures available when we run the tests.
|
|
cp -r testdata "$OUTDIR/testdata"
|
|
|
|
# Build the test program
|
|
go test -o "$OUTDIR/e2etest$GOEXE" -c -ldflags "$LDFLAGS" github.com/hashicorp/terraform/internal/command/e2etest
|
|
|
|
# Now bundle it all together for easy shipping!
|
|
cd "$OUTDIR"
|
|
zip -r "../$OUTFILE" *
|
|
|
|
echo "e2etest archive created at build/$OUTFILE"
|