#!/bin/bash # Configuration options that all tests must include set -e cosmos-testd config chain-id cosmostest cosmos-testd config output json cosmos-testd config broadcast-mode block # Test config addresses (Alice & Bob) accounts=$(curl -s http://localhost:1317/cosmos/auth/v1beta1/accounts | jq -M ".accounts") declare -g ALICE=$(echo $accounts | jq -rM '.[] | select(.account_number == "0") | .address') declare -g BOB=$(echo $accounts | jq -rM '.[] | select(.account_number == "1") | .address') function assert_eq { read -r out if [[ $out = $1 ]]; then log_ok echo $2 correctly equals $1 else log_fail echo $2 should equal $1, instead got $out. exit 1 fi } function expect_change { read -r out expected=$1 comp=$2 desc=$3 res=$(echo "$out - $comp" | bc) if [[ $res = $expected ]]; then log_ok echo $desc correctly equals $res else log_fail echo $desc should equal $expected, instead got $res exit 1 fi } # Get balance of an account. function get_balance { local addr=$1 local denom=$2 cosmos-testd q bank balances $addr \ | jq -rM ".balances[] | select(.denom == \"$denom\") | .amount" } # Get current block time from chain. function get_block_time { return \ $( curl -s http://0.0.0.0:1317/cosmos/base/tendermint/v1beta1/blocks/latest \ | jq -M ".blocks.header.height | tonumber" ) } function get_code { read -r out return $out | grep code: | awk -F ': ' '{print $2}' } function get_key { read -r out local filter=$2 echo $out | jq -M $filter } function get_last_auction_index { res=$(cosmos-testd q cosmostest show-next-auction | jq -M ".NextAuction.auctionId | tonumber") echo "$res-1" | bc } function get_next_auction_index { cosmos-testd q cosmostest show-next-auction | jq -M ".NextAuction.auctionId | tonumber" } function now { local op=$1 local amount=$2 if [[ op = "" ]]; then date +%s else echo "$(date +%s) $op $amount" | bc fi } function expect_success { read -r out local msg=${1:-Expect transaction to succeed} local res=$(echo $out | jq -M ".code") local raw_log=$(echo $out | jq -M ".raw_log") # globally write response key # response=$(echo $out | jq -M ".") if [[ $res = 0 ]]; then log_ok echo $msg else log_fail echo $msg echo $raw_log exit 1 fi } function expect_fail { read -r out local msg=${1:-Expect transaction to revert} local res=$(echo $out | jq -M ".code") if [[ $res = 0 ]]; then log_fail echo $msg exit 1 else log_ok echo $msg fi } function log_info { printf "[ INFO ] $1\n" } function log_test { printf "$(fmt_cyan '[ TEST ]') $1\n" } function log_ok { printf "$(fmt_green '[ OK ]') " } function log_fail { printf "$(fmt_red '[ FAIL ]') " } function fmt_red { printf "\e[31m$1\e[0m" } function fmt_green { printf "\e[32m$1\e[0m" } function fmt_cyan { printf "\e[96m$1\e[0m" }