solana/ci/downstream-projects/func-spl.sh

48 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
spl() {
(
# Mind the order!
PROGRAMS=(
instruction-padding/program
token/program
token/program-2022
token/program-2022-test
associated-token-account/program
token-upgrade/program
feature-proposal/program
governance/addin-mock/program
governance/program
memo/program
name-service/program
stake-pool/program
stake-pool/single-pool
)
set -x
rm -rf spl
git clone https://github.com/solana-labs/solana-program-library.git spl
# copy toolchain file to use solana's rust version
cp "$SOLANA_DIR"/rust-toolchain.toml spl/
cd spl || exit 1
project_used_solana_version=$(sed -nE 's/solana-sdk = \"[>=<~]*(.*)\"/\1/p' <"token/program/Cargo.toml")
echo "used solana version: $project_used_solana_version"
if semverGT "$project_used_solana_version" "$SOLANA_VER"; then
echo "skip"
return
fi
./patch.crates-io.sh "$SOLANA_DIR"
for program in "${PROGRAMS[@]}"; do
$CARGO_TEST_SBF --manifest-path "$program"/Cargo.toml
done
# TODO better: `build.rs` for spl-token-cli doesn't seem to properly build
# the required programs to run the tests, so instead we run the tests
# after we know programs have been built
cargo build
cargo test
)
}