11#! /usr/bin/env bash
22set -euxo pipefail
33
4+ TEST_EXIT_CODE=0
5+ CURRENT_BATS_CASE=bootstrap
6+
7+ function on_error {
8+ local line_no=$1
9+ local command=$2
10+ local exit_code=$3
11+ TEST_EXIT_CODE=$exit_code
12+ echo " cli_test.sh failed at line ${line_no} , exit code ${exit_code} , case ${CURRENT_BATS_CASE} : ${command} "
13+ }
14+ trap ' on_error $LINENO "$BASH_COMMAND" $?' ERR
15+
416CKB_BATS_TESTBED=/tmp/ckb_bats_testbed
517mkdir -p ${CKB_BATS_TESTBED}
618
719function cleanup {
20+ if [ " ${TEST_EXIT_CODE:- 0} " -ne 0 ]; then
21+ echo " cli-test failed while running bats file: ${CURRENT_BATS_CASE} "
22+ if [ -n " ${TMP_DIR:- } " ] && [ -d " ${TMP_DIR} " ]; then
23+ echo " Dumping *.log from ${TMP_DIR} "
24+ find " ${TMP_DIR} " -maxdepth 1 -type f -name " *.log" -print -exec tail -n 200 {} \;
25+ fi
26+ fi
827 echo " Removing ${CKB_BATS_TESTBED} "
928 rm -rf ${CKB_BATS_TESTBED}
1029}
@@ -15,14 +34,19 @@ git_clone_repo_with_retry() {
1534 local dir_name=$3
1635 local retry_count=5
1736 local retry_delay=5
37+ local cloned=0
1838
1939 for i in $( seq 1 $retry_count ) ; do
20- git clone --depth 1 --branch " $branch " " $repo_address " " $dir_name " && break
40+ rm -rf " $dir_name "
41+ if git clone --depth 1 --branch " $branch " " $repo_address " " $dir_name " ; then
42+ cloned=1
43+ break
44+ fi
2145 echo " Attempt $i failed. Retrying in $retry_delay seconds..."
2246 sleep $retry_delay
2347 done
2448
25- if [ $i -eq $retry_count ]; then
49+ if [ " $cloned " -ne 1 ]; then
2650 echo " Failed to clone repository after $retry_count attempts."
2751 exit 1
2852 fi
@@ -34,6 +58,7 @@ cp target/prod/ckb ${CKB_BATS_TESTBED}
3458cp ckb-bin/src/tests/bats_tests/* .bats ${CKB_BATS_TESTBED}
3559cp -r ckb-bin/src/tests/bats_tests/later_bats_job ${CKB_BATS_TESTBED}
3660cp ckb-bin/src/tests/bats_tests/* .sh ${CKB_BATS_TESTBED}
61+ cp resource/specs/mainnet.toml ${CKB_BATS_TESTBED}
3762
3863if [ ! -d " /tmp/ckb_bats_assets/" ]; then
3964 git_clone_repo_with_retry " main" " https://github.com/nervosnetwork/ckb-assets" " /tmp/ckb_bats_assets"
@@ -68,15 +93,19 @@ export TMP_DIR=${CKB_BATS_TESTBED}/tmp_dir
6893mkdir ${TMP_DIR}
6994
7095for bats_cases in * .bats; do
71- bats --verbose-run --print-output-on-failure --show-output-of-passing-tests " $bats_cases "
72- ret=$?
73- if [ " $ret " -ne " 0" ]; then
74- exit " $ret "
96+ CURRENT_BATS_CASE=" ${bats_cases} "
97+ echo " Running bats file: ${bats_cases} "
98+ if ! bats --verbose-run --print-output-on-failure --show-output-of-passing-tests " $bats_cases " ; then
99+ echo " Bats file failed (first attempt): ${bats_cases} "
100+ echo " Retrying once: ${bats_cases} "
101+ bats --verbose-run --print-output-on-failure --show-output-of-passing-tests " $bats_cases "
75102 fi
76103done
77104
78- bats --verbose-run --print-output-on-failure --show-output-of-passing-tests ./later_bats_job/change_epoch.bats
79- ret=$?
80- if [ " $ret " -ne " 0" ]; then
81- exit " $ret "
105+ CURRENT_BATS_CASE=" ./later_bats_job/change_epoch.bats"
106+ echo " Running bats file: ${CURRENT_BATS_CASE} "
107+ if ! bats --verbose-run --print-output-on-failure --show-output-of-passing-tests " ${CURRENT_BATS_CASE} " ; then
108+ echo " Bats file failed (first attempt): ./later_bats_job/change_epoch.bats"
109+ echo " Retrying once: ./later_bats_job/change_epoch.bats"
110+ bats --verbose-run --print-output-on-failure --show-output-of-passing-tests " ${CURRENT_BATS_CASE} "
82111fi
0 commit comments