2021-02-15 02:16:59 -08:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
#
|
|
|
|
# A script to run the example as an integration test. It starts up a localnet
|
|
|
|
# and executes the current directory's rust binary.
|
|
|
|
#
|
|
|
|
# Usage:
|
|
|
|
#
|
|
|
|
# ./run.sh
|
|
|
|
#
|
|
|
|
# Run this script from within the `example/` directory in which it is located.
|
|
|
|
# The anchor cli must be installed.
|
|
|
|
#
|
|
|
|
# cargo install --git https://github.com/project-serum/anchor anchor-cli --locked
|
|
|
|
#
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
set -euox pipefail
|
|
|
|
|
|
|
|
main() {
|
|
|
|
#
|
|
|
|
# Bootup validator.
|
|
|
|
#
|
|
|
|
solana-test-validator > test-validator.log &
|
|
|
|
sleep 5
|
|
|
|
|
|
|
|
#
|
|
|
|
# Deploy programs.
|
|
|
|
#
|
|
|
|
pushd ../../examples/composite/
|
2021-03-09 07:07:22 -08:00
|
|
|
anchor build
|
2021-02-15 02:16:59 -08:00
|
|
|
anchor deploy
|
|
|
|
local composite_pid=$(cat target/idl/composite.json | jq -r .metadata.address)
|
|
|
|
popd
|
|
|
|
pushd ../../examples/tutorial/basic-2/
|
2021-03-09 07:07:22 -08:00
|
|
|
anchor build
|
2021-02-15 02:16:59 -08:00
|
|
|
anchor deploy
|
|
|
|
local basic_2_pid=$(cat target/idl/basic_2.json | jq -r .metadata.address)
|
|
|
|
popd
|
2021-03-24 20:19:29 -07:00
|
|
|
pushd ../../examples/events
|
|
|
|
anchor build
|
|
|
|
anchor deploy
|
|
|
|
local events_pid=$(cat target/idl/events.json | jq -r .metadata.address)
|
|
|
|
popd
|
2021-02-15 02:16:59 -08:00
|
|
|
#
|
|
|
|
# Run Test.
|
|
|
|
#
|
2021-03-24 20:19:29 -07:00
|
|
|
cargo run -- --composite-pid $composite_pid --basic-2-pid $basic_2_pid --events-pid $events_pid
|
2021-02-15 02:16:59 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
cleanup() {
|
|
|
|
pkill -P $$ || true
|
|
|
|
wait || true
|
|
|
|
}
|
|
|
|
|
|
|
|
trap_add() {
|
|
|
|
trap_add_cmd=$1; shift || fatal "${FUNCNAME} usage error"
|
|
|
|
for trap_add_name in "$@"; do
|
|
|
|
trap -- "$(
|
|
|
|
extract_trap_cmd() { printf '%s\n' "${3:-}"; }
|
|
|
|
eval "extract_trap_cmd $(trap -p "${trap_add_name}")"
|
|
|
|
printf '%s\n' "${trap_add_cmd}"
|
|
|
|
)" "${trap_add_name}" \
|
|
|
|
|| fatal "unable to add to trap ${trap_add_name}"
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
declare -f -t trap_add
|
|
|
|
trap_add 'cleanup' EXIT
|
|
|
|
main
|