1
- # approvals.bash v0.3.2
1
+ # approvals.bash v0.3.3
2
2
#
3
3
# Interactive approval testing for Bash.
4
4
# https://github.com/DannyBen/approvals.bash
5
5
approve () {
6
6
local expected approval approval_file actual cmd
7
7
approvals_dir=${APPROVALS_DIR:= approvals}
8
-
8
+
9
9
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=$?
12
12
approval=$( printf " %b" " $cmd " | tr -s -c " [:alnum:]" _)
13
13
approval_file=" $approvals_dir /${2:- " $approval " } "
14
14
@@ -29,28 +29,29 @@ approve() {
29
29
pass " $cmd "
30
30
else
31
31
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
33
33
echo " --- [$( blue " diff: $cmd " ) ] ---"
34
34
user_approval " $cmd " " $actual " " $approval_file "
35
35
fi
36
36
}
37
37
38
38
describe () {
39
- echo " $* "
39
+ echo
40
+ blue " = $* "
40
41
}
41
42
42
43
context () {
43
44
echo
44
- echo " $* "
45
+ magenta " = $* "
45
46
}
46
47
47
48
fail () {
48
- red " FAILED $* "
49
+ red " FAILED: $* "
49
50
exit 1
50
51
}
51
52
52
53
pass () {
53
- green " approved: $* "
54
+ green " approved: $* "
54
55
return 0
55
56
}
56
57
@@ -79,12 +80,12 @@ user_approval() {
79
80
fail " $cmd "
80
81
fi
81
82
82
- echo
83
+ echo
83
84
printf " [A]pprove? \n"
84
85
response=$( bash -c " read -n 1 key; echo \$ key" )
85
86
printf " \r"
86
87
if [[ $response =~ [Aa] ]]; then
87
- printf " %b\n" " $actual " > " $approval_file "
88
+ printf " %b\n" " $actual " > " $approval_file "
88
89
pass " $cmd "
89
90
else
90
91
fail " $cmd "
@@ -109,7 +110,7 @@ set -e
109
110
trap ' onexit' EXIT
110
111
trap ' onerror' ERR
111
112
112
- if diff --help | grep -- --color > /dev/null 2>&1 ; then
113
+ if diff --help | grep -- --color > /dev/null 2>&1 ; then
113
114
diff_cmd=" diff --unified --color=always"
114
115
else
115
116
diff_cmd=" diff --unified"
0 commit comments