#!/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 { addr=$1 denom=$2 return \ $( curl http://0.0.0.0:1317/cosmos/bank/v1beta1/balances/$addr/by_denom?denom=$denom \ | jq -M ".balance.amount" ) } # 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" ) } function get_code { read out return $out | grep code: | awk -F ': ' '{print $2}' } function get_key { local out=$1 local filter=$2 echo $out | jq -M $filter } 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 out local msg=${1:-Expect transaction to succeed} # if we want to pipe: # read out # local res=$(echo $out | grep code: | awk -F ': ' '{print $2}') # local raw_log=$(echo $out | awk -F ': ' '{print $2}') local res=$(echo $out | jq -M ".code") local raw_log=$(echo $out | jq -M ".raw_log") if [[ $res = 0 ]]; then log_ok echo $msg else log_fail echo $msg echo $raw_log exit 1 fi } function expect_fail { read out local msg=${1:-Expect transaction to revert} # local res=$(echo $out | grep code: | awk -F ': ' '{print $2}') 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_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" }