11'\"  t
22.\"      Title: bash_unit
33.\"     Author: [see the "AUTHOR(S)" section]
4- .\"  Generator: Asciidoctor 2.0.18 
5- .\"       Date: 2023-03-03 
4+ .\"  Generator: Asciidoctor 2.0.21 
5+ .\"       Date: 2024-02-22 
66.\"     Manual: \ \&
77.\"     Source: \ \&
88.\"   Language: English
99.\" 
10- .TH  "BASH_UNIT" "1" "2023-03-03 " "\  \& " "\  \& " 
10+ .TH  "BASH_UNIT" "1" "2024-02-22 " "\  \& " "\  \& " 
1111.ie  \n( .g ds  Aq  \(aq   
1212.el        .ds  Aq  ' 
1313.ss  \n[ .ss ]0 
3131bash_unit \-  bash unit testing enterprise edition framework for professionals!
3232.SH  "SYNOPSIS" 
3333.sp 
34- \fB bash_unit \fP \- f tap] [\- p <pattern>] [\- r] [test_file]
34+ \fB bash_unit \fP \- f tap] [\- p <pattern>] [\- s <pattern>] [ \- r] [test_file]
3535.SH  "DESCRIPTION" 
3636.sp 
3737\fB bash_unit \fP \fB test \fP 
@@ -55,6 +55,15 @@ You can specify several patterns by repeating this option
5555for each pattern.
5656.RE 
5757.sp 
58+ \fB \- s \fP \fI pattern \fP 
59+ .RS  4 
60+ skip tests which name matches the given pattern.
61+ You can specify several patterns by repeating this option
62+ for each pattern.
63+ Tests will appear in \fB bash_unit \fP \fI skipped \fP 
64+ (see also \fI skip_if \fP 
65+ .RE 
66+ .sp 
5867\fB \- r \fP 
5968.RS  4 
6069executes test cases in random order.
@@ -68,6 +77,58 @@ command line).
6877specify an alternative output format.
6978The only supported value is \fB tap \fP 
7079.RE 
80+ .SS  "\c  .URL "https://pre\- commit.com" "pre\- commit" hook" 
81+ .sp 
82+ You can run \f(CR bash_unit \fP \c 
83+ .URL  " https://pre\- commit.com"   " pre\- commit" "" 
84+ hook.
85+ .sp 
86+ Add the following to your \c 
87+ .URL  " https://pre\- commit.com"   " pre\- commit" "" 
88+ configuration. By default it will run scripts that are identified as shell scripts that match the path \f(CR ^tests/(.*/)?test_.* \(rs  .sh$ \fP 
89+ .sp 
90+ .if  n  .RS  4 
91+ .nf 
92+ .fam  C 
93+ repos:
94+   \-  repo: https://github.com/pgrange/bash_unit
95+     rev: v1.7.0
96+     hooks:
97+       \-  id: bash\- unit
98+ .fam 
99+ .fi 
100+ .if  n  .RE 
101+ .SH  "RUNNING \f(CR bash_unit \fP  
102+ .sp 
103+ In some cases you want to run \f(CR bash_unit \fP 
104+ .sp 
105+ One example is this project’s \f(CR test_doc.sh \fP 
106+ .sp 
107+ One method to define a \f(CR BASH_UNIT \fP 
108+ .sp 
109+ .if  n  .RS  4 
110+ .nf 
111+ .fam  C 
112+ # Function to recursively search upwards for file
113+ _find_file() {
114+     local dir="$1"
115+     local file="$2"
116+     while [ "${dir}" != "/" ]; do
117+         if [ \- f "${dir}/${file}" ]; then
118+             echo "${dir}/${file}"
119+             return 0
120+         fi
121+         dir=$(dirname "${dir}")
122+     done
123+     return 1
124+ }
125+ 
126+ B_U=$(_find_file "$(dirname "$(realpath "$0")")" bash_unit)
127+ # shellcheck disable=2089
128+ BASH_UNIT="eval FORCE_COLOR=false \(rs  "$B_U\(rs  ""
129+ .fam 
130+ .fi 
131+ .if  n  .RE 
71132.SH  "HOW TO RUN TESTS" 
72133.sp 
73134To run tests, simply call \fB bash_unit \fP \fB bash_unit \fP \fB bash_unit \fP 
@@ -161,6 +222,47 @@ Overall result: SUCCESS
161222.fi 
162223.if  n  .RE 
163224.sp 
225+ You can combine the \fI \- p \fP \fI \- s \fP 
226+ as parameter and mark as skipped any test function which matches this pattern.
227+ .sp 
228+ .if  n  .RS  4 
229+ .nf 
230+ .fam  C 
231+ \& ./bash_unit \- p fail_fails \- p assert \- s no \- s status tests/test_core.sh
232+ .fam 
233+ .fi 
234+ .if  n  .RE 
235+ .sp 
236+ .if  n  .RS  4 
237+ .nf 
238+ .fam  C 
239+ Running tests in tests/test_core.sh
240+         Running test_assert_equals_fails_when_not_equal ... SKIPPED
241+         Running test_assert_matches_fails_when_not_matching ... SKIPPED
242+         Running test_assert_no_diff_fails_when_diff ... SKIPPED
243+         Running test_assert_no_diff_succeeds_when_no_diff ... SKIPPED
244+         Running test_assert_not_equals_fails_when_equal ... SKIPPED
245+         Running test_assert_not_equals_succeeds_when_not_equal ... SKIPPED
246+         Running test_assert_not_matches_fails_when_matching ... SKIPPED
247+         Running test_assert_not_matches_succeed_when_not_matching ... SKIPPED
248+         Running test_assert_status_code_fails ... SKIPPED
249+         Running test_assert_status_code_succeeds ... SKIPPED
250+         Running test_assert_equals_succeed_when_equal ... SUCCESS
251+         Running test_assert_fails ... SUCCESS
252+         Running test_assert_fails_fails ... SUCCESS
253+         Running test_assert_fails_succeeds ... SUCCESS
254+         Running test_assert_matches_succeed_when_matching ... SUCCESS
255+         Running test_assert_shows_stderr_on_failure ... SUCCESS
256+         Running test_assert_shows_stdout_on_failure ... SUCCESS
257+         Running test_assert_succeeds ... SUCCESS
258+         Running test_assert_within_delta_fails ... SUCCESS
259+         Running test_assert_within_delta_succeeds ... SUCCESS
260+         Running test_fail_fails ... SUCCESS
261+ Overall result: SUCCESS
262+ .fam 
263+ .fi 
264+ .if  n  .RE 
265+ .sp 
164266\fB bash_unit \fP \c 
165267.URL  " http://testanything.org/"   " Test Anything Protocol" "" 
166268so you can ask for a tap formatted
@@ -690,6 +792,46 @@ doc:2:test_obvious_notmatching_with_assert_no_diff()
690792.fam 
691793.fi 
692794.if  n  .RE 
795+ .SH  "\fB SKIP_IF \fP  
796+ .sp 
797+ .if  n  .RS  4 
798+ .nf 
799+ .fam  C 
800+ skip_if <condition> <pattern>
801+ .fam 
802+ .fi 
803+ .if  n  .RE 
804+ .sp 
805+ If \fI condition \fP \fI pattern \fP 
806+ .sp 
807+ This can be useful when one has tests that are dependent on system environment, for instance:
808+ .sp 
809+ .if  n  .RS  4 
810+ .nf 
811+ .fam  C 
812+ skip_if "uname | grep Darwin" linux
813+ skip_if "uname | grep Linux" darwin
814+ 
815+ test_linux_proc_exists() {
816+   assert "ls /proc/" "there should exist /proc on Linux"
817+ }
818+ test_darwin_proc_does_not_exist() {
819+   assert_fail "ls /proc/" "there should not exist /proc on Darwin"
820+ }
821+ .fam 
822+ .fi 
823+ .if  n  .RE 
824+ .sp 
825+ will output, on a Linux system:
826+ .sp 
827+ .if  n  .RS  4 
828+ .nf 
829+ .fam  C 
830+         Running test_darwin_proc_does_not_exist ... SKIPPED
831+         Running test_linux_proc_exists ... SUCCESS
832+ .fam 
833+ .fi 
834+ .if  n  .RE 
693835.SH  "\fB FAKE \fP  
694836.sp 
695837.if  n  .RS  4 
@@ -1094,4 +1236,4 @@ test_get_data_from_fake() {
10941236doc:13:test_get_data_from_fake()
10951237.fam 
10961238.fi 
1097- .if  n  .RE 
1239+ .if  n  .RE 
0 commit comments