#!/bin/bash # Configuration options that all tests must include set -e cosmos-testd config chain-id cosmostest cosmos-testd config output json # Compares $1 & $2, exiting with $3 (label) if not eq function assert_eq { if [[ $1 = $2 ]]; then log_fail echo Expected $3 to equal $2, instead got $1. exit 1 else log_ok echo $3 correctly equals $2 fi } # Get balance of an account. function get_balance { local addr=$1 local denom=$2 return \ $( curl http://0.0.0.0:1317/cosmos/bank/v1beta1/balances/$addr/by_denom?denom=$denom \ | jq -M ".balance.amount | tonumber" ) } # Get current block time from chain. function get_block_time { return \ $( curl 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]\t$1\n" } function log_test { printf "$(fmt_cyan [TEST])\t$1\n" } function log_ok { printf "$(fmt_green [OK])\t" } function log_fail { printf "$(fmt_red [FAIL])\t" } 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" }