1- # approvals.bash v0.3.2
1+ # approvals.bash v0.3.3
22#
33# Interactive approval testing for Bash.
44# https://github.com/DannyBen/approvals.bash
55approve () {
66 local expected approval approval_file actual cmd
77 approvals_dir=${APPROVALS_DIR:= approvals}
8-
8+
99 cmd=$1
10- actual= $( eval " $cmd " 2>&1 )
11- last_exit_code=$?
10+ last_exit_code=0
11+ actual= $( eval " $cmd " 2>&1 ) || last_exit_code=$?
1212 approval=$( printf " %b" " $cmd " | tr -s -c " [:alnum:]" _)
1313 approval_file=" $approvals_dir /${2:- " $approval " } "
1414
@@ -29,28 +29,29 @@ approve() {
2929 pass " $cmd "
3030 else
3131 echo " --- [$( blue " diff: $cmd " ) ] ---"
32- $diff_cmd <( printf " %b" " $expected \n" ) <( printf " %b" " $actual \n" ) | tail -n +4
32+ $diff_cmd <( printf " %b" " $expected \n" ) <( printf " %b" " $actual \n" ) | tail -n +4
3333 echo " --- [$( blue " diff: $cmd " ) ] ---"
3434 user_approval " $cmd " " $actual " " $approval_file "
3535 fi
3636}
3737
3838describe () {
39- echo " $* "
39+ echo
40+ blue " = $* "
4041}
4142
4243context () {
4344 echo
44- echo " $* "
45+ magenta " = $* "
4546}
4647
4748fail () {
48- red " FAILED $* "
49+ red " FAILED: $* "
4950 exit 1
5051}
5152
5253pass () {
53- green " approved: $* "
54+ green " approved: $* "
5455 return 0
5556}
5657
@@ -79,12 +80,12 @@ user_approval() {
7980 fail " $cmd "
8081 fi
8182
82- echo
83+ echo
8384 printf " [A]pprove? \n"
8485 response=$( bash -c " read -n 1 key; echo \$ key" )
8586 printf " \r"
8687 if [[ $response =~ [Aa] ]]; then
87- printf " %b\n" " $actual " > " $approval_file "
88+ printf " %b\n" " $actual " > " $approval_file "
8889 pass " $cmd "
8990 else
9091 fail " $cmd "
@@ -109,7 +110,7 @@ set -e
109110trap ' onexit' EXIT
110111trap ' onerror' ERR
111112
112- if diff --help | grep -- --color > /dev/null 2>&1 ; then
113+ if diff --help | grep -- --color > /dev/null 2>&1 ; then
113114 diff_cmd=" diff --unified --color=always"
114115else
115116 diff_cmd=" diff --unified"
0 commit comments