@@ -33,19 +33,31 @@ source "$BASHUNIT_ROOT_DIR/src/main.sh"
3333_ASSERT_FN=" "
3434_FILTER=" "
3535_RAW_ARGS=()
36+ _ASSERT_FNS=()
37+ _ASSERT_ARGS_LIST=()
38+ _CURRENT_ASSERT_ARGS=()
39+ _ASSERT_COUNT=0
40+ _CURRENT_ASSERT_FN=" "
3641_ARGS=()
3742_BENCH_MODE=false
3843
3944check_os::init
4045clock::init
4146
4247# Argument parsing
43- while [[ $# -gt 0 ]]; do
44- case " $1 " in
45- -a|--assert)
46- _ASSERT_FN=" $2 "
47- shift
48- ;;
48+ while [[ $# -gt 0 ]]; do
49+ case " $1 " in
50+ -a|--assert)
51+ if [[ -n " $_CURRENT_ASSERT_FN " ]]; then
52+ _ASSERT_FNS+=(" $_CURRENT_ASSERT_FN " )
53+ joined=" $( printf ' %s\n' " ${_CURRENT_ASSERT_ARGS[@]} " ) "
54+ _ASSERT_ARGS_LIST+=(" $joined " )
55+ _ASSERT_COUNT=$(( _ASSERT_COUNT + 1 ))
56+ _CURRENT_ASSERT_ARGS=()
57+ fi
58+ _CURRENT_ASSERT_FN=" $2 "
59+ shift
60+ ;;
4961 -f|--filter)
5062 _FILTER=" $2 "
5163 shift
@@ -106,11 +118,20 @@ while [[ $# -gt 0 ]]; do
106118 trap ' ' EXIT && exit 0
107119 ;;
108120 * )
109- _RAW_ARGS+=(" $1 " )
121+ if [[ -n " $_CURRENT_ASSERT_FN " ]]; then
122+ _CURRENT_ASSERT_ARGS+=(" $1 " )
123+ else
124+ _RAW_ARGS+=(" $1 " )
125+ fi
110126 ;;
111127 esac
112128 shift
113129done
130+ if [[ -n " $_CURRENT_ASSERT_FN " ]]; then
131+ _ASSERT_FNS+=(" $_CURRENT_ASSERT_FN " )
132+ joined=" $( printf ' %s\n' " ${_CURRENT_ASSERT_ARGS[@]} " ) "
133+ _ASSERT_ARGS_LIST+=(" $joined " )
134+ fi
114135
115136# Expand positional arguments after all options have been processed
116137if [[ ${# _RAW_ARGS[@]} -gt 0 ]]; then
@@ -132,8 +153,16 @@ set +eu
132153# ################
133154# Main execution
134155# ################
135- if [[ -n " $_ASSERT_FN " ]]; then
136- main::exec_assert " $_ASSERT_FN " " ${_ARGS[@]} "
156+ if [[ ${# _ASSERT_FNS[@]} -gt 0 ]]; then
157+ if [[ ${# _ASSERT_FNS[@]} -eq 1 ]]; then
158+ args=()
159+ while IFS= read -r line; do
160+ args+=(" $line " )
161+ done <<< " ${_ASSERT_ARGS_LIST[0]}"
162+ main::exec_assert " ${_ASSERT_FNS[0]} " " ${args[@]} "
163+ else
164+ main::exec_assert_chain
165+ fi
137166elif [[ " $_BENCH_MODE " == true ]]; then
138167 main::exec_benchmarks " $_FILTER " " ${_ARGS[@]} "
139168else
0 commit comments